一:ADC知识分享:
ADC是一个将模拟输入信号转换为12位、10位、8位或6位的数字信号的外设。采样率最高可达5.33MSPS。每组ADC多达19个通道源(包括内部及外部通道)可进行采样及转换,两组ADC总计16个外部输入通道源。
二:ADC特征:
模拟方面有以下特征:
支持分辨率12位、10位、8
位或6位的转换自校准时间: 205个ADC时钟周期
ADC转换时间
快速通道:ADC时钟80MHz,分辨率12位时转换时间为0.1875 us(5.33MSps)
慢速通道:ADC时钟80MHz.分辨率
12位时转换时间为0.2375 us(4.21MSps)
快速通道:ADC时钟80MHz,分辨率6位时转换时间为0.1126 us(8.88MSps)
慢速通道:ADC时钟80MHz,分辨率6位时转换时间为0.1626 us(6.15MSps)
ADC供电要求:请参考 Datasheet
ADC输入范围:VREF-≤ ViIN ≤ VREF+
数字控制方面有以下特征:
通道管理区分优先权不同的普通通道与抢占通道
普通通道与抢占通道具备各自独立的触发侦测电路各通道均可独立配置采样时间转换顺序管理支持多种不同的多通道转换过采样器:硬件过采样最高可实现16位分辨率
可选择的数据对齐方式
可配置的电压监测边界
支持DMA传输的普通通道数据
可设定以下事件发生时响应中断
普通通道转换数据溢出
抢占通道组转换结束
普通通道转换结束
电压监测超出范围
触发转换失败
联动多ADC的主从模式
可配置多ADC之间时序位移长度的主从位移模式- 高效能需求可使用主从模式搭配DMA
三:图形化配置示例如下所示:
开始DMA的传输功能:
使用的DMA1的通道1 进行传输;
四:软件代码
4.1 添加代码
由于软件已经将大部分代码生成,这里我分享一下,自行添加的代码;
在AT32F45x_WK_CONFIG_H里面定义一下DMA1接收的buffer和数组的大小;
//#define DMA1_CHANNEL1_BUFFER_SIZE 0 //#define DMA1_CHANNEL1_MEMORY_BASE_ADDR 0 #define DMA1_CHANNEL1_BUFFER_SIZE 16 #define DMA1_CHANNEL1_MEMORY_BASE_ADDR (uint32_t)adc_buf
4.2 在生成的代码用户区,开启一下自动转换ADC的功能
/* add user code begin 2 */ adc_ordinary_software_trigger_enable(ADC1, TRUE); /* add user code end 2 */
我要赚赏金
