毕业设计--2020-1-13 DS3231秒出问题(秒读数全部是偶数的原因)

今天测试了DS3231 这个传感器,这个传感器的其他的特点不在赘述,资料很齐全。 主要是和大家分享一下我遇到的问题。

先说明原因    缺少了一个 ACK位   SCL时钟的第一个时钟给了 ACK 之后  所有回读的bit 都错位了。 在 IIC 的读时序里面 少了一个ACK

测试的时候发现打印的数据里面的 秒数据两秒一跳  串口打印回来的数据是这样的

已知我的串口打印的时间间隔是500ms,我很容易的就猜出是 bit 错位了,然后就开始找bit 错位的原因  查找代码部分 

第一步是验证  确实是bit 发生了错位   我直接将数据右移一位  发现对得上了 , 数据全部是偶数,然后 时间间隔是两秒钟

接下来是找问题  一开始怀疑是  BCD 转 HEX 部分出问题  所以我在最底层的bit 读取部分加了 打印, 打印出每一个 bit

发现在读取的时候就发生了bit的错位,这样基本就可以 确定是IIC的底层部分出了问题

读数据手册发现 了这个ACK 和我的代码里面以前写过的不是很一样, 加上ACK

解决了问题

问题就是因为我缺少了一个 ACK位   SCL时钟的第一个时钟给了 ACK 之后  所有回读的bit 都错位了

发布了35 篇原创文章 · 获赞 30 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41534481/article/details/103955700
今日推荐