模数转换ADC模块

通用基础知识

ADC模块是嵌入式应用中重要的组成部分,是嵌入式系统与外界连接的纽带,是在测控系统中的重要内容。
 

ADC模块:即模数转换模块/AD转换模块,功能是将电压信号转换为相应的数字信号。实际应用中,这个电压信号可能由温度、湿度、压力等实际物理量经过传感器和相应的变换电路转化而来。经过AD转换,MCU就可以处理这些物理量。

转换精度

指数字量变化一个最小量模拟信号的变化量,也称分辨率,一般用ADC模块的位数来表示。通常ADC模块的位数有8位、10位、12位、14位、16位等。设采样位数为n,则最小的能检测到的模拟量变化值为½ⁿ

例如某一个AD转换模块是12位,若参考电压为5V,那这个AD模块可检测到的模拟量变化最小值(转换精度)为5/(2¹²)=1.22(mV)。

转换速度

通常用完成一次AD转换所要花费的时间表示AD转换器的转换速度。转换速度与AD转换器的硬件类型及制造工艺等因素密切相关,其特征值为纳秒级。

单端输入和差分输入

单端输入:指AD采集只有一个输入引脚,使用公共地GND作为参考电平。简单但容易受到干扰,由于GND电位始终是0V,因此AD值也会随着干扰而变化。

差分输入:比单端输入多了一个引脚,AD采样值是两个引脚的电平差值,降低了干扰,但是多用了一个引脚。通常两根差分线会布在一起,因此受到的干扰程度接近。

AD参考电压

在进行AD转换时,需要一个参考电压。例如把一个电压分成1024份,每一分的基准必须是稳定的,这个电平来自于基准电压(即AD参考电压)

在要求不是很精确的情况下,AD参考电压使用给芯片功能供电的电源电压。在更为精确的要求中,AD参考电压使用单独电源,要求功率小,波动小,一般电源电压达不到这个精度,否则成本太高。


为了使采集的数据更准确,必须的对采样的数据进行筛选去掉误差较大的毛刺。

滤波方法

通常采用中值滤波和均值滤波来提高采样精度。

中值滤波:将M次连续采样值按大小进行排序,取中间值作为滤波输出。

均值滤波:把N次采样结果值相加,然后除以采样次数N,得到的平均值。

若要得到更好的精度,可以通过建立其他误差模型分析方法来实现。


在实际应用中,得到稳定的AD采样值后,还需要把AD采样值与实际物理量对应起来。

物理量回归

AD转换的目的是把模拟信号转化为数字信号,供计算机进行处理,但必须知道AD转换后的数值所代表的实际物理量的值,这样才有实际意义。

例如,利用MCU采集室内温度,AD转换后的数值是126,实际温度25.1ᵒC。

设AD值为x,实际物理量为y,物理量回归就是寻找x与y之间的函数关系y=f(x)。


KL25 ADC通道输入表

KL25的ADC模块只有一个,记为ADC0,是线性逐次逼近ADC,最高转换精度为16位。

同时具有单端输入和差分输入两种采集模式。

差分模式的精度可配置为16位、13位、11位、9位。

单端模式的精度可配置为16位、12位、10位、8位。

KL25中还有其他形式的模拟输入通道,如芯片内部包含一个温度传感器,他的输出信号接在ADC模拟量个输入通道上,通道号为26。

ADC驱动构件

AD模块具有初始化、采样、滤波等操作。

按照构件化的思想,可将它们封装成独立的功能函数。

AD构件包括头文件adc.c和adc.h文件。

ADC驱动构件头文件

主要包括相关宏定义、AD的功能函数原型说明等内容AD各功能函数的实现。

在adc.h中,给出了定义AD采样次数的宏定义、输入模式的宏定义和A/B通道组的通道选择的宏定义。

adc_init函数需要完成对ADC模块的初始化,需要通过参数的主要有:输入模式(单端or差分)、转换精度、硬件滤波次数。

其他三个参数:转换速度、参考电压和物理量回归是由硬件决定或是需要具体应用程序来完成。

另一个需要初始化时制定的是通道组,用以选择使用KL25中的A通道还是B通道进行AD转换。

adc_read函数仅有一个参数,channel,即所需读AD转换值的通道号。使用这个函数之前,需调用初始化函数对相应通道组进行初始化。

根据以上两个函数,就可以正常使用AD转换功能。

以采集并输出KL25芯片温度为例,介绍ADC构件的使用方法。

ADC工程样例

第一步:adc_init(MUXSEL_A,AD_SINGLE,16,SAMPKE32);初始化A通道,单端输入,16位精度,32次硬件滤波的AD转换;

第二步:advalue=adc_read(26);读取通道26,每次采集32次硬件滤波,赋给16位无符号整形变量advalue;

第三步:float VTemp,temp;VTemp=(advalue*3300)>>16;//或VTemp=(advalue*3300)/65536.0;temp=25-(VTemp-719)/1.715;将读取的AD值通过公式转换成温度,具体公式参考KL25芯片手册。

第四步:printf("%f",temp);在串口调试工具观察温度传感器输出的温度

AD模块构件编程思想

AD初始化需要四个参数,即在进行AD初始化时主要就是对这四个参数进行寄存器配置。

通过对ADC_CFG2寄存器的D4位进行配置,选择使用A组或B组通道。

通过对ADC0_SC1A寄存器的D5位操作,配置是使用单端输入或差分输入,若选择差分输入模式,还需要对ADC模块进行校正。

通过对ADC_CFG1寄存器的D3D2位进行操作,选择ADC模块的采样精度。

对ADC0_SC3寄存器的配置,选择硬件滤波的次数。


关于ADC模块数据的读取,需要了解ADC0_SC1A、ADC0_RA这两个寄存器。

在读取AD数据时,等待ADC0_SC1A寄存器的COCO位被置位,一旦检测到COCO被置位,说明转换完成,即可读取数据结果寄存器ADC0_RA中的数据。

至此一次AD数据就读取完成了。

嵌入式技术基础与实践(第4版) 

  • 26
    点赞
  • 135
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AUTOSAR ADC模块是一种用于汽车电子系统的模块,用于处理模拟信号转换为数字信号的功能。该模块具有高精度、高速度和可靠性的特点。 该模块通常由两个主要组件组成:ADC驱动程序和ADC硬件。ADC驱动程序负责与硬件之间的通信和控制,而ADC硬件则负责执行模拟信号转换为数字信号的操作。 在汽车电子系统中,ADC模块通常用于采集和处理来自各种传感器的模拟信号,如温度、压力、速度等。通过将这些模拟信号转换为数字信号,汽车电子系统可以更准确地获取和处理这些传感器的数据。 AUTOSAR ADC模块还具有灵活性和可操作性。它可以根据需求进行配置和调整,可以选择不同的采样率和分辨率,以适应不同的应用场景。此外,该模块还支持多通道输入,使其能够同时处理多个传感器的模拟信号。 除了数据采集外,ADC模块还可以进行一些信号处理操作,如滤波、增益控制等。这些操作可以对原始数据进行优化和改进,以提高系统的性能和准确性。 总而言之,AUTOSAR ADC模块是一种在汽车电子系统中广泛使用的模块,用于模拟信号转换为数字信号的操作。它具有高精度、高速度和可靠性的特点,并且具有灵活性和可操作性,可以根据不同的需求进行配置和调整。它在汽车电子系统中的应用可以提高数据采集的准确性和灵活性,为后续处理和控制提供了可靠的数据基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值