AT32 WorkBench常用功能46--AT32F435 3 ADC普通组同时模式配置
本文主要介绍如何基于AT32 WorkBench配置ADC的普通组同时模式
本次例程采用3ADC普通同时模式,在此模式下,当触发事件来了之后,3个ADC将会同时转换,当每个通道转换完成了之后,DMA将数据搬到内存,需要注意的是在此模式下,ADC通道采样时间、个数需要配成一致
转换时序
硬件环境
软件环境
配置步骤
1打开AT32 WorkBench新建AT32F435工程
2配置系统时钟(如果使用默认内部HICK,跳过此步骤2)
2.1 打开外设CRM配置HEXT为时钟振荡器,如下图
2.2 打开时钟配置
3 配置ADC模式和分频
4配置普通组转换ADC CH1(PA1引脚)、ADC CH2(PA2引脚)、ADC CH3(PA3引脚)
4.1配置ADC1,通道转换顺序为ADC CH1、ADC CH2、ADC CH3
4.2配置ADC2,通道转换顺序为ADC CH2、ADC CH3、ADC CH1
4.3配置ADC3,通道转换顺序为ADC CH3、ADC CH1、ADC CH2
5 配置DMA通道
6配置串口打印
6.1配置USART1
6.2 USART1引脚配置成PA9
6.3 配置串口打印
7点击“生成代码”生成MDK5代码工程
8配置ADC普通通道转换相关应用代码
main.c的mian函数写法如下, 可以直接替换这部分代码
int main(void)
{
/* add user code begin 1 */
uint16_t buf[9];
/* 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)&ADCCOM->codt,
(uint32_t)buf,
9);
dma_channel_enable(DMA1_CHANNEL1, TRUE);
/* usart1 already supports printf. */
/* init usart1 function. */
wk_usart1_init();
/* init adc-common function. */
wk_adc_common_init();
/* init adc1 function. */
wk_adc1_init();
/* init adc2 function. */
wk_adc2_init();
/* init adc3 function. */
wk_adc3_init();
/* add user code begin 2 */
/* add user code end 2 */
while(1)
{
/* add user code begin 3 */
adc_ordinary_software_trigger_enable(ADC1, TRUE);
while(dma_flag_get(DMA1_FDT1_FLAG) == RESET);
dma_flag_clear(DMA1_FDT1_FLAG);
printf("adc data ADC1 ch1:%4d ch2:%4d ch3:%4d\r\n", buf[0], buf[3], buf[6]);
printf(" ADC2 ch1:%4d ch2:%4d ch3:%4d\r\n", buf[1], buf[4], buf[7]);
printf(" ADC3 ch1:%4d ch2:%4d ch3:%4d\r\n", buf[2], buf[5], buf[8]);
wk_delay_ms(1000);
/* add user code end 3 */
}
}
9将ADC引脚接以下电压,
ADC CH1(PA1引脚)接3.3V
ADC CH2(PA2引脚)接1.6V
ADC CH3(PA3引脚)接0V
10在MDK5上编译,并下载代码到AT32F435 MCU 上
11复位运行AT32F435MCU,用串口助手观看打印信息,ADC数据每1秒钟转换一次
|