6.I2C(IIC)
6.1 概念
6.1.1 IIC
同步串行半双工通信总线

6.1.2 IIC 硬件设计注意事项
开漏输出+上拉电阻
6.1.3 引脚输出模式表

-

输出模式规则:
-
推挽模式:只允许 1、2 输出方式,不允许 msl、ms2 同时打开或关闭
-
开漏模式:只允许 2、3 输出方式,不允许 1 导通
6.2 时序
6.2.1 I2C

- start 信号:在总线空闲时(高电平),主机在时钟线 (SCL) 为高电平时,在数据线 (SDA) 上产生一个下降沿,称之为起始信号。
- 发送数据
- 发送数据时从机地址 + 数据流向位
- 发送数据时遵循 MSB 优先原则(高位优先)
- 在 SCL 为低电平时,只允许发送方改变数据 SDA 线,接收方不得采样 SDA
- 在 SCL 为高电平时,只允许接收方采样数据 SDA 线,发送方需保证 SDA 稳定。
- 应答 (9clock)
- ACK:应答(真人回复),8 个数据位 + 1 个应答位
- NACK:非应答(自动回复),第 9 个 SCL 为低电平时,发送方 SDA 输出高电平
- stop 信号:在主机不需要再通信时,主机在时钟线 (SCL) 为高电平时,在数据线 (SDA) 上产生一个上升沿,称之为停止信号。
6.2.2 一次通信

A:数据流向位
0:主机发送,从机接收
1:从机发送,主机接收
7. ADC
7.1 什么是ADC
ADC是模数转换器(Analog-to-Digital Converter)的缩写,是一种将连续变化的模拟信号 (比如电压、电流、温度转化的模拟电信号)转换成离散的数字信号的电子器件 / 电路。它是模拟系统和数字系统之间的核心桥梁,数字设备(如 MCU、处理器)无法直接识别模拟信号,需通过 ADC 将其量化为二进制数字后,才能进行采集、处理、存储和传输,常见于电压采集、传感器数据读取等场景。

7.2 ADC基准电压
ADC的基准电压是ADC进行模数转换的参考标准电压,是ADC量化模拟输入电压的 "标尺"ADC的所有量化结果,都是以基准电压为上限(单极性 ADC)或上下限(双极性 ADC)得到的相对值,基准电压的精度、稳定性直接决定 ADC 的转换精度------若基准电压漂移、波动,即使输入模拟信号不变,ADC的数字输出结果也会偏差。主流MCU的ADC基准电压可采用内部基准(如芯片自带 1.2V、2.5V、3.3V)或外部精准基准源,实际应用中需根据采集需求选择稳定的基准电压。
7.3 ADC 的工作原理
ADC的核心工作原理是采样、保持、量化、编码 四个核心步骤,将连续的模拟电压转化为二进制数字,核心是把模拟输入电压与基准电压做比例比较,再将比例值转化为离散的数字量,通用流程如下:
-
采样:按固定的采样频率,对连续变化的模拟输入信号进行 "快照",抽取离散的模拟电压值;
-
保持:将采样得到的瞬时电压值保持一段时间,保证后续量化过程中电压稳定,避免因信号变化导致量化误差;
-
量化 :将保持的模拟电压与基准电压进行比例运算,把连续的电压值映射为离散的整数等级(量化等级由 ADC 分辨率决定),这一步是 ADC 产生误差(量化误差)的核心环节;
-
编码 :将量化得到的整数等级,转化为数字系统可识别的二进制代码(也可扩展为 BCD 码等),最终输出数字信号。补充:不同类型的 ADC(如逐次逼近型、SAR 型、积分型、流水线型)核心结构不同,但均围绕这四个步骤实现,其中逐次逼近型 ADC 是 MCU 中最常用的类型(如 IMX6ULL、STM32 的片上 ADC)。
7.4 ADC 的分辨率
7.1.1 ADC分辨率
ADC 的分辨率是指ADC 能区分的最小模拟电压变化量 ,表征 ADC 对模拟信号的精细识别能力 ,通常以二进制位数(bit)表示。** ****分辨率的位数决定了 ADC 的量化等级数,**位数越高,量化等级越多,能识别的最小电压变化量越小,转换精度越高。
7.1.2 常见的分辨率
MCU / 专用 ADC 中常见的分辨率以 8/10/12 位为主,工业高精度采集会用到 16/18/24 位,具体分类:
-
低分辨率:8 位,量化等级 256 级,多用于对精度要求较低的场景(如简易电压检测、灯光亮度采集);
-
中分辨率:10 位、12 位,量化等级分别为 1024 级、4096 级,是嵌入式领域最常用的分辨率(如 IMX6ULL、STM32 系列片上 ADC 多为 12 位,满足工业常规采集、传感器数据读取需求);
-
高分辨率:16 位、18 位,量化等级 65536 级、262144 级,用于工业高精度采集(如精密温度、压力、称重传感器);
-
超高分辨率:24 位,量化等级超 1600 万级,多用于高端精密测控、仪器仪表等对精度要求极高的场景。
7.5 ADC 实际应用选择原则
- 首先看量程:确保要测量的信号电压范围在 ADC 的量程之内。如果信号太小,需要先用运放放大;如果信号太大,需要用电阻分压。
- 然后看分辨率:根据需要的测量精细度选择位数。例如,测量锂电池电压 (3.0V-4.2V),一个 12 位的 ADC(有 4096 个等级)可能就足够了,正常选 10 位。
- 最后看精度:在对测量结果的绝对准确性要求极高的场合(如精密仪器、科学测量),必须仔细研究数据手册中的精度指标(偏移误差、增益误差、INL、DNL),而不能只看它的位数,高精度的 ADC 价格也更高。