毕业设计--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 都错位了。