pcf8591同时读取两个通道的adc是可能会出现两个值跟通道刚好相反,有人会直接把1和3通道顺序互换来解决,这里提供一个更科学的方法。

具体原因应该是通道命令给到pcf8591和它完成转换并把值保存进adc的寄存器之间有时间间隔,所以把变换通道的命令传给pcf8591时,它此时的adc寄存器里的值还是上次也就是上个通道的值。

图中代码就是解决办法,原先是两个通道各读取一次,改成两个通道各读取两次,然后取每个通道第二次的值,就不会出现这个问题。原理是第一次读的时候,是让芯片进行通道转换,并给足转换时间,第二次读就正常了。

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐