不知道I2C从地址?可以通过快速扫描获取
以AT24C32为例,A0A1A2引脚接低电平 ,地址是0xA0
D22作为 SCL ,D3作为SDA ,频率 100khz
直接上代码
from machine import SoftI2C,Pin
import machine
import utime
from utime import sleep # 延时函数在utime库中
#初始化I2C通道1 ,使用GPIO6和GPIO7 分别作为SDA 和SCL 引脚,频率为100KHZ
led = Pin(2,Pin.OUT)
i2c = SoftI2C(scl = Pin(22) ,sda = Pin(23), freq = 100000)
if __name__ == '__main__':
while True: # 无限循环
print("helloworld") # 打印"helloworld"字串到console中
sleep(1) # 打印完之后休眠1秒
print('Scan i2c bus...')
devices = i2c.scan()
原理是:
不停地发送地址, 如果ack了(发送地址后SDA随后被拉低 ),说明这个就是从地址
连接逻辑分析仪分析:
NAK,说明地址不对