AT32 WorkBench常用功能40--AT32F403A ADC普通组位移模式配置
本文主要介绍如何基于AT32 WorkBench配置ADC普通组短位移模式,当使用普通位移模式时,通过使用多ADC采集同一通道,可以提高ADC对这个通道的采样频率,以AT32F403A为例,如果使用2个ADC采集同一通道,可将此通道的采样率从最大2M,提升到2×2 = 4M,所以位移模式适合用在需要对单一通道高速采样的应用场景
转换时序
硬件环境
软件环境
配置步骤
1打开AT32WorkBench新建AT32F403A工程
2配置系统时钟(如果使用默认内部HICK,跳过此步骤2)
2.1 打开外设CRM配置HEXT为时钟振荡器,如下图
2.2 打开时钟配置
3配置普通组转换
3.1 配置ADC2普通组转换ADC CH1(PA1引脚),开启反复模式
3.2 配置ADC1普通组转换ADC CH1(PA1引脚),开启反复模式、开启短位移模式
4 配置ADC1 DMA
5配置串口打印
5.1配置USART1
5.2 USART1引脚配置成PA9
5.3 开启串口打印
6点击“生成代码”生成MDK5代码工程
7配置ADC普通通道转换相关应用代码
main.c的mian函数写法如下, 可以直接替换这部分代码
int main(void)
{
/* add user code begin 1 */
uint32_t buf[1];
/* add user code end 1 */
/* system clock config. */
wk_system_clock_config();
/* config periph clock. */
wk_periph_clock_config();
/* nvic config. */
wk_nvic_config();
/* timebase config. */
wk_timebase_init();
/* init dma1 channel1 */
wk_dma1_channel1_init();
/* config dma channel transfer parameter */
/* user need to modify define values DMAx_CHANNELy_XXX_BASE_ADDR and DMAx_CHANNELy_BUFFER_SIZE in at32xxx_wk_config.h */
wk_dma_channel_config(DMA1_CHANNEL1,
(uint32_t)&ADC1->odt,
(uint32_t)buf,
1);
dma_channel_enable(DMA1_CHANNEL1, TRUE);
/* usart1 already supports printf. */
/* init usart1 function. */
wk_usart1_init();
/* init adc2 function. */
wk_adc2_init();
/* init adc1 function. */
wk_adc1_init();
/* add user code begin 2 */
adc_ordinary_software_trigger_enable(ADC1, TRUE);
while(dma_flag_get(DMA1_FDT1_FLAG) == RESET);
/* add user code end 2 */
while(1)
{
/* add user code begin 3 */
printf("adc data adc1:%d adc2:%d\r\n", buf[0] & 0xFFFF, (buf[0] >> 16) & 0xFFFF);
wk_delay_ms(1000);
/* add user code end 3 */
}
}
8在MDK5上编译,并下载代码到AT32F403A MCU 上
9复位运行AT32F403A MCU,用串口助手观看打印信息,2个ADC会在位移模式下一直转换数据,ADC1数据通过DMA存储到buf[0]低16位、ADC2数据通过DMA存储到buf[0]高16位,每1秒钟通过串口打印一次2个ADC的转换数据
|