不知道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,说明地址不对

 

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐