一、ADC的原理及定义
Analog-to-Digital Converter的缩写。中文译名:模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。其实就是一个取样、量化、编码的一个过程。
典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。比如电量、光照传感器等常用。
二、模拟信号
模拟信号是指用连续变化的物理量表示的信息,其信号的幅度,或频率,或相位随时间作连续变化,如目前广播的声音信号,或图像信号等。
三、数字信号
数字信号指幅度的取值是离散的,幅值表示被限制在有限个数值之内。 二进制码就是一种数字信号。二进制码受噪声的影响小,易于有数字电路进行处理,所以得到了广泛的应用。
四、单次转化与连续转换对比
五、扫描模式
其他请参考其中文参考手册
六、ADC精度
精度是衡量ADC转换准确性的一个标准,精度常有8bit 10bit 12bit 16bit四种,如下表所示:
也就是把3.3V的电压分成256,1024,4096,65535份,每一份电压是固定的,显而易见就是分的份数越多,精度就度越高了,也就是精度越小,ADC精度就越高
ADC的转换公式如下:
七、STM32F40x系列ADC外部通道和引脚对应关系
八、实现过程
//1、开启PA口时钟和ADC1时钟,设置PA1为模拟输入。
RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
对应的GPIO初始化
GPIO_Init();
//2、复位ADC1,同时设置ADC1分频因子。
ADC_DeInit(ADC1);
//3、初始化ADC_CCR寄存器。
ADC_CommonInit();
//4、初始化ADC1参数,设置ADC1的工作模式以及规则序列的相关信息。
void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
//5、使能ADC。
ADC_Cmd(ADC1, ENABLE);
//6、配置规则通道参数:
ADC_RegularChannelConfig();
//7、开启软件转换:
ADC_SoftwareStartConvCmd(ADC1);
//8、等待转换完成,读取ADC值。
ADC_GetConversionValue(ADC1);
关键字:STM32 ADC USART
引用地址:
11、STM32的ADC的原理与使用(内附代码)
推荐阅读最新更新时间:2024-11-17 08:49
STM32硬件IIC与51模拟IIC通信
IIC介绍 IIC协议规定:SDA上传输的数据必须在SCL为高电平期间保持稳定,SDA上的数据只能在SCL为低电平期间变化。IIC期间在脉冲上升沿把数据放到SDA上,在脉冲下降沿从SAD上读取数据。这样的话,在SCL高电平期间,SDA上的数据是稳定的。在脉冲下降沿之后的保持时间以后,SDA上的数据可以变化,直到脉冲上升沿之前。 STM32与51 IIC通信实验 下面是在使用51模拟IIC作为主机、STM32硬件IIC作为从机时发生的一些问题: STM32地址不匹配: 1、STM32工作为从机接收器模式下时,STM32设置IIC地址为0x0A但是I2C_OAR1寄存器中的地址为0x05,所以51发送地
[单片机]
stm32红外遥控的定时器实现
我用的红外遥控是使用的NEC协议,即使用PWM来调制发送的信息 NEC协议,其特征如下: 1、8位地址和8位指令长度; 2、地址和命令2次传输(确保可靠性) 3、PWM脉冲位置调制,以发射红外载波的占空比代表“0”和“1”; 4、载波频率为38Khz; 5、位时间为1.125ms或2.25ms; NEC码的位定义:一个脉冲对应560us的连续载波,一个逻辑1传输需要2.25ms(560us脉冲+1680us低电平),一个逻辑0的传输需要1.125ms(560us脉冲+560us低电平)。而遥控接收头在收到脉冲的时候为低电平,在没有脉冲的时候为高电平,这样,我们在接收头端收到的信号为:逻辑1应该是560us
[单片机]
stm32红外遥控总结
我用的红外遥控是使用的NEC协议,即使用PWM来调制发送的信息 NEC协议,其特征如下: 1、8位地址和8位指令长度; 2、地址和命令2次传输(确保可靠性) 3、PWM脉冲位置调制,以发射红外载波的占空比代表“0”和“1”; 4、载波频率为38Khz; 5、位时间为1.125ms或2.25ms; NEC码的位定义:一个脉冲对应560us的连续载波,一个逻辑1传输需要2.25ms(560us脉冲+1680us低电平),一个逻辑0的传输需要1.125ms(560us脉冲+560us低电平)。而遥控接收头在收到脉冲的时候为低电平,在没有脉冲的时候为高电平,这样,我们在接收头端收到的信号为:逻辑1应该是560us低+1680
[单片机]
STM32 中断向量,优先级
一,中断优先级: STM32(Cortex-M3)中的优先级概念 STM32(Cortex-M3)中有两个优先级的概念 抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理
[单片机]
Stm32平台UCOSII的简单使用及注意事项
1.与UCOSII有关的几个概念:任务优先级,任务堆栈,任务控制块,任务就绪表和任务调度器 任务优先级,这个概念比较好理解, ucos 中,每个任务都有唯一的一个优先级。优先级是 任务的唯一标识。在 UCOSII 中,使用 CPU 的时候,优先级高(数值小)的任务比优先级低的 任务具有优先使用权,即任务就绪表中总是优先级最高的任务获得 CPU 使用权,只有高优先级 的任务让出 CPU 使用权(比如延时)时,低优先级的任务才能获得 CPU 使用权。 UCOSII 不支 持多个任务优先级相同,也就是每个任务的优先级必须不一样。 任务堆栈,就是存储器中的连续存储空间。为了满足任务切换和响应中断时保存 CPU 寄存 器中
[单片机]
功耗仅为15.5mW的16位1MSPS模数转换器
iframe style="POSITION: absolute; TOP: 0px; LEFT: 0px" id=google_ads_frame2 height=280 marginHeight=0 src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-1728267113733206&output=html&h=280&slotname=6802727683&w=336&lmt=1290926130&flash=10.2.152.26&url=http%3A%2F%2Fwww.epdoc.cn%2Fad%2F20594.html&dt=129852
[模拟电子]
12位ADC输出变化率高达500ksps
凌力尔特推出引脚和软件都兼容的单/双通道 12 位模数转换器 (ADC) LTC2302 和 LTC2306。这两款 ADC 都通过 SPI 兼容串行接口通信,输出变化率达 500ksps。LTC2302 测量单个差分输入通道,适用于测量桥式传感器。LTC2306 含有内部多路复用器和测量两个单端或一个差分输入通道。LTC2302 和 LTC2306 与 12 位、500ksps、8 通道 ADC LTC2308 是软件兼容的,因此在测量 1、2 或 8 个模拟通道的应用之间移植代码容易。 LTC2302/LTC2306 用单 5V 电源工作,在 500ksps 输出变化率时仅消耗 15mW 功率。在 1ksps 时仅消耗
[模拟电子]
STM32高级定时器的使用
写这篇文章的原因是发现net上很少有从STM32的寄存器的角度去解析其原理的文章,也许是太简单的缘故各位大哥都不愿意动笔。那么我来写下,尽量写得简单易懂,以此留个纪念。写得肯定不好或者有的地方不准确,请不要喷哈。 STM32中定时器的强大之处在于,你不但可以清纯的像C51那样只用内部时钟和外部引脚来进行定时或计数,更可以通过其自身所具备的主从模式,捕获/比较通道来进行更复杂的一些operation。比如将其内部的多个定时器进行级联,捕获或产生PWM波,使用刹车死区功能,记录编码器的数值等。其中有的功能C51可以通过其IO引脚进行模拟,有的却是不能的。 言归正传,结合较新的HAL库,现在我们一起就来探讨下STM3
[单片机]