历史上的今天
今天是:2025年03月08日(星期六)
2019年03月08日 | STM32之ADC原理
2019-03-08 来源:eefocus
ADC的位数决定了ADC的精度,有8位的,12位的,16位的等。
还有一个很重要的参数就是转换时间。
STM32f103RBT6有2个ADC控制器。128KFlash,20KRAM
每一个ADC控制器都有多个通道,例如ADC1的外部通道有16个,可以理解为有一个开关分别连接各个通道。
每个通道的采样间隔和采样时间都可以设置。
三。ADC各通道与IO管脚对应表


一般负参考电压接地,正参考电压接3.3V。
模拟输入电压不能超过3.3V,否则输入引脚可能被烧毁。
ADC框图

Vref+连接到VDDA,Vref-连接到VSSA。
最多4个通道连接到注入通道,最多16个通道连接到规则通道。
什么是规则通道:相当于正常运行的程序,最多16个通道,规则通道和它的转换顺序在ADC_SQRx中选择,规则组转换的总数应写入ADC_SQR1寄存器的L[3:0]中。
规则通道转换的结果保存在规则通道中。
什么是注入通道:相当于中断,最多4个注入通道。注入组和它的转换顺序在ADC_JSQR寄存器中选择,注入组里转换的总数应写入ADC_JSQR寄存器的L[1:0]中。
注入通道转换的结果保存在注入通道的数据寄存器中。
规则通道VS注入通道



四。单次转换VS连续转换


单次转换完成后不会自动转到另外一个通道的转换,需要手动设置才能启动,连续转换是ADC转换结束后马上就自动启动另一次转换。
扫描模式

只在最后一个通道转换完毕后才会产生EOC或JEOC中断。一般通过DMA读取数据。
五。ADC中断

六。ADC的时钟配置

例如:系统时钟是72M,就要选择6分频或8分频,6分频为12M。
七。ADC_CR1寄存器


这里我们一般选择独立模式。
八。ADC_CR2寄存器

九。对齐方式
因为STM32为12为AD,寄存器为16位,所以需要选择对齐方式。


本次实验中选择的软件转换,也就是19:17位设置为111.
十。ADC_SMPR1寄存器

十一。ADC_SMPR2寄存器

ADC的时钟已经有RCC_CFGR寄存器设置。
ADC_SMPR1和ADC_SMPR2寄存器用来设置通道0到通道17的采样时间。ADC每个通道都可以独立设置采样时间。

注:应该是最小转换时间为1us
最小的转换时间是1us。
十二。ADC_SQR1,SQR2,SQR3规则序列寄存器

设置规则通道序列的长度,第一个转换对应哪一个通道,第二个转换对应哪个通道等等。
十三。ADC_JSQR注入系列寄存器

十四。ADC_DR 规则通道数据寄存器

我们这里主要用到低16位。

十五。ADC_SR 状态寄存器

十六。ADC常用的库函数


例:



上一篇:STM32之ADC单通道单次例程
下一篇:STM32之窗口看门狗例程
史海拾趣
|
高速串行信号带来的测试挑战消费者对通信和计算机产品的要求越来越高,不断提升的速度、不断增长的容量,但却不能成正比变化的价格,成为用户决定是否掏钱购买新款产品的基本要求。这些来自终端客户的需求通过产业链逐级传递到产品研发工程师对测试 ...… 查看全部问答> |
|
别人配置的vxworks(PC104) 小弟的组播程序试了很久都不通(我门外汉),后来用ifShow 查 显示如下: fei (unit number 0): Flags: (0x8063) UP BROADCAST RUNNING ARP MULTICAST Type: ETHERNET_CSMACD   ...… 查看全部问答> |
|
//使用外部晶振24MHz,1分频跑不起来,2分频才可以正常工作,不知道哪设置问题 void Clk_Config(void) { ErrorStatus val; CLK_DeInit(); //CLK_HSECmd(ENABLE); //CLK_SYSCLKC ...… 查看全部问答> |
|
单任务:闪烁的LED;LED/IO:PF3;直接上程序:主要是参考基于LM3S9B92的uCOSII V2.86移植,希望对初学者有帮助吧!… 查看全部问答> |
|
1、有人知道IC AP5900A适用于单节3.7V锂电池的充放电电路吗?规格书描述不是太清楚,最好能上参考设计电路; 2、有类似功能的IC可以满足单节3.7V锂电池充电管理和升压到5V功能输出? … 查看全部问答> |




