搜索

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

[复制链接]
646|17
手机看帖
扫描二维码
随时随地手机跟帖
lxs0026|  楼主 | 2021-6-22 22:42 | 显示全部楼层 |阅读模式

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

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIwMjIyOTE5,size_16,color_FFFFFF,t_70.jpg

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



使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:43 | 显示全部楼层
3184460d1f708e50d8.png

使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:44 | 显示全部楼层
5256460d1f71245a33.png

使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:44 | 显示全部楼层
8605160d1f75ba0ae7.png

使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:45 | 显示全部楼层
5759760d1f7634912b.png

使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:46 | 显示全部楼层
9080060d1f7d942c40.png

使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:47 | 显示全部楼层
每个通道单独测试采样值 ch2 = 623, ch3 = 0,ch4 = 2,ch5 = 1023, ch6 = 408。

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

使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:48 | 显示全部楼层
2919760d1f80b0ca8b.png

使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:48 | 显示全部楼层
采样结果正常。

使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:49 | 显示全部楼层
ch2、ch3、ch4同时采样。
5659360d1f864bb9d3.png

使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:50 | 显示全部楼层
采样结果正常。

使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:51 | 显示全部楼层
ch2、ch3、ch4、ch5同时采样。
553460d1f8b664b0a.png

使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:52 | 显示全部楼层
采样结果不正常,和上面的采样结果比较,好像采样值被整体下移了一位。

在试试所有通道同时采样

8967960d1f8f507894.png

使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:52 | 显示全部楼层
采样的值还是不正常,感觉采样值互相错位了。

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

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

使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:54 | 显示全部楼层
先看一个ADC专用采样芯片内部电路。 2796260d1f94e1cac7.png

使用特权

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

使用特权

评论回复
lxs0026|  楼主 | 2021-6-22 22:56 | 显示全部楼层
将程序修改为,每个通道采样两次,取第二次的值。将切换通道后的第一次采样值丢掉。
9973760d1fa06c7368.png
程序修改后采样的值,好像正确了,每个通道的值都可以对应上。也就是说ADC通道切换后,第一次采样值是上一个通道的值,如果需要采样当前通道值,就需要继续采样一次。

使用特权

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

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

使用特权

评论回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

本版热帖

本版活跃用户

优质原创写原创,赢大奖

编辑推荐

  • 1 火星国务卿 得到打赏 ¥383.00
  • 2 呐咯密密 得到打赏 ¥365.00
  • 3 kk的回忆 得到打赏 ¥360.01
  • 4 Gavin3389 得到打赏 ¥301.00
  • 5 jinglixixi 得到打赏 ¥220.00
  • 6 小叶三千 得到打赏 ¥200.00
  • 7 神圣雅诗人 得到打赏 ¥200.00
  • 8 qjp1988113 得到打赏 ¥106.00
  • 9 linghz 得到打赏 ¥100.00
  • 10 xyz549040622 得到打赏 ¥100.00
在线客服 快速回复 返回顶部 返回列表