前言 欢迎来到STM32期末复习系列的第六篇到了这里我们的硬件外设复习已经接近尾声。现实世界中的信号如温度、光线、声音都是连续变化的“模拟信号”而单片机只懂0和1组成的“数字信号”。怎么沟通这就需要**ADC模数转换器**这座桥梁。 另外当单片机需要和各种复杂的传感器芯片或者屏幕对话时只用普通的串口是不够的我们还需要掌握一种非常经典的通信协议——IIC总线。干货满满开始划重点考点一ADC模数转换基础理论⭐️⭐️⭐️⭐️ 必考概念/填空考试中经常会考ADC转换的“四步曲”和核心技术参数这部分纯送分千万别丢1. A/D转换的四大步骤背诵将连续的模拟信号转换成数字信号必须依次经过以下四个步骤采样 (Sampling)每隔一小段时间去“抽取”一下模拟信号的电压值。必考定理抽样定理奈奎斯特准则。要求采样频率 $f_S \ge 2f_{Imax}$即采样频率必须大于等于输入信号最高频率的2倍这样才能完整还原出原来的信号。保持 (Holding)由于转换需要一点点时间在转换期间必须把刚才采样的电压值“稳住”不能变。量化 (Quantization)把保持住的电压值归入到某一个相近的离散电平等级中。编码 (Encoding)把量化后的等级转换成单片机认识的二进制代码0和1。2. ADC核心技术参数分辨率表示ADC对输入模拟量微小变化的分辨能力。大白话通常用“位数”表示。比如STM32自带的是12位ADC也就是把 0~3.3V 的电压切成了 $2^{12} 4096$ 份。位数越多量化单位越小转换越精细误差越小分辨率越高考点二STM32的ADC模块特性⭐️⭐️⭐️ 选择题常客输入通道数STM32F103的ADC最多有16个外部通道ADCx_IN0 ~ ADCx_IN15对应16个GPIO引脚。隐藏通道以ADC1为例除了16个外部通道外它还有两个专用的内部通道内部温度传感器通道可以用来测量芯片的工作温度。内部参考电压VREFINT通道。GPIO模式配置敲黑板如果一个引脚要用作ADC的输入通道它的GPIO工作模式必须配置为“模拟输入GPIO_Mode_AIN”只有这样才能原汁原味地把外部电压输送给ADC。考点三IIC总线通信基础⭐️⭐️⭐️⭐️⭐️ 核心大题/对比题IIC也叫I2C是由Philips公司开发的一种经典串行总线。它引脚少硬件简单应用极广。1. IIC的核心特征必考填空/选择引脚组成只需要两根线SDA (Serial Data Line)串行数据线用来传输数据。SCL (Serial Clock Line)串行时钟线用来控制节奏所以它是同步通信。通信方式因为只有一根数据线所以数据只能单向轮流走这叫作半双工通信不能同时发和收。主从模式通常有一个“主机单片机”和多个“从机各种传感器”。主机通过发“设备地址”来呼叫特定的从机。2. IIC与USART的对比总结表建议截图保存特性USART (串口)IIC总线线数TX, RX (2根数据线)SDA, SCL (1根数据1根时钟)同步/异步异步没时钟线靠波特率同步有SCL时钟线统一指挥通信方向全双工可同时收发半双工只能交替收发考点四IIC的硬件代码配置规则⭐️⭐️⭐️⭐️ 代码阅读/改错在阅读实验代码或程序填空题时遇到IIC初始化一定要盯紧它的GPIO配置IIC引脚的工作模式 在STM32标准库中如果使用硬件IIC比如PB10和PB11这两个引脚的模式必须设置为复用开漏输出 (GPIO_Mode_AF_OD)注意如果是用软件模拟IIC通常设置为普通开漏输出GPIO_Mode_Out_OD。为什么一定要“开漏”开漏输出只能输出低电平无法主动输出高电平。因此IIC总线的SCL和SDA外部必须接上拉电阻通常接到3.3V。这样做是为了实现“线与”功能防止多个设备同时发送数据时导致电源短路烧毁芯片。 IIC硬件结构体高频代码段I2C_InitStructure.I2C_Mode I2C_Mode_I2C; // I2C模式 I2C_InitStructure.I2C_DutyCycle I2C_DutyCycle_2; // 占空比配置 I2C_InitStructure.I2C_OwnAddress1 0X0A; // 自身地址 I2C_InitStructure.I2C_Ack I2C_Ack_Enable; // 开启应答机制(ACK)复习建议这一章的重点是搞清ADC的四个步骤与分辨率概念以及**IIC总线“两根线、半双工、同步、开漏输出”**这几个核心关键词。