第26节 STM32之AD转换
复习 关于时钟 ADC模块采用APB2总线 思考:如何设定ADC 时钟?
复习 关于DMA 思考:若ADC采用DMA控制,则ADC和RAM各自的地址增长模式应该怎样? 1、STM32最多有2个DMA控制器,DMA1有7个通道。DMA2有5个通道。 2、完成DMA通讯仍需解决一下几个问题: (1)、向哪里传输?地址问题 (2)、DMA-外设,或外设-DMA。方向问题? (3)、何时开始? (4)、怎样结束? 思考:若ADC采用DMA控制,则ADC和RAM各自的地址增长模式应该怎样?
STM32 AD特性 STM32单片机有2个独立的ADC控制器,有18个通道,可测量16个外部信号和2个内部信号源:内部温度传感器和内部参考电压(Bandgap voltage) 。 ADC 电源要求: 2.4V to 3.6 V 。 ADC 输入范围: VREF- ≤ VIN ≤ VREF+ (VREF+ and VREF- available only in LQFP100 package) 精度:12位。结果可按左对齐或右对齐的方式存放在16位寄存器中。 A/D转换的过程:采样、保持、量化、编程。采样时间越长,转换结果越稳定。采样时间可设置为:1.5个/7.5个/13.5个/28.5个ADC时钟周期。 ADC转换时间 采样时间+转换时间 转换时间:12.5个时钟周期。
STM32的A/D转换器 00 2分频(默认) 01 4分频 10 6分频 11 8分频 转换速率: ADC1和ADC2连在APB2总线上(其最高速率72MHz)。CLK控制器为ADC时钟提供一个专用的可编程预分频器,预分频值为: STM32的ADC允许的最高时钟频率为14MHz,若超过会降低精度,因此需要对CLK进行分频。 最快转换时间: 最高转换速率: 00 2分频(默认) 01 4分频 10 6分频 11 8分频
组 规则组 注入组 按一定事先规定好的通道顺序进行AD转换。即:通道固定性,转换规律性。 打断原有转换顺序,插入某一通道的转换,即为注入。中断?
STM32的A/D转换器 转换模式: 单次/连续/扫描/间断/双重。 扫描模式如果没有启动,则启动一次AD转换只会转换第一个通道;扫描模式如果启动,则启动一次AD转换会对所有通道进行转换。 双重模式针对ADC1和ADC2两个ADC模块皆进行AD转换时的工作模式
ADC 转换模式 四种常用转换模式 Single channel continuous conversion mode Start Start CHx CHx Start Start Stop Single channel continuous conversion mode CHx Single channel single conversion mode CHx . . CHn CHn Stop Multi-channels (Scan) continuous conversion mode Multi-channels (Scan) single conversion mode
AD转换模式 单次转换:一个通道,一次转换。 连续转换:一个通道,不停地转换。 单次的组转换:对于一个通道组(注入组或规则组),逐个转换。 连续的组转换:一个组转换完成后,又从头开始。
ADC Data 对齐 右对齐 左对齐 Injected group Regular group Injected group SEXT D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 右对齐 左对齐 Injected group Regular group Injected group Regular group
DMA DMA 只用于ADC1 在规则组中,每个ADC通道转换结束皆产生DMA请求。(不支持注入组) Example: DMA Request DMA Request DMA Request DMA Request DMA Request DMA Request DMA Request DMA Request DMA Request Channel0 Channel1 Channel2 Channel3 Channel4 Channel5 Channel6 Channel7 Channel8 ConvertedValue_Tab[9] Example: - 如通道0, 1, 2, 3, 4, 5, 6, 7 and 8 - 转换数据存放于ConvertedValue_Tab[9] - 使能DMA通道 Channel0 conversion result Channel1 conversion result Channel2 conversion result Channel3 conversion result . ADC1 DR register Channel4 conversion result Channel5 conversion result Channel6 conversion result Channel7 conversion result Channel8 conversion result Note: EOC flag 需要手动清除吗?为什么?
STM32的A/D转换器 ADC端口: PA0~PA7:ADC_IN0~ADC_IN7 PB0~PB1:ADC_IN8~ADC_IN9 PC0~PC5:ADC_IN10~ADC_IN15 输入信号量程:VREF-~VREF+(0~3.3V)
ADC 框图 TIM1_CC1 TIM1_CC2 TIM1_CC3 TIM2_CC2 TIM3_TRGO TIM4_CC4 ANALOG MUX GPIO Ports Temp Sensor VREFINT ADC Up to 4 Up to 16 Injected Channels Regular Channels JEXTRIG bit Start Trigger (injected group) VREF+ VREF- VDDA VSSA ADC_IN0 ADC_IN1 ADC_IN15 . Ext_IT_15 Ext_IT_11 EXTRIG bit Start Trigger (regular group) JEXTSEL[2:0] bits EXTSEL[2:0] bits Injected data registers (4x12bits) Address/data bus Regular data register (12bits) DMA Request ADCCLK ADC Prescalers: Div2, Div4, Div6 and Div8 PCLK2 Analog Watchdog High Threshold register Low Threshold register AWD EOC JEOC AWDIE EOCIE JEOCIE Flags Interrupt enable bits Analog watchdog event End of injected conversion End of conversion ADC interrupt to NVIC
ADC 配置流程 1、ADC时钟配置 2、ADCGPIO配置—模拟输入模式 3、配置ADC的DMA通道 4、配置ADC模式 5、使能ADC,使能ADC的DMA请求 6、开启ADC转换
ADC 寄存器 见stm32参考手册