1. I2C 总线典型设备应用
在嵌入式开发中,I2C 是一种非常常见的同步串行通信协议。以下是两种典型 I2C 外设的特性与参数:
1.1 EEPROM (AT24C02)
存储容量:2Kbit = 256 Bytes。
设备地址 (I2C Slave Address):0x50(Base Address)。
主要用途:用于断电后保存关键配置数据或系统参数。
1.2 数字温度传感器 (LM75)
LM75 是一款常见的数字温度传感器,内置 ADC 采样与温度计算模块。
设备地址:0x48
工作电压:2.7V - 5.5V
测温范围:-55℃ ~ +125℃
测量精度:±2℃ ~ ±3℃
分辨率:9位(即最小分辨温度为)
内部寄存器:
温度寄存器地址:0x00
数据读取规则:
每次读取2 个字节的温度数据;
数据为高位对齐,需舍弃低 7 位后进行有效温度换算。
硬件加速:可开启 FPU (协处理器 CP11) 进行浮点数运算加速。
应用场景举例:高危液体存储告警系统(实时监控环境温度与液位电压)。
2. ADC (模数转换器) 核心原理
2.1 模拟信号与采样过程
自然界中的温度、压力、液位 (m) 等物理量均为模拟信号。微控制器(MCU)通过传感器将这些物理量转化为模拟电压值 (v)后,需要通过ADC (Analog-to-Digital Converter)将其转化为数字信号。
采样频率 (Sampling Rate):单位时间内对模拟信号的采样次数(Hz)。根据奈奎斯特定理,采样频率必须大于信号最高频率的 2 倍。
2.2 逐次逼近法 (SAR ADC) 与二分查找原理
大多数 MCU 内置的 ADC 采用逐次逼近法 (Successive Approximation),其基本思想类似于二分查找法。
内部硬件主要由比较器、DAC 和逐次逼近寄存器 (SAR) 组成:
1.假设基准电压为
,待测电压
;
2.第 1 次逼近:试探中间值。
比较:输出 bit 为1;
3.第 2 次逼近:调整试探值为。
比较:输出 bit 为0;
4.第 3 次逼近:调整试探值为。
比较:输出 bit 为1;
5.依次类推,直到达到要求的位数分辨率,完成数值逼近。
2.3 分辨率与电压转换公式
ADC 的分辨率 (Resolution)决定了可量化的最小电压变动:
8-bit:分段数为(范围 0x00 - 0xFF)
10-bit:分段数为(范围 0 - 1023)
12-bit:分段数为(范围 0 - 4095,主流 MCU 常用)
16-bit:高精度(常见于 DSP 或专用外置 ADC 芯片)
采样电压计算通用公式:
示例:
若 ADC 为10 位分辨率,基准电压,采样读出的数字量为
:
3. 常见信号滤波算法总结
由于传感器环境噪声干扰,直接读取的 ADC 数据往往包含误差,需要通过软件滤波算法提升数据平滑度与稳定性:
1.均值滤波 (Mean Filter)
原理:连续采样 N次求算术平均值。
适用:消除随机干扰,适用于平稳变化的信号(如温度)。
2.高通滤波 (High-Pass Filter)
原理:允许高频信号通过,滤除低频趋势(基线漂移)。
适用:快速突变信号检测。
3.低通滤波 (Low-Pass Filter)
原理:允许低频信号通过,减弱高频噪声干扰。
适用:消除高频抖动噪声。
4.卡尔曼滤波 (Kalman Filter)
原理:基于状态空间模型的预测与更新算法,结合系统预测值和测量值计算最优估计。
适用:高精度实时跟踪、预测性降噪及复杂动态系统。