资讯动态

关于STM32F4 系列 IIC 与 SPI 学习:基础、配置细节与异同(2)

发布时间:2026/9/14 23:45:05 来源:尧图企业网站定制
1. IICIICInter-Integrated Circuit集成电路间总线是由 Philips 公司提出的一种两线制串行通信协议广泛用于连接低速外设如 EEPROM、温湿度传感器、RTC 时钟芯片等。1.1 物理层与信号线IIC 总线仅使用两根信号线SCL串行时钟线由主机产生用于同步数据传输。SDA串行数据线用于双向传输地址、控制字和数据。两根线都需要通过上拉电阻连接到电源通常为 4.7kΩ 或 10kΩ实现线与逻辑。空闲时 SCL 和 SDA 均为高电平。1.2 通信速率IIC 支持多种速率模式STM32F4 的 I2C 外设支持标准模式和快速模式标准模式最高 100 kbit/s。快速模式最高 400 kbit/s。因为IIC总线用的是弱上拉强下拉的结构下降沿时电平跳变迅速上升沿电平跳变相对缓慢导致其通信速率受限。1.3 通信协议要点IIC 通信以起始条件、停止条件和应答位为基础起始条件SCL 为高电平时SDA 由高变低表示总线开始传输。停止条件SCL 为高电平时SDA 由低变高表示总线结束传输。地址帧主机先发送 7 位从机地址再附加 1 位读写标志0 表示写1 表示读。应答位ACK/NACK每传输 8 位数据后接收方在第 9 个时钟周期拉低 SDA 表示应答拉高表示非应答。IIC 是半双工通信同一时刻只能有一个方向的数据在 SDA 上传输。2. SPISPISerial Peripheral Interface串行外设接口是由 Motorola 提出的一种高速同步串行通信协议常用于连接 Flash 存储器、SD 卡、显示屏、ADC 等设备。2.1 物理层与信号线SPI 通常使用四根信号线SCLK串行时钟由主机产生决定通信速率。MOSI主机输出从机输入主机向从机发送数据。MISO主机输入从机输出从机向主机发送数据。CS/SS片选信号低电平有效用于选中目标从机。SPI 是全双工通信主机和从机可以同时发送和接收数据。2.2 通信速率SPI 的速率由主机时钟分频决定STM32F4 的 SPI 外设最高可工作在 42 MHz 左右具体取决于 APB 时钟和分频系数远高于 IIC 的 400 kbit/s。2.3 四种工作模式SPI 通过 CPOL时钟极性和 CPHA时钟相位组合出四种模式CPOL0CPHA0模式 0空闲时钟为低电平数据在第一个边沿采样。CPOL0CPHA1模式 1空闲时钟为低电平数据在第二个边沿采样。CPOL1CPHA0模式 2空闲时钟为高电平数据在第一个边沿采样。CPOL1CPHA1模式 3空闲时钟为高电平数据在第二个边沿采样。主机和从机必须配置为相同的模式才能正常通信。3. STM32F4 IIC 配置细节STM32F4 的 I2C 外设配置主要涉及时钟、引脚复用、时序参数和中断/轮询方式。下面以标准库和 HAL 库两种视角说明关键细节。3.1 引脚与复用功能I2C 引脚必须配置为开漏输出并启用复用功能。例如 I2C1 的 SCL 和 SDA 可映射到 PB6 和 PB7需要将这两个引脚设置为 AF4 复用模式并开启上拉电阻。3.2 时序参数配置I2C 时序由 CCR时钟控制寄存器和 TRISE上升时间寄存器决定CCR决定 SCL 高低电平的持续时间与 APB1 时钟和通信速率相关。TRISE用于补偿总线上升时间标准模式通常配置为 APB1 时钟周期数加 1。在 HAL 库中这些参数封装在 I2C_InitTypeDef 结构体中通过 I2C_Init 函数写入寄存器。3.3 地址模式STM32F4 的 I2C 外设支持 7 位和 10 位地址模式。大多数从机使用 7 位地址配置时需注意地址左移一位后与读写标志组合。3.4 中断与 DMAI2C 通信可以使用轮询、中断或 DMA 方式。对于大数据量传输推荐使用 DMA 以减少 CPU 占用对于单字节读写轮询方式更简单直接。3.5 常见坑点总线忙标志复位后或异常断开后I2C 总线可能处于忙状态需要软件复位外设或发送 9 个时钟脉冲来释放总线。应答超时从机无应答时主机应设置超时机制避免死等。上拉电阻外部上拉电阻缺失会导致通信不稳定这是硬件上最容易忽略的问题。4. STM32F4 SPI 配置细节SPI 配置相对灵活主要关注时钟分频、数据格式、主从模式和片选管理。4.1 引脚与复用功能SPI 引脚需要配置为推挽输出并启用复用功能。例如 SPI1 的 SCK、MOSI、MISO 可映射到 PA5、PA7、PA6复用功能为 AF5。片选引脚通常由 GPIO 普通输出控制低电平有效。4.2 时钟分频与速率SPI 时钟由 APB 时钟分频得到分频系数可选 2、4、8、16、32、64、128、256。配置时需根据从机支持的最高速率选择合适的分频确保 SCLK 不超过从机上限。4.3 数据帧格式STM32F4 的 SPI 支持 8 位和 16 位数据帧。配置时需与从机保持一致否则会导致数据错位。4.4 主从模式与 NSSSPI 可配置为主模式或从模式。主模式下 NSS 引脚可配置为软件管理由 GPIO 手动拉低选中从机从模式下 NSS 用于接收片选信号。4.5 中断与 DMASPI 同样支持轮询、中断和 DMA 三种方式。对于高速连续传输如读写 FlashDMA 是首选方案。4.6 常见坑点模式不匹配主从机 CPOL/CPHA 配置不一致会导致数据错乱。片选时序某些从机要求 CS 在传输前提前拉低、传输结束后延迟拉高需要根据数据手册调整。数据丢失高速传输时若未及时读取 RX 缓冲区会产生溢出错误需配合 DMA 或中断及时处理。5. IIC 与 SPI 的异同IIC 和 SPI 都是同步串行通信协议但它们在物理层、速率、接线方式和应用场景上有明显差异。5.1 相同点同步通信两者都由主机提供时钟信号数据传输与时钟同步。串行传输数据按位逐位传输占用引脚少。主从结构两者都采用主机控制从机的通信模型。板级通信都适用于 PCB 板内短距离通信不适合长距离传输。5.2 不同点对比项IICSPI信号线数量2 根SCL、SDA4 根SCLK、MOSI、MISO、CS通信方式半双工全双工通信速率最高 400 kbit/s快速模式最高可达数十 Mbit/s从机寻址通过 7 位或 10 位地址寻址支持多从机挂载通过片选信号 CS 选中从机每个从机需独立 CS应答机制有 ACK/NACK 应答可检测从机状态无标准应答机制可靠性依赖协议层接线复杂度接线少多从机共享两根线从机数量增加时 CS 线随之增加典型应用EEPROM、传感器、RTCFlash、SD 卡、显示屏、ADC6. 总结IIC 和 SPI 是 STM32F4 开发中最常用的两种串行通信协议。IIC 以接线少、带应答、支持多从机寻址见长适合低速传感器和存储芯片SPI 以高速、全双工、模式灵活见长适合对吞吐量要求较高的场景。理解两者的基础原理、掌握 STM32F4 的配置细节并根据实际需求合理选型是嵌入式开发中一项重要的基本功。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价