首先要感谢fighter版主提供的Nucleo-F411RE开发板,使我可以在Nucleo-F411RE上继续测试,我原来的那块坏了。
下面介绍在Nucleo-F411RE开发板上,使用Micropython控制DS3231时钟模块的方法。假设Micropython固件已经写入开发板,具体方法参考以前的帖子【在STM32F746G-Disco开发板上玩MicroPython】。
先将DS3231时钟模块(RTC)连接到F411开发板的I2C2接口上(I2C1无法使用,暂时没有找出原因)。DS3231有6根线,我们暂时只需要连接4个。具体连线是:
SCL -- B10
SDA -- B3
GND -- GND
VCC -- 3V3
我们先定义一个I2C对象
from pyb import I2C i2c = I2C(2, I2C.MASTER, baudrate=100000) |
再定义一个简单的函数,读取地址是0的寄存器,也就是秒,然后将它转换为十进制形式(原来是BCD码),并打印出来。
def test(): i2c.send(0, 104) b = i2c.recv(1, 104) print(int(b/16),b%16) while True: test() pyb.delay(500) 21 22 23 24 25 26 27 28 29 30 |
上面代码中,i2c.send是发送数据到I2C总线,它有两个参数,第一个是数据,第二个是I2C芯片的地址;i2c.recv函数类似。还可以用i2c.scan()函数搜索总线上已有的芯片,返回参数是这些芯片的地址。
注: