在ADC多通道采样时遇到了一个问题,费了半天劲才找到原因。在此将分析过程记录下来。
这是STM8S003单片机5个通道ADC采样程序,在主函数中依次读取各个通道的ADC采样值。首先单独测试一下每个通道的值。
每个通道单独测试采样值 ch2 = 623, ch3 = 0,ch4 = 2,ch5 = 1023, ch6 = 408。
下面开始多通道采样,ch2和ch3同时采样。
采样结果正常。
ch2、ch3、ch4同时采样。
采样结果正常。
ch2、ch3、ch4、ch5同时采样。
采样结果不正常,和上面的采样结果比较,好像采样值被整体下移了一位。
在试试所有通道同时采样
采样的值还是不正常,感觉采样值互相错位了。
3个通道同时采样时采样结果都是正常的,但是4个通道和5个通道同时采样时,采样结果就不正常。采样结果整体被移动了一个通道。
就是这个采样结果偏差的问题,折腾了好久,后来查阅ADC采样原理资料后,感觉是ADC内部电路的原因。
先看一个ADC专用采样芯片内部电路。
当发送通道地址后,ADC会紧跟着输出一个转换结果,但是这个转换结果不是当前设置通道的值,而是上一个通道的值。当前通道的值在下一次设置通道地址的时候才会输出,也就是说通道设置和采样结果输出,要延迟一拍。那程序中刚才出现的采样结果好像错位了一个通道,是不是也是这个原因引起的?
将程序修改为,每个通道采样两次,取第二次的值。将切换通道后的第一次采样值丢掉。
程序修改后采样的值,好像正确了,每个通道的值都可以对应上。也就是说ADC通道切换后,第一次采样值是上一个通道的值,如果需要采样当前通道值,就需要继续采样一次。
也就是说STM8S003单片机,在多通道采样时,采样通道小于等于3个以内时,通道切换中采样值不会延迟。当同时采样通道大于3个时,通道切换中采样值会有延迟,需要将第一次采样到的值扔掉,第二次采样的值才可以使用。
上一篇:STM系列单片机中文参考手册下载方法
下一篇:STM8学习笔记---PWM互补波形输出
推荐阅读最新更新时间:2024-11-12 22:23
推荐帖子
- 4个压电陶瓷传感器,敲击一个会影响其他传感器,如何判断敲击的是哪个传感器?
- 4个压电陶瓷传感器分别放置在4个减震器上,减震器放在同一个木板上。敲击一个传感器会导致其他3个传感器也同时响应。但是其他3个传感器的响应值没有敲击的传感器数值大。敲击后的余震会导致其他3个传感器的值比敲击的传感器的值大。请问有什么办法能够明确区分敲击了哪个传感器。一个传感器的敲击可能1秒能有10次。也有可能多个传感器同时敲击。loop函数中每次对4个传感器采样。用什么样的方式和算法能够准确的区分敲击和被动响应?4个压电陶瓷传感器,敲击一个会影响其他传感器,如何判断敲击的是哪个传感
- lihang99 传感器
- 了解TI DSP相关知识,可以从这里开始!
- 管管为大家伙儿精心整理了一波TIDSP资料,有需要的朋友们,赶紧收起来吧!越控越有趣-TIC2000LaunchPad炼成记IC2000CLA常见问题解答(FAQ)集锦在CCS上调试C2000CLA常见问题解答(FAQ)集锦DSPC2000程序员高手进阶采用C2000TMS320F28027的LaunchPad启动开发工作CC3100Boost原理图,物料单等2012TIC2000,MSP430&M3大奖赛论文,源代码及PC
- okhxyyo 微控制器 MCU
- 单线程也能开发异步任务?ACE JS框架到底是如何做到的
- HarmonyOS2提供了两种应用开发语言:Java和JS。Java线程特性能够让多任务并行,充分利用硬件资源开发出高性能的应用。而JS却是一个单线程语言,无法像Java一样创建新的Thread,用JS语言开发是否会导致硬件资源无法充分利用的情况呢?本文给大家介绍ACEJS的单线程异步机制就是解决这个问题的。然而,说到单线程与异步,大家可能会比较疑惑,因为单线程和异步在概念上是冲突的,单线程无法做到多任务并发,也就不会存在异步这种通信机制。确实,JS语言本身是无法
- world开发 创意市集
- 请教变量问题
- OEMAddressTable;;;-------------------------------------------------------------;;;VirtAddrPhysAddrMB;;;-------------------------------------------------------------DCD0x80000000,0x02000000,30;30MBSRAM(SRAM/ROM)BANK0DCD
- jlxllhk 产业风云
- 原装货、散新货、翻新货、拆机件、剪板ic……到底是指什么?
- 为应对芯片缺货、涨价,除了想尽办法去找国产替代,也有通过不同渠道去寻一些散新货、翻新货甚至拆机件、剪板ic等等这些看似陌生的名字到底指的是什么样的货呢?网友阿茂通过学习研究给出了一些解释:一、原装货:原厂生产出来的合格产品,分进口原装跟国产原装。二、散新货:散新这个词,重要用在IC芯片的晶圆里,意义主要有:1、这个货不是原厂生产出来的,可能是其余下设分厂家出产的,然而挨着本厂牌子,供给商称之为全新;2、原厂生产的,电性能参数有一些不及格的料,但是上
- eric_wang DIY/开源硬件专区
- 基于EOSTM的电信线路维护管理系统案例
- 基于EOSTM的电信线路维护管理系统案例随着电信公司产品的丰富和客户的增加,电信网络和线路也越来越庞大和复杂,从而导致电信公司的线路维护工作日益繁重。目前,绝大多数电信公司的线路维护管理工作仍然处于人工方式阶段,缺乏有效的信息系统作为支撑和工具基于EOSTM的电信线路维护管理系统案例
- mdreamj 嵌入式系统
设计资源 培训 开发板 精华推荐
- NUCLEO-L011K4,STM32 Nucleo-32开发板,带STM32L011K4T6 MCU,支持Arduino连接
- 00000000000000000000002
- NCP1030GEVB,NCP1030 评估板,2W PoE DC-DC 转换器,反激式转换器
- LM431SC 恒流吸收稳压器的典型应用
- LT1170CT、5A 高效恒流充电器的典型应用
- LT1248CN 300W、382V 功率因数控制器的典型应用电路
- LT6656BCDC-5、5V 升压输出电流电压基准的典型应用
- 使用 ON Semiconductor 的 LV0101CF 的参考设计
- DC2268A-G,用于 LTM4631EV 双降压模块稳压器的演示板,5.5V = VIN = 16V,Vout1 = 3.3V @ 13A,Vout2 = 1.5V @ 13A
- 【航顺训练营】航顺开发板