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

本文分享了作者在测试DS3231传感器时遇到的IIC通信问题,具体表现为数据读取时bit错位,导致秒数据两秒一跳。通过深入分析,发现问题是由于缺少ACK位引起,最终通过加入ACK解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

 

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

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

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

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

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

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

解决了问题

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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值