欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

STM8 ADC多通道采样遇到问题及解决方法

程序员文章站 2022-11-18 22:38:29
在ADC多通道采样时遇到了一个问题,费了半天劲才找到原因。在此将分析过程记录下来。这是STM8S003单片机5个通道ADC采样程序,在主函数中依次读取各个通道的ADC采样值。首先单独测试一下每个通道的值。每个通道单独测试采样值 ch2 = 623, ch3 = 0,ch4 = 2,ch5 = 1023, ch6 = 408。下面开始多通道采样,ch2和ch3同时采样。采样结果正常。ch2、ch3、ch4同时采样。采样结果正常。ch2、......

在ADC多通道采样时遇到了一个问题,费了半天劲才找到原因。在此将分析过程记录下来。

STM8 ADC多通道采样遇到问题及解决方法

这是STM8S003单片机5个通道ADC采样程序,在主函数中依次读取各个通道的ADC采样值。首先单独测试一下每个通道的值。

STM8 ADC多通道采样遇到问题及解决方法

STM8 ADC多通道采样遇到问题及解决方法

STM8 ADC多通道采样遇到问题及解决方法

STM8 ADC多通道采样遇到问题及解决方法

STM8 ADC多通道采样遇到问题及解决方法

每个通道单独测试采样值 ch2 = 623, ch3 = 0,ch4 = 2,ch5 = 1023, ch6 = 408。

下面开始多通道采样,ch2和ch3同时采样。

STM8 ADC多通道采样遇到问题及解决方法

采样结果正常。

ch2、ch3、ch4同时采样。

STM8 ADC多通道采样遇到问题及解决方法

采样结果正常。

ch2、ch3、ch4、ch5同时采样。

STM8 ADC多通道采样遇到问题及解决方法

采样结果不正常,和上面的采样结果比较,好像采样值被整体下移了一位。

在试试所有通道同时采样

STM8 ADC多通道采样遇到问题及解决方法

采样的值还是不正常,感觉采样值互相错位了。

3个通道同时采样时采样结果都是正常的,但是4个通道和5个通道同时采样时,采样结果就不正常。采样结果整体被移动了一个通道。

就是这个采样结果偏差的问题,折腾了好久,后来查阅ADC采样原理资料后,感觉是ADC内部电路的原因。

先看一个ADC专用采样芯片内部电路。

STM8 ADC多通道采样遇到问题及解决方法

当发送通道地址后,ADC会紧跟着输出一个转换结果,但是这个转换结果不是当前设置通道的值,而是上一个通道的值。当前通道的值在下一次设置通道地址的时候才会输出,也就是说通道设置和采样结果输出,要延迟一拍。那程序中刚才出现的采样结果好像错位了一个通道,是不是也是这个原因引起的?

将程序修改为,每个通道采样两次,取第二次的值。将切换通道后的第一次采样值丢掉。

STM8 ADC多通道采样遇到问题及解决方法

程序修改后采样的值,好像正确了,每个通道的值都可以对应上。也就是说ADC通道切换后,第一次采样值是上一个通道的值,如果需要采样当前通道值,就需要继续采样一次。

也就是说STM8S003单片机,在多通道采样时,采样通道小于等于3个以内时,通道切换中采样值不会延迟。当同时采样通道大于3个时,通道切换中采样值会有延迟,需要将第一次采样到的值扔掉,第二次采样的值才可以使用。

关于采样源码详见 STM8学习笔记---ADC多通道采样 这篇文章。

本文地址:https://blog.csdn.net/qq_20222919/article/details/107949250