@Roberthh: I modified the test protocol above while you were posting your answer.
If you look at real delay difference with long delays, every i2c.scan() obviously takes 0.05–0.16s. In iterations with short delays I might step into previous i2c.scan() communication?
However, I created a new clean breadboard and received the results below (same Pico, same RF532 board):
Code: Select all
>>> from machine import Pin, I2C
import time
sda=Pin(4)
scl=Pin(5)
iterations=12
for freq in [6_250,12_500,25_000,50_000,100_000,200_000,400_000]:
i2c = I2C(0, sda=sda, scl=scl, freq=freq)
for delay in [0.05, 0.1, 0.2, 0.4, 0.8, 1.6, 3.2]:
results=[]
start = time.time()
for x in range(iterations):
results.append(i2c.scan())
time.sleep(delay)
realdelay = (time.time() - start) / iterations
print('delay='+'{:>4,.2f}'.format(delay),'(real:'+'{:>6,.4f}'.format(realdelay)+'s)','freq='+'{:>6,}'.format(freq).replace(',','_')+':',results)
print()
delay=0.05 (real:0.3333s) freq= 6_250: [[36], [36], [36], [36], [], [], [], [], [], [], [], []]
delay=0.10 (real:0.3333s) freq= 6_250: [[], [36], [36], [36], [36], [], [36], [], [36], [], [36], []]
delay=0.20 (real:0.4167s) freq= 6_250: [[36], [36], [], [36], [36], [], [36], [36], [], [36], [36], [36]]
delay=0.40 (real:0.6667s) freq= 6_250: [[], [36], [36], [], [36], [36], [], [36], [36], [], [36], [36]]
delay=0.80 (real:1.0833s) freq= 6_250: [[36], [36], [], [36], [], [36], [36], [], [36], [], [36], [36]]
delay=1.60 (real:1.8333s) freq= 6_250: [[36], [36], [36], [36], [36], [36], [36], [36], [36], [36], [36], [36]]
delay=3.20 (real:3.4167s) freq= 6_250: [[36], [36], [36], [36], [], [], [36], [36], [36], [36], [36], []]
delay=0.05 (real:0.1667s) freq=12_500: [[36], [], [36], [36], [], [36], [36], [], [36], [], [36], []]
delay=0.10 (real:0.2500s) freq=12_500: [[36], [36], [36], [36], [36], [36], [36], [36], [36], [36], [36], [36]]
delay=0.20 (real:0.3333s) freq=12_500: [[36], [], [36], [], [36], [36], [], [36], [], [], [36], [36]]
delay=0.40 (real:0.5000s) freq=12_500: [[], [], [], [], [], [], [], [], [], [], [], []]
delay=0.80 (real:0.9167s) freq=12_500: [[], [], [36], [36], [36], [36], [], [], [36], [36], [36], [36]]
delay=1.60 (real:1.7500s) freq=12_500: [[36], [36], [], [36], [36], [36], [36], [], [36], [36], [], [36]]
delay=3.20 (real:3.3333s) freq=12_500: [[36], [36], [], [], [], [36], [36], [36], [36], [], [], []]
delay=0.05 (real:0.0833s) freq=25_000: [[], [36], [36], [], [36], [36], [], [], [36], [36], [], []]
delay=0.10 (real:0.1667s) freq=25_000: [[36], [], [36], [36], [], [36], [36], [], [36], [], [], [36]]
delay=0.20 (real:0.2500s) freq=25_000: [[], [36], [], [36], [36], [], [36], [36], [], [36], [36], []]
delay=0.40 (real:0.5000s) freq=25_000: [[36], [], [], [36], [36], [], [], [36], [36], [], [], [36]]
delay=0.80 (real:0.8333s) freq=25_000: [[36], [], [36], [36], [36], [36], [36], [36], [], [36], [36], [36]]
delay=1.60 (real:1.6667s) freq=25_000: [[], [], [], [36], [36], [36], [36], [36], [36], [], [36], [36]]
delay=3.20 (real:3.2500s) freq=25_000: [[], [36], [36], [36], [], [36], [36], [36], [], [], [36], [36]]
delay=0.05 (real:0.0833s) freq=50_000: [[36], [36], [], [36], [36], [], [], [36], [36], [], [36], [36]]
delay=0.10 (real:0.1667s) freq=50_000: [[], [36], [36], [36], [36], [36], [36], [36], [36], [36], [36], [36]]
delay=0.20 (real:0.2500s) freq=50_000: [[36], [36], [], [36], [36], [36], [], [36], [36], [], [], [36]]
delay=0.40 (real:0.4167s) freq=50_000: [[36], [36], [36], [], [], [36], [36], [36], [36], [36], [], []]
delay=0.80 (real:0.8333s) freq=50_000: [[36], [], [], [], [], [], [], [], [36], [36], [36], [36]]
delay=1.60 (real:1.6667s) freq=50_000: [[36], [], [36], [], [36], [], [36], [36], [36], [36], [], [36]]
delay=3.20 (real:3.1667s) freq=50_000: [[36], [], [36], [], [36], [36], [], [36], [36], [], [36], []]
delay=0.05 (real:0.0833s) freq=100_000: [[], [], [], [], [], [], [], [], [], [], [], []]
delay=0.10 (real:0.1667s) freq=100_000: [[], [36], [36], [36], [], [36], [36], [36], [], [36], [36], [36]]
delay=0.20 (real:0.1667s) freq=100_000: [[], [], [], [], [], [], [], [], [], [], [], []]
delay=0.40 (real:0.4167s) freq=100_000: [[], [36], [36], [], [36], [36], [], [36], [36], [], [36], [36]]
delay=0.80 (real:0.8333s) freq=100_000: [[], [36], [36], [36], [36], [36], [36], [36], [36], [], [], [36]]
delay=1.60 (real:1.6667s) freq=100_000: [[36], [], [], [36], [36], [], [36], [36], [], [36], [36], []]
delay=3.20 (real:3.1667s) freq=100_000: [[], [], [], [36], [36], [36], [], [], [], [], [36], [36]]
delay=0.05 (real:0.0833s) freq=200_000: [[], [36], [36], [36], [], [36], [36], [36], [36], [], [36], [36]]
delay=0.10 (real:0.0833s) freq=200_000: [[36], [36], [36], [36], [36], [36], [], [36], [], [36], [36], [36]]
delay=0.20 (real:0.2500s) freq=200_000: [[36], [36], [], [36], [36], [36], [], [36], [36], [36], [], [36]]
delay=0.40 (real:0.4167s) freq=200_000: [[36], [36], [], [36], [36], [], [36], [36], [], [36], [36], []]
delay=0.80 (real:0.8333s) freq=200_000: [[], [36], [], [36], [], [36], [], [36], [], [36], [], [36]]
delay=1.60 (real:1.5833s) freq=200_000: [[], [], [], [], [], [], [], [], [], [], [], []]
delay=3.20 (real:3.1667s) freq=200_000: [[36], [36], [36], [36], [36], [36], [36], [], [36], [36], [36], [36]]
delay=0.05 (real:0.0833s) freq=400_000: [[36], [36], [36], [36], [], [36], [36], [], [36], [36], [], [36]]
delay=0.10 (real:0.0833s) freq=400_000: [[36], [36], [36], [36], [36], [36], [36], [], [], [], [], []]
delay=0.20 (real:0.2500s) freq=400_000: [[36], [], [36], [36], [], [], [36], [36], [], [], [36], [36]]
delay=0.40 (real:0.4167s) freq=400_000: [[36], [36], [36], [36], [36], [36], [36], [36], [36], [36], [36], [36]]
delay=0.80 (real:0.7500s) freq=400_000: [[36], [36], [36], [], [], [], [], [], [], [], [], []]
delay=1.60 (real:1.6667s) freq=400_000: [[], [36], [], [36], [], [36], [], [36], [], [36], [], [36]]
delay=3.20 (real:3.1667s) freq=400_000: [[], [36], [36], [36], [36], [], [36], [], [36], [36], [36], [36]]