📚 学习概述:本次围绕嵌入式常用外设与模数转换技术展开,重点掌握I2C总线挂载的存储、传感设备特性,硬件浮点单元FPU配置原理,以及ADC模数转换的核心机制、运算逻辑、分辨率规则和降噪滤波算法,所有知识点均适配嵌入式工控、采集类项目开发,实用性极强。
一、I2C总线外设详解
I2C是嵌入式最常用的低速通信总线,可挂载多个从设备,本次重点学习两款常用外设:AT24C02 EEPROM存储芯片、LM75数字温度传感器,明确设备参数、硬件地址、数据读取规则。
1.1 AT24C02 掉电存储芯片
AT24C02是一款经典的I2C接口非易失性存储芯片,广泛用于存储设备配置参数、采集数据、校准参数等信息,掉电数据不丢失。
存储规格:标称容量2Kbit,换算字节为256Byte,是嵌入式小型数据存储的常用选型
I2C设备地址:固定从机地址0x50,主机可通过该地址精准寻址设备,实现读写操作
核心用途:保存少量固定数据、设备运行参数、断电保留的采集记录
1.2 LM75 数字温度传感器
LM75是基于I2C通信的高精度温度采集传感器,适配工业、民用嵌入式测温场景,工作电压范围宽,适配绝大多数单片机、ARM开发板硬件电路。
工作电压:2.7V ~ 5.5V,兼容3.3V、5V主流硬件电平,电路适配性强
测温精度:±2℃ ~ ±3℃,满足常规环境测温、设备温控场景需求
测温量程:-55℃ ~ 125℃,覆盖绝大多数民用、工业设备工作温度区间
测温分辨率:9位数据输出,最小测温精度0.5℃,温度变化0.5℃即可被传感器识别
设备通信地址:固定I2C从机地址0x48
数据寄存器地址:温度数据存储在寄存器0x00地址
数据读取规则:温度数据占用2个字节,寄存器高字节为有效数据,低7位数据无效、需要舍弃,处理后才可得到精准温度数值
二、FPU浮点运算单元开启(CP11)
ARM内核默认关闭硬件浮点运算功能,单纯依靠内核软件运算浮点数据,效率极低、占用大量CPU资源。
核心作用:开启CP11 协处理器(FPU),启用硬件浮点运算单元
实际价值:大幅提升浮点数(小数运算、传感器数据校准、滤波运算、算法计算)的运算速度,减少CPU算力消耗,避免浮点运算卡顿
适用场景:温度校准、电压换算、滤波算法、PID控制、数据量化等所有需要浮点运算的嵌入式场景
三、ADC模数转换核心原理
嵌入式设备只能识别数字信号(0/1),但现实中的温度、压力、液位、电压均为连续变化的模拟信号。ADC的核心作用就是将模拟信号转换为CPU可识别的数字信号,是数据采集类项目的核心模块。
典型项目场景:高危液体存储告警系统,通过ADC采集液位对应的模拟电压,换算出实时液面高度,实现超限告警功能。
3.1 核心基础概念
采样率:ADC的采样速度,单位为HZ(赫兹),代表每秒采集模拟信号的次数。采样率越高,信号采集越实时,数据连续性越好,但会增加硬件资源消耗。
基准电压Vref:ADC的最大量程电压,本次学习标准量程为5V,即ADC可识别0~5V区间的模拟电压信号
量化:将连续的模拟电压信号,通过分级、对比的方式转化为离散的数字数值的过程,是ADC转换的核心逻辑
3.2 ADC逐次逼近法(二分查找核心逻辑)
逐次逼近法是主流ADC的转换算法,核心原理基于二分查找,通过多次电压对比,逐步逼近真实待测电压,最终输出精准数字值。以Vref=5V、待测电压=3.2V为例,完整推演过程如下:
第一次对比:取量程中间值2.5V,待测电压3.2V>2.5V,判定高位为1,确定电压区间2.5V~5V
第二次对比:取新区间中间值3.75V,待测电压3.2V<3.75V,判定次高位为0,缩小电压区间至2.5V~3.75V
第三次对比:继续二分迭代,计算出中间值3.125V,再次对比逼近真实电压
最终逻辑:通过多次二分迭代,不断缩小误差,直到数值精度满足ADC分辨率要求,输出最终数字量
优势:转换速度快、精度可控,是嵌入式ADC最常用的转换方式。
3.3 ADC分辨率等级与换算公式
分辨率是决定ADC采集精度的核心参数,位数越高,电压分级越细,可识别的最小电压变化越小,采集精度越高。
常见分辨率参数对照表
8bit ADC:数值范围 0~255,共256个分级档位
10bit ADC:数值范围 0~1023,共1024个分级档位(嵌入式最常用)
12bit ADC:数值范围 0~4095,精度更高,适用于高精度采集场景
16bit ADC:超高精度,多用于DSP芯片、精密仪器采集设备
通用电压换算公式
实际电压 = (ADC采样值 n / (2^分辨率 - 1)) × 基准电压
实战示例:10bit ADC、基准电压5V、采样值650
实际电压 = 650 / 1023 × 5V,通过该公式可精准将数字采样值还原为真实模拟电压。
四、ADC采样误差与主流滤波算法
硬件电路干扰、电源纹波、环境电磁干扰,会导致ADC原始采样数据存在毛刺、波动、误差,无法直接使用,必须通过滤波算法优化数据稳定性。本次掌握四种嵌入式核心滤波算法:
4.1 均值滤波
原理:连续多次采集ADC数据,去除极值后取平均值。特点:算法简单、算力消耗极低,可有效消除随机波动误差,是入门级通用滤波方案。
4.2 高通滤波
原理:保留高频变化的信号,过滤低频干扰信号。适用场景:采集快速变化的动态模拟信号,屏蔽缓慢漂移的基线误差。
4.3 低通滤波
原理:保留缓慢变化的有效信号,滤除高频毛刺干扰。适用场景:温度、液位、压力等变化平缓的静态、准静态数据采集,是传感器采集的常用滤波方式。
4.4 卡尔曼滤波
原理:具备数据预测与修正能力,通过上一时刻数据预测当前数据,结合实时采样值修正误差。特点:精度最高、可动态适配数据变化,适合高速、高精度、动态变化的采集场景,广泛用于智能控制、精密采集项目。
五、全天知识点核心总结
I2C外设开发需牢记设备固定地址、寄存器地址和数据解析规则,AT24C02用于数据存储,LM75用于精准测温,是嵌入式基础外设组合。
开启FPU(CP11协处理器)是嵌入式浮点运算优化的基础操作,可大幅提升小数运算、算法运算效率。
ADC逐次逼近法基于二分逻辑迭代转换,分辨率直接决定采集精度,固定公式可实现数字值与模拟电压的精准换算。
实际项目中ADC原始数据存在干扰误差,需根据信号特性选择均值、高低通、卡尔曼等滤波算法,优化数据稳定性与准确性。