嵌入式硬件第九弹——ARM(5)

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

  1. start 信号:在总线空闲时(高电平),主机在时钟线 (SCL) 为高电平时,在数据线 (SDA) 上产生一个下降沿,称之为起始信号。
  2. 发送数据
    1. 发送数据时从机地址 + 数据流向位
    2. 发送数据时遵循 MSB 优先原则(高位优先)
    3. 在 SCL 为低电平时,只允许发送方改变数据 SDA 线,接收方不得采样 SDA
    4. 在 SCL 为高电平时,只允许接收方采样数据 SDA 线,发送方需保证 SDA 稳定。
  3. 应答 (9clock)
    1. ACK:应答(真人回复),8 个数据位 + 1 个应答位
    2. NACK:非应答(自动回复),第 9 个 SCL 为低电平时,发送方 SDA 输出高电平
  4. 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的核心工作原理是采样、保持、量化、编码 四个核心步骤,将连续的模拟电压转化为二进制数字,核心是把模拟输入电压与基准电压做比例比较,再将比例值转化为离散的数字量,通用流程如下:

  1. 采样:按固定的采样频率,对连续变化的模拟输入信号进行 "快照",抽取离散的模拟电压值;

  2. 保持:将采样得到的瞬时电压值保持一段时间,保证后续量化过程中电压稳定,避免因信号变化导致量化误差;

  3. 量化 :将保持的模拟电压与基准电压进行比例运算,把连续的电压值映射为离散的整数等级(量化等级由 ADC 分辨率决定),这一步是 ADC 产生误差(量化误差)的核心环节;

  4. 编码 :将量化得到的整数等级,转化为数字系统可识别的二进制代码(也可扩展为 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 实际应用选择原则

  1. 首先看量程:确保要测量的信号电压范围在 ADC 的量程之内。如果信号太小,需要先用运放放大;如果信号太大,需要用电阻分压。
  2. 然后看分辨率:根据需要的测量精细度选择位数。例如,测量锂电池电压 (3.0V-4.2V),一个 12 位的 ADC(有 4096 个等级)可能就足够了,正常选 10 位。
  3. 最后看精度:在对测量结果的绝对准确性要求极高的场合(如精密仪器、科学测量),必须仔细研究数据手册中的精度指标(偏移误差、增益误差、INL、DNL),而不能只看它的位数,高精度的 ADC 价格也更高。
相关推荐
什么都干的派森5 小时前
硬件工程FAQ记录
硬件工程
普中科技7 小时前
【普中STM32F1xx开发攻略--标准库版】-- 第 45 章 FSMC-外扩 SRAM 实验
stm32·单片机·嵌入式硬件·fsmc·普中科技·外扩sram·is62wv51216
xiaoyuchidayuma9 小时前
永磁同步发电机的线电压和直流母线电压的关系
嵌入式硬件
潜创微科技9 小时前
4K60 over IP 方案简介
网络·嵌入式硬件·网络协议·tcp/ip·音视频
rit84324999 小时前
基于C#的USB HID设备读取测试软件
嵌入式硬件
三佛科技-1873661339710 小时前
FT32F103C8AT7兼容GD32F103C8T632 位通用微控制器MCU,替代性分析
单片机·嵌入式硬件
iCxhust10 小时前
8086汇编 word ptr
汇编·单片机·嵌入式硬件·微机原理·8088单板机
嵌入式ZYXC10 小时前
第3篇:《面试题:I2C为什么要加上拉电阻?阻值怎么选?》
stm32·单片机·嵌入式硬件·面试·职场和发展
leo__52010 小时前
C# 虚拟键盘(软键盘)实现
单片机·c#·计算机外设
你疯了抱抱我11 小时前
【STM32】使用 STM32CubeMX 生成项目,LED测试;上位机:STM32F411CEU6
stm32·单片机·嵌入式硬件