打印
[AT32 WorkBench]

AT32 WorkBench常用功能41--AT32F435ADC普通组位移模式配置

[复制链接]
69|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AT32 WorkBench常用功能41--AT32F435ADC普通组位移模式配置

本文主要介绍如何基于AT32 WorkBench配置ADC普通组位移模式,当使用普通位移模式时,通过使用多ADC采集同一通道,可以提高ADC对这个通道的采样频率,以AT32F435为例,如果使用3个ADC采集同一通道,可将此通道的采样率从最大5.33M,提升到5.33×3 = 16M,所以位移模式适合用在需要对单一通道高速采样的应用场景
转换时序

硬件环境
  • AT-START-F435

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


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


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


2.2 打开时钟配置


3 配置ADC模式和分频,在这里会配置位移模式、位移长度、DMA模式等参数


4配置ADC参数
4.1 配置ADC1普通组转换ADC CH1(PA1引脚),开启反复模式


4.2 配置ADC2普通组转换ADC CH1(PA1引脚),开启反复模式


4.3 配置ADC3普通组转换ADC CH1(PA1引脚),开启反复模式


5 配置ADC1 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[3];
  /* 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,
                        3);
  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 */
  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  adc3:%d\r\n", buf[0], buf[1], buf[2]);

    wk_delay_ms(1000);
    /* add user code end 3 */
  }
}
9在MDK5上编译,并下载代码到AT32F435 MCU 上
10复位运行AT32F435MCU,用串口助手观看打印信息,3个ADC会在位移模式下一直转换数据,数据通过DMA存储到buf[0]、buf[1]、buf[2],每1秒钟通过串口打印一次3个ADC的转换数据


AT32 WorkBench常用功能41--AT32F435 ADC普通组位移模式配置.zip

1011.2 KB

使用特权

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

本版积分规则

199

主题

304

帖子

13

粉丝