历史上的今天
今天是:2024年09月24日(星期二)
2021年09月24日 | STM8S专题之ADC数据转换
2021-09-24 来源:eefocus
简介
数字信号是一种离散的信号,模拟信号是一种连续的信号,如果数字电路需要处理模拟信号,则需要一种信号转换系统,相反,模拟电路要处理数字信号也需要进行信号转换。
A/D与D/A 转换器就是两种信号进行处理的桥梁。
常见的A/D转换器有并联比较型、逐次逼近型、V-F型、双积分型等。
常见的D/A转换器有权电阻网络型、倒T型电阻网络型、权电容网络型、权电流型、开关树结构型等。
原理
系统框架
STM8S单片机型号不同,ADC的资源也不同。以ADC2为例,ADC2为10位逐次逼近型A/D转换器,可以提供16个输入通道。

上图是A/D转换的结构图,左边是信号输入,中间是信号转换,右边是信号输出。核心部分是中间信号转换,下面有3条配置线。
ADON(ADC_CR1)为上电唤醒/启动转换,首次置1唤醒ADC,二次置1启动转换,置0关闭ADC。
CONT(ADC_CR1)为单次/连续转换,置0单次转换,置1连续转换。
CH[3:0](ADC_CSR)为模拟信号输入通道选择,配置值对应AIN0~AIN15。
启动ADC转换的触发信号有三种,软件触发(ADON),TIM1定时器触发信号(TRGO),外部引脚触发(ADC_ETR)。
AD转换相关引脚说明如下:

转换模式
ADC1高级AD转换器支持5种转换模式:单次模式、连续模式、带缓存连续模式、单次扫描模式、连续扫描模式。
ADC2普通AD转换器支持单次和连续模式。
单次模式
适合对不同通道逐一转换。
首先选定输入通道,配置CONT位为0,ADON位为1启动转换,转换完成后,转换结束标志位EOC(ADC_CSR)被置1,数据存储在ADC数据寄存器中。如果使能了转换结束中断EOCIE(ADC_CSR)产生一个中断请求。
ADC单次转换时序如下图:

连续转换
适合对选定通道连续转换。
ADC连续转换时序如下图:

首先选定通道,配置CONT置1开启连续转换模式,上电后,ADON首次置1唤醒转换单元,延时一段时间稳定时序,二次置1启动转换,转换完成EOC被置1,数据缓存在ADC_DR中(需要及时读取,可查询EOC或中断读取),如果使能中断的话会产生转换结束中断。然后自动启动下一次转换。EOC状态位需要软件清除。
转换速度
ADC转换速度取决于ADC时钟频率,ADC时钟频率取决于系统时钟频率和ADC分频系数。分频系数可通过SPSRL[2:0](ADC_CR1)位设置。
ADC转换一次需要14个时钟周期,3个采样,11个转换。
转换精度
以ADC2为例,分辨率为10位,模拟通道输入信号电压为5V,则最小电压等级为5/2的10次,分辨精度可以达到4.88mv。模拟信号高于IC参考电压时需要设计硬件分压电路。
寄存器

控制状态寄存器ADC_CSR
用于模拟输入通道选择,转换结束中断使能,转换结束标志位设定。


控制寄存器1ADC_CR1
用于分频系数配置,转换模式配置,上电唤醒/开启转换配置。
‘

控制寄存器2ADC_CR2
外部触发方式配置,触发使能配置,数据对齐方式配置


ADC转换后的数据是10位,需要两个寄存器存储。
左对齐:高8位写入ADC_DRH,其余位写入ADC_DRL。
右对齐:低8位写入ADC_DRL,其余位写入ADC_DRH。
流程
下一篇:STM8S专题之GPIO输入输出
史海拾趣
|
nrf24l01模块进行通信实验的时候,自动应答不成功。。。 我用NRF24L01模块通信,配置的PIPE0自动应答。为什么实验的时候只有非常小的概率收到自动应答信号(几乎为零),接收端可以完整收到数据包。而且发送接收两个模块想离很近,频带式2.48G。。。哪位大虾可以指点一下。。是不是模块本身的问题。??… 查看全部问答> |
|
我做的是球赛计时计分器,要求如下: 本系统通过单片机AT89C51芯片来控制LED七段数码管和矩阵作时间、分数、队名称显示的球赛计时计分系统。本系统具有赛程定时设置、赛程时间暂停、球赛种类的切换、及时刷新甲、乙队双方的成绩以及赛后成绩暂存等 ...… 查看全部问答> |
|
可喜的是没有出现技术事故的报道。按正常计划,下一批过百数量的同类出租车也将在近期推出市场,但除了听到国家和深圳市政府对电动汽车和混合动力汽车的补贴(5万+3万)的消息外,并没能听到深圳哪家的士出租车公司宣布会增加电动出租车的投放量。 ...… 查看全部问答> |
|
我退出一个程序 ,退出之前,open的设备没有正常close,退出以后这个设备会正常关闭吗? 如果我想我的程序只要open一次,就会永远起效,直到arm关机,应该怎么做?? ioctl()控制对应的驱动吗??… 查看全部问答> |
|
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\LayoutManager.lib \这个是什么意思 ? $(_COMMONOAKROOT)\\lib\\$(_CPUINDPATH)\\LayoutManager.lib \\这个路径在sources文件中用到了 对应的实际路径是C:\\WINCE600\\PUBLIC\\COMMON\\OAK\\LIB\\ARMV4I\\RETAIL。也就是说 $(_COMMONOAKROOT)对应C:\\WINCE600\\PUBLIC\\COMMON\\OAK\\ ...… 查看全部问答> |
|
本人现需几个winCE的示例程序,要求EVC4.0开发,内容涉及绘图、文字显示、串口通讯以及打印几个方面,运行环境WinCE,CPU ARM4/ARM41。 若有掌握相关技术的朋友感兴趣,请加QQ:575336,工作日白天9:00-17:00在线。 开发周期及费用详谈。… 查看全部问答> |
|
我是该版块的新人,有几个基础的问题想请各位前辈指点指点,顶者有分 我的基本情况 1> 对 Visual studio 2003/2005 中vb.net c#.net 相对熟悉 (因为开发过.Net 的项目所以数据也还算熟悉) 2> 熟悉 JSDK2.0 DOS下的java 开发, 也用JBuilder 8.0以下版本开发一些东西,因此对JAVA 算是有一定的基础 ...… 查看全部问答> |




