I2C micropython

该文介绍了如何使用Python的`SoftI2C`从机器模块进行I2C总线扫描,以确定AT24C32芯片的从地址。通过设置SCL和SDA引脚并以100kHz的频率初始化I2C,然后不断发送地址,根据ACK(应答)或NAK(否定应答)来判断地址是否正确。
摘要由CSDN通过智能技术生成

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值