大部分的嵌入式系统都包括一些I/O设备,例如仪器上的数据显示屏、工业设备上的串口通信、数据采集设备上模拟数据采样、用于保存数据的Flash/SD卡以及网络设备上的以太网接口等,都是嵌入式系统中容易找到的I/O设备例子。
本专栏主要是分享RT-Thread是如何对不同的I/O设备进行管理的。读完本专栏,我们会了解到如何从宏观角度去管理I/O设备,为我们在编写代码时有一个参考的管理模型,从而提高我们代码的复用性、降低耦合性,从而实现换硬件不动软件的目标。
1、《设备与驱动:I/O设备模型》
2、《设备与驱动:UART设备》
3、《设备与驱动:PIN设备》
4、《设备与驱动:ADC设备》
5、《设备与驱动:DAC设备》
6、《设备与驱动:CAN设备》
7、《设备与驱动:I2C设备》
8、《设备与驱动:PWM设备》
9、《设备与驱动:SPI设备》
目录
一、ADC简介
ADC(Analog-to-Digital Converter)指模数转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。真实世界的模拟信号,例如:温度、压力、声音或者图像等,需要转换成容易存储、处理和发射的数字形式。模数转换器就可以实现这个功能,在各种不同产品中都可以找到它们的身影。与之相对应的DAC(Digital-to-Analog Converter),它是ADC模数转换的逆向过程。ADC最早用于对无线信号向数字信号转换。如电视信号、长短播电台发射接收等。
二、转换过程
如下图所示:模数转换一般要经过采样、保持、量化和编码几个步骤。在实际电路中,有些过程时合并进行的,如采样和保持,量化和编码在转换过程中时同时实现的。
采样是将时间上连续变化的模拟信号转换为时间上离散的模拟信号。采样取得的模拟信号转换为数字信号都需要一定的时间,为了给后续的量化编码过程提供一个稳定的值,在采样电路后要求将采样的模拟信号保持一段时间。
将数值连续的模拟量转换为数字量的过程称为量化。数字信号在数值上是离散的。采样保持电路的输出电压还需要按照某种近似方式归化到与之相应的离散电平上,任何数字量只能是某个最小数量单位的整数倍。量化后的数值最后还需要编码过程,也就是A/D转换器输出数字量。
三、分辨率
分辨率以二进制(或十进制)数的位数来表示,一般有8位、10位、12位、16位等,它说明模数转换器对输入信号的分辨能力,位越多,表示的分辨率越高,恢复模拟信号时会更精准。
四、精度
精度表示ADC器件在所有的数值点上对应的模拟值和真实值之间的最大误差,也就是输出数值偏离线性最大的距离。
五、精度与分辨率的区别
分辨率决定了ADC能够分辨的最小信号变化量,通常由位数和参考电压决定。
精度决定了ADC转换结果的准确程度,收到多种误差因素的影响。如:
电路噪声:电子噪声会导致转换结果的不稳定。
温度漂移:温度变换会影响ADC内部电路的性能,从而导致精度下降。
非线性误差:ADC在转换过程中可能存在非线性误差,导致测量结果偏离真实值。
偏移误差和增益误差:这些误差会直接影响转换结果的准确性。
六、转换速率
转换速率是指A/D转换器完成一次模拟到数字的AD转换所需时间的倒数。例如:某A/D转换器的转换速率位1MhZ,则表示完成一次AD转换的时间位1us。