I do have a logic analyzer. It’s a cheap one from Amazon, but it seems to do the trick. When I look at the pins when using PE12+PE13 it seems to me that the pins have a hard time being pulled low. When I run a scan with PB8+PB9 I get a single consistent [correct] address, but when I run with the others I get a list of address that are not real. I’m using the MMC5603 magnetometer breakout from Adafruit & it has 10k pullups on both SCL and SDA.
##################################################
import time
from machine import SoftI2C
i2c = SoftI2C(scl = ‘PB8’, sda = ‘PB9’, freq=250000)
#i2c = SoftI2C(scl = ‘PE12’, sda = ‘PE13’, freq=250000)
i = 0
print(’ ‘)
while True:
print(’{:03d}'.format(i), i2c.scan())
time.sleep(0.2)
##################################################
004 [35, 52, 54, 59, 64, 90, 116]
005 [21, 42, 48, 59, 65, 99, 101, 103, 105]
006 [23, 25, 29, 31, 53, 59, 61, 64, 70, 104, 110, 114, 116]
007 [27, 31, 43, 46, 61, 88, 113]
008 [28, 39, 43, 46, 92, 105, 110]
009 [27, 37, 39, 41, 62, 66, 93, 100, 104, 107]
010 [43, 53, 71, 73, 77, 79, 88, 114]
011 [31, 41, 58, 60, 72, 82, 85, 102, 119]
012 [31, 49, 53, 60, 67, 95, 110, 116]
013 [25, 30, 32, 37, 39, 51, 63, 65, 104, 106, 112, 114]
014 [31, 39, 41, 43, 65, 69, 119]
015 [65, 81, 85, 87, 88, 100]
016 [23, 30, 32, 36, 64, 82, 88, 90, 96, 98, 112]
017 [52, 55, 57, 64, 73, 81, 83, 107, 109, 111]
018 [19, 22, 34, 36, 40, 48, 50, 55, 61, 67, 70, 72, 78, 86, 102, 106, 112]
##################################################
P.S. I really appreciate the help. 