STM32F4微控制器的ADC设置与使用
1. 嵌入式系统中的模数转换
1.1 ADC中断
ADC模块可以在转换结束时或通过其模拟看门狗属性生成中断。这些中断需要通过各自的位分别启用。转换结束中断会针对常规或注入模式分别生成,对应的回调函数也是分开的。
通过模拟看门狗功能,ADC结果可以与设置的高低两个阈值进行比较。在设置好ADC模块后,此操作会自动完成,无需单独运行代码。如果转换结果超出阈值范围,就会生成中断,这类似于一个软件可配置的窗口比较器,其优点是不需要模拟参考电压,比较是基于设置的阈值进行的。
1.2 采样和时钟
为了实现周期性采样,需要使用时钟信号。ADC模块有其专用时钟ADCCLK,其最大时钟速度为36 MHz。
ADC模块的总转换时间是配置的采样周期加上取决于数据分辨率的逐次逼近寄存器(SAR)操作持续时间。采样周期可以是3、15、28、56、84、112、144或480个ADC时钟周期。对于12位数据分辨率,SAR操作持续时间为15个ADC时钟周期;对于10位、8位和6位数据分辨率,该持续时间分别可减少到13、11或9个ADC时钟周期。因此,ADC模块在12位分辨率下每秒可产生240万个样本;通过将ADCCLK设置为36 MHz,在较低的6位分辨率下,每秒可达到400万个样本。
1.3 获取ADC操作结果
ADC操作结束后,转换结果会根据常规或注入操作分别写入ADC_DR或ADC_JDRx寄存器。这些寄存器保存16位数据,由于转换结果可以是6到12位,因此需要通过专用寄存器将其右对齐或左对齐。
常规和注入ADC操作的对齐方式有所不同
超级会员免费看
订阅专栏 解锁全文
4615

被折叠的 条评论
为什么被折叠?



