打印
[STM8]

STM8学习笔记-ADC多通道采样遇到问题及解决方法

[复制链接]
997|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lxs0026|  楼主 | 2021-6-22 22:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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



使用特权

评论回复
沙发
lxs0026|  楼主 | 2021-6-22 22:43 | 只看该作者

使用特权

评论回复
板凳
lxs0026|  楼主 | 2021-6-22 22:44 | 只看该作者

使用特权

评论回复
地板
lxs0026|  楼主 | 2021-6-22 22:44 | 只看该作者

使用特权

评论回复
5
lxs0026|  楼主 | 2021-6-22 22:45 | 只看该作者

使用特权

评论回复
6
lxs0026|  楼主 | 2021-6-22 22:46 | 只看该作者

使用特权

评论回复
7
lxs0026|  楼主 | 2021-6-22 22:47 | 只看该作者
每个通道单独测试采样值 ch2 = 623, ch3 = 0,ch4 = 2,ch5 = 1023, ch6 = 408。

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

使用特权

评论回复
8
lxs0026|  楼主 | 2021-6-22 22:48 | 只看该作者

使用特权

评论回复
9
lxs0026|  楼主 | 2021-6-22 22:48 | 只看该作者
采样结果正常。

使用特权

评论回复
10
lxs0026|  楼主 | 2021-6-22 22:49 | 只看该作者
ch2、ch3、ch4同时采样。

使用特权

评论回复
11
lxs0026|  楼主 | 2021-6-22 22:50 | 只看该作者
采样结果正常。

使用特权

评论回复
12
lxs0026|  楼主 | 2021-6-22 22:51 | 只看该作者
ch2、ch3、ch4、ch5同时采样。

使用特权

评论回复
13
lxs0026|  楼主 | 2021-6-22 22:52 | 只看该作者
采样结果不正常,和上面的采样结果比较,好像采样值被整体下移了一位。

在试试所有通道同时采样

使用特权

评论回复
14
lxs0026|  楼主 | 2021-6-22 22:52 | 只看该作者
采样的值还是不正常,感觉采样值互相错位了。

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

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

使用特权

评论回复
15
lxs0026|  楼主 | 2021-6-22 22:54 | 只看该作者
先看一个ADC专用采样芯片内部电路。

使用特权

评论回复
16
lxs0026|  楼主 | 2021-6-22 22:55 | 只看该作者
当发送通道地址后,ADC会紧跟着输出一个转换结果,但是这个转换结果不是当前设置通道的值,而是上一个通道的值。当前通道的值在下一次设置通道地址的时候才会输出,也就是说通道设置和采样结果输出,要延迟一拍。那程序中刚才出现的采样结果好像错位了一个通道,是不是也是这个原因引起的?

使用特权

评论回复
17
lxs0026|  楼主 | 2021-6-22 22:56 | 只看该作者
将程序修改为,每个通道采样两次,取第二次的值。将切换通道后的第一次采样值丢掉。

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

使用特权

评论回复
18
lxs0026|  楼主 | 2021-6-22 22:58 | 只看该作者
也就是说STM8S003单片机,在多通道采样时,采样通道小于等于3个以内时,通道切换中采样值不会延迟。当同时采样通道大于3个时,通道切换中采样值会有延迟,需要将第一次采样到的值扔掉,第二次采样的值才可以使用。

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

905

帖子

1

粉丝