使用DMA方式实现ADC 8位精度采样
Questions :
AT32 部分型号不支持 ADC 精度调整,固定以 12 位精度进行采样转换。
当应用期望使用 8 位精度数据时,按照常规用法将无法满足。此时可按照如下方法进行替代。
Answer :
采用特定 ADC 用法配置,通过硬件自动实现数据精度的调整。
以 ADC1 为例,具体实现为:
1) ADC 配置注意点
A. ADC 采用“左对齐”
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Left;
ADC_Init(ADC1, &ADC_InitStructure);
B. DMA 以“byte” 为 单位进行传输
__IO uint8_t ADC_RegularConvertedValueTab[5];
DMA_InitStructure.DMA_PeripheralDataWidth = DMA_PERIPHERALDATAWIDTH_BYTE;
DMA_InitStructure.DMA_MemoryDataWidth = DMA_MEMORYDATAWIDTH_BYTE;
DMA_Init(DMA1_Channel1, &DMA_InitStructure);
C. DMA “源 地址”为 为 ADC 规则 数据 寄存器地址 + 1 ,“ 目的地址”为 为 byte 为单位的数组
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->RDOR + 1;
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)ADC_RegularConvertedValueTab;
DMA_Init(DMA1_Channel1, &DMA_InitStructure);
2)软件处理
不涉及。ADC 配置修改后,ADC_RegularConvertedValueTab 内存储的就是舍弃了低四位后的 8 位精度数据。
注意事项
A. 此方法仅适用于 8 位精度,其他精度不支持;
B. 此方法仅适用于规则组数据;
C. 此方法不适用双 ADC 模式;
D. 此方法虽然最终有按照期望精度取数据,但实际其转换时间还是需以 12 位精度进行计算。
类型: MCU 应用
适用型号 : AT32F403、AT32F413、AT32F415、AT32F403A、AT32F407、AT32F421
主功能 : ADC
次功能 : 无
FAQ0123 使用DMA方式实现ADC 8位精度采样_V1.0.0.pdf
(242.3 KB)
|