查看: 323|回复: 0
打印 上一主题 下一主题

Nucleo-F411RE连接DS3231模块

[复制链接] qrcode

30

主题

31

帖子

94

积分

注册会员

Rank: 2

积分
94
楼主
跳转到指定楼层
发表于 2016-5-4 09:00 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

首先要感谢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)[0]
    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()函数搜索总线上已有的芯片,返回参数是这些芯片的地址。

 

  • I2C芯片的地址是不包含读写位的
  • I2C1暂时无法使用,原因未知。

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表