纪国圣 发表于 2021-2-17 11:26

【AT-START-F407测评】+TMR+DMA+ADC1实现等间隔采样内......

AT32F407VG的ADC功能可谓十分丰富,与STM32F407系列的ADC相比不分伯仲。以下是两者的功能对比:

可以看出两者在功能上几乎没有区别。看到介绍AT32F407VG的ADC可由定时器触发,再联想到使能DMA搬运ADC采集的数据,于是结合官方例程ADC\Temperature和ADC\TMRTrigger_AutoInjection编写这个程序。
先看一下AT32F407VG的ADC1框图:


结合表格13-3可以看到,TMR1的CC1事件是触发ADC1转换的条件之一。

表格9-3可以看到,DMA1的通道1是ADC1数据传输的通道。
关于片内温度传感器的简介如下:

程序配置的流程如下:

因为采集片内温度传感器,所以GPIO_Configuration();不再参与编译。以上配置步骤和STM32的ADC开发流程相似,所以就不具体介绍了。注意DMA的DMA_Mode选择DMA_MODE_CIRCULAR,使能DMA1_Channel1的DMA_INT_TC,即采集固定数据完成后触发中断,在中断内拷贝数据,然后继续采集。

开启片内温度传感器一定要添加ADC_TempSensorVrefintCtrl(ENABLE);不然片内温度传感器不会启动。

通过开启TMR1及其CH1开始ADC1的采集;关闭TMR1结束ADC1的采集。
编译下载程序,效果如下:

程序如下:

页: [1]
查看完整版本: 【AT-START-F407测评】+TMR+DMA+ADC1实现等间隔采样内......