[AT32 WorkBench] AT32 WorkBench常用功能46--AT32F435 3 ADC普通组同时模式配置

[复制链接]
 楼主| ArterySW 发表于 2025-4-16 17:20 | 显示全部楼层 |阅读模式
AT32 WorkBench常用功能46--AT32F435 3 ADC普通组同时模式配置

本文主要介绍如何基于AT32 WorkBench配置ADC的普通组同时模式
本次例程采用3ADC普通同时模式,在此模式下,当触发事件来了之后,3个ADC将会同时转换,当每个通道转换完成了之后,DMA将数据搬到内存,需要注意的是在此模式下,ADC通道采样时间、个数需要配成一致
转换时序
9d8dad9ab92360dff8cfd59bf3ed113b
硬件环境
  • AT-START-F435

软件环境
  • AT32 Workbench
  • MDK5
  • 串口助手


配置步骤
1打开AT32 WorkBench新建AT32F435工程
920b406166e163bd6a0e6ad17acf7112

2配置系统时钟(如果使用默认内部HICK,跳过此步骤2)
2.1 打开外设CRM配置HEXT为时钟振荡器,如下图
8dd6c8df81dd8d6285e7f890f4bc9c23

2.2 打开时钟配置
832cb2eca45dd10ef12054911e696d1d

3 配置ADC模式和分频
aba7f8af239f8cd82d03c4f086b5849b

4配置普通组转换ADC CH1(PA1引脚)、ADC CH2(PA2引脚)、ADC CH3(PA3引脚)
4.1配置ADC1,通道转换顺序为ADC CH1、ADC CH2、ADC CH3
ecc270f4f0bdc4ead351c8f711425d79

4.2配置ADC2,通道转换顺序为ADC CH2、ADC CH3、ADC CH1
f7de2510665d30d37bad6c36a755e303

4.3配置ADC3,通道转换顺序为ADC CH3、ADC CH1、ADC CH2
bfec82d42fc7eab75450ca54ecd12db4

5 配置DMA通道
396d92de92f27a1c06fc6e6e80d88932

6配置串口打印
6.1配置USART1
9c791e8fa73cc0dbcc8a52d113997cd3

6.2 USART1引脚配置成PA9
009b2fe0444d2daf990576408f180944

6.3 配置串口打印
e8742f98025ac6be557d8778ef15135f

7点击“生成代码”生成MDK5代码工程
59680e81690dca9dc09e201a03147aee
8配置ADC普通通道转换相关应用代码
main.c的mian函数写法如下, 可以直接替换这部分代码

  1. int main(void)
  2. {
  3.   /* add user code begin 1 */
  4.   uint16_t buf[9];
  5.   /* add user code end 1 */

  6.   /* system clock config. */
  7.   wk_system_clock_config();

  8.   /* config periph clock. */
  9.   wk_periph_clock_config();

  10.   /* nvic config. */
  11.   wk_nvic_config();

  12.   /* timebase config. */
  13.   wk_timebase_init();

  14.   /* init dma1 channel1 */
  15.   wk_dma1_channel1_init();
  16.   /* config dma channel transfer parameter */
  17.   /* user need to modify define values DMAx_CHANNELy_XXX_BASE_ADDR and DMAx_CHANNELy_BUFFER_SIZE in at32xxx_wk_config.h */
  18.   wk_dma_channel_config(DMA1_CHANNEL1,
  19.                         (uint32_t)&ADCCOM->codt,
  20.                         (uint32_t)buf,
  21.                         9);
  22.   dma_channel_enable(DMA1_CHANNEL1, TRUE);

  23.   /* usart1 already supports printf. */
  24.   /* init usart1 function. */
  25.   wk_usart1_init();

  26.   /* init adc-common function. */
  27.   wk_adc_common_init();

  28.   /* init adc1 function. */
  29.   wk_adc1_init();

  30.   /* init adc2 function. */
  31.   wk_adc2_init();

  32.   /* init adc3 function. */
  33.   wk_adc3_init();

  34.   /* add user code begin 2 */

  35.   /* add user code end 2 */

  36.   while(1)
  37.   {
  38.     /* add user code begin 3 */
  39.     adc_ordinary_software_trigger_enable(ADC1, TRUE);
  40.    
  41.     while(dma_flag_get(DMA1_FDT1_FLAG) == RESET);
  42.     dma_flag_clear(DMA1_FDT1_FLAG);
  43.    
  44.     printf("adc data  ADC1 ch1:%4d  ch2:%4d  ch3:%4d\r\n", buf[0], buf[3], buf[6]);
  45.     printf("          ADC2 ch1:%4d  ch2:%4d  ch3:%4d\r\n", buf[1], buf[4], buf[7]);
  46.     printf("          ADC3 ch1:%4d  ch2:%4d  ch3:%4d\r\n", buf[2], buf[5], buf[8]);
  47.    
  48.     wk_delay_ms(1000);
  49.     /* add user code end 3 */
  50.   }
  51. }

9将ADC引脚接以下电压,
ADC CH1(PA1引脚)接3.3V
ADC CH2(PA2引脚)接1.6V
ADC CH3(PA3引脚)接0V

10在MDK5上编译,并下载代码到AT32F435 MCU 上

11复位运行AT32F435MCU,用串口助手观看打印信息,ADC数据每1秒钟转换一次
ddf5b6a43a93406c4a6a90ec013f564f

AT32 WorkBench常用功能46--AT32F435 3 ADC普通组同时模式配置.zip

965.8 KB, 下载次数: 2

您需要登录后才可以回帖 登录 | 注册

本版积分规则

198

主题

304

帖子

17

粉丝
快速回复 在线客服 返回列表 返回顶部

198

主题

304

帖子

17

粉丝
快速回复 在线客服 返回列表 返回顶部