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的采集。
编译下载程序,效果如下:
程序如下:
TMR_DMA_ADC.zip
(1.01 MB)
|