856|0

85

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【雅特力AT32A403A 车规MCU开发板】+ADC各通道的初步测试 [复制链接]

第六篇:ADC各通道的初步测试

这篇文章将来测评AT32A403A的ADC、DMA。

首先,在hardware文件夹中新建ADC.c等C文件及其对应的h头文件。

第二步,通过WorkBench配置AT32A403A的硬件ADC,选择ADC1,这里我选择测三个电压:PA5外部电压、内部温度传感器、内部参照电压。采用的模式是序列模式,就是依次采样电压通道。具体参数看下图

 

 

这里需要注意几个点:

1、如果你想循环采样设置的电压通道,可以将反复模式开启。因为其一次触发后可以反复循环采样,不需要反复触发再采样,这样方便一些。ADC的触发方式有好多种,这里我就选择软件触发,简单一些。

 

2、然后你要采样几通道,就选择几个普通组通道数目,然后设置这几个电压通道的转换顺序和采样时间。

3、通常来说基本会把单片机的主频设定在最高频,也就是200MHz,这是这样就会出现一个问题,根据下面的时钟配置,ADC的时钟如果2分频,那么频率将会超过50M,这不符合最高28M的规定,但如果4分频,那么频率只有25M,达不到最高采样时钟,这就比较难受,或者可以将主频设置成112M,这样可以实现28M,但这就属于得不偿失了。所以它的采样率常用配置的话最高也就1、78MSPS。

 

 

第三步,配置ADC的DMA,这里我们通过DMA来将转换后的数据从外设转移到某一数组中,也就是外设到内存。至于为什么要用DMA来传输数据而不是用一个函数来读取呢,一是我发现所有的例程都是DMA来传输的,很奇怪,二来是我查看了给的库函数,发现没有读取序列模式下ADC的数据的库函数,其中第一个库函数不支持多个通道的情况。(注:也可能是我没注意到)

 

DMA的配置比较简单,数据宽度因为是12位,所以是半字,因为包含3个通道的数据,所以存放这3个数据的数组的内存地址是要递增的,外设地址则不需要。

 

这里也需要注意几个点:

WB生成的初始化代码是将①DMA的初始化;②DMA的外设和内存基址、数据个数设置;③DMA通道使能(main函数里)分开了,这里建议合在一起,免得搞乱,就像下图这样。

 

最后配置好所有所需函数,先初始化DMA,再初始化ADC。通过printf函数来打印PA5的ADC值、内部温度传感器的温度(电压)和内部基准电压。其中内部温度传感器的温度与电压的关系由数据手册提供,近似成线性关系。

 

这是串口打印结果,其中内部基准电压约为1.2V,符合1.16-1.24V的电压范围。内部温度约为40摄氏度,当然了,这温度肯定不是很准确,仅供参考嘛。

 

此帖出自汽车电子论坛
点赞 关注

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表