3 分析排查
结合数据手册、网友案例以及DeepSeek讨论。基本确定为7705内部结构以及工作机制造成的问题。期间怀疑过很多情况,最终一一排除,下面直接上干货,其他的就不讲了。
先说明一下,试验采用的组件默认使用4.9152MHz晶体。测试中,数据率设定为50Hz,这个参数作为本次实验默认设置参数,后面不再赘述,一律称作“试验参数条件”。3.1 DRDY信号的怀疑
根据手册等资料理解,在正确的操作流程中,DRDY引脚扮演着重要角色: a) 当新通道的数据转换完成,DRDY引脚会变为低电平,提示MCU可以读取数据了; b) 第一次读取操作完成后,DRDY通常会返回高电平。 c) 紧接着,需要再次查询或等待DRDY再次变低,这标志着新通道的最新有效数据已经准备就绪,此时进行第二次读取,就能拿到正确的结果。 所以,当进行通道切换时,标准的数据读取流程应该是:写通信寄存器切换通道→等待DRDY变低(通道切换后立即检测DRDY,这时大概率就是低电平(原因见后),结果寄存器里面存的是通道切换前的数据,应等待一个完整的DRDY脉冲后,即切换后重新采集的才是新通道的数据)→第一次读取数据(刷新/丢弃旧数据)→等待DRDY再次变低→第二次读取数据(获得新通道的有效值)。3.2 问题查找及分析 基本可以确认,由于7705正常工作期间,是按照固定频率采集的,其DRDY引脚输出的波形也能看出其采集周期(数据率)遵循了已设定的参数。DRDY高电平时间相对比较短(试验参数下,200us以内),而数据率周期比较大(试验中是20ms),这就使得切换通道指令设置的时机,具有极大可能是处在DRDY为0电平期间。这时,如果切换后,立即读取数据,其数据寄存器中的数据一定是上次(通道切换前的)的采集数据,而并非切换后的通道(此时,该通道还没有开始新的采集)的数据。切换需要一定的时间(试验中DRDY切换时,信号是保持约60ms的高电平),DRDY会拉高,开始新通道的采集,当DRDY再次变低后,读取的才是通道切换后的正确数据。下面的波形图中蓝色波形为DRDY信号,黄色的为CS信号。 因此,可以采用两种方法规避: a) 连续读取两次(包含两次完整的通道切换操作,安富莱的例程就是这样处理的); |