如何修复 MicroPython I2C 无数据

问题:

你已经配置了 MicroPython 的 I2C,类似这样(在我的情况下是在 ESP8266 上,但这适用于许多 MCU):

micropython_i2c_example.py
i2c = machine.I2C(-1, machine.Pin(5), machine.Pin(4))

但你在总线上找不到任何设备:

micropython_i2c_scan.py
>>> i2c.scan()
[]

解决方案

可能你忘记将引脚配置为上拉。I2C 需要上拉才能工作,许多 MCU(如 ESP8266)提供集成(弱)上拉支持。

micropython_i2c_pullup.py
p4 = machine.Pin(4, mode=machine.Pin.OUT, pull=machine.Pin.PULL_UP)
p5 = machine.Pin(5, mode=machine.Pin.OUT, pull=machine.Pin.PULL_UP)
i2c = machine.I2C(-1, p5, p4)

i2c.scan() # [47]

你也可以通过使用万用表或示波器检查来验证:当 I2C 总线上没有通信时,电压应等于 MCU 的电源电压(通常为 3.3V 或 5V - 0V 表示缺少上拉或其他错误)。


Check out similar posts by category: Electronics, MicroPython, Python