打印
[文档下载]

FAQ0123—使用DMA方式实现ADC 8位精度采样

[复制链接]
2001|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ArterySW|  楼主 | 2021-11-25 11:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, DM, dc
使用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)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

179

主题

276

帖子

11

粉丝