当前位置: 首页 > news >正文

IIC通信

IIC简介

image

硬件特点

  • 引脚:STM32 的 I2C 接口有两根信号线,分别是 SDA(Serial Data,串行数据线)用于传输数据,SCL(Serial Clock,串行时钟线)用于同步数据传输的时钟信号。 不同型号的 STM32,I2C 引脚对应的 GPIO 口不同,使用时需要进行正确的引脚复用配置。
  • 设备连接:I2C 总线支持多设备连接,总线上的设备分为主机和从机。主机负责发起和控制数据传输,从机在接收到主机的寻址后进行数据的接收或发送。在同一时刻,总线上只能有一个主机进行通信。设备之间通过上拉电阻连接到电源,保证总线在空闲状态下为高电平。

软件编程

在 STM32 上使用 I2C,需要进行初始化配置,包括设置 I2C 的工作模式(标准模式或快速模式等)、波特率、引脚复用等;然后根据具体的通信需求,编写数据发送和接收的函数,如向从设备写入数据、从从设备读取数据等 。可以使用 STM32 官方提供的标准库函数,或者基于 HAL 库、LL 库进行编程。

通信协议

  • 起始和停止信号:主机通过在 SCL 为高电平时,拉低 SDA 信号产生起始信号,标志着一次通信的开始;在 SCL 为高电平时,拉高 SDA 信号产生停止信号,表示通信结束。
  • 设备寻址:起始信号之后,主机发送一个从机地址字节,共 7 位地址位和 1 位读写控制位(0 表示写操作,1 表示读操作),用于选择要通信的从机设备并指定操作类型。
  • 数据传输:数据以字节为单位进行传输,每个字节后面都跟随一个应答位(ACK)。发送方在发送完 8 位数据后,释放 SDA 线,接收方在接收到数据后,通过拉低 SDA 线来表示应答(ACK = 0),若接收方不响应则保持 SDA 为高电平(非应答,NACK = 1) 。
  • 时钟同步:SCL 线由主机控制,用于同步数据传输的节奏,数据在 SCL 的高电平期间被采样,在低电平期间可以进行变化。

应用场景

  • 传感器数据采集:许多传感器如温度传感器、加速度传感器、陀螺仪等都支持 I2C 接口。STM32 通过 I2C 可以方便地读取这些传感器的数据,例如在智能手环中,STM32 通过 I2C 与加速度传感器连接,获取运动数据。
  • EEPROM 数据读写:EEPROM(电可擦除可编程只读存储器)常用于存储一些掉电不丢失的配置信息或数据,STM32 可以使用 I2C 接口对 EEPROM 进行读写操作,如存储设备的校准参数、用户设置等。
  • 显示模块控制:部分 OLED、LCD 显示模块也支持 I2C 通信,STM32 通过 I2C 发送指令和数据,控制显示模块显示相关信息,如在小型电子设备中,用于显示时间、电量等。
http://www.sczhlp.com/news/4831/

相关文章:

  • webstorm2025版本激活教程
  • 二叉搜索树
  • iOS安全和逆向系列教程 第20篇:Objective-C运行时机制深度解析与Hook技术 - 教程
  • 虚拟机器人如何理解自然语言指令
  • 20250803
  • 不同vlan间通信的两种方式
  • 2025/8/3 总结
  • 牛客周赛 Round 103
  • 8.2赛时复盘
  • 布料模拟插件学习
  • PostgreSQL-14主备切换
  • 实用指南:python学智能算法(二十五)|SVM-拉格朗日乘数法理解
  • 84
  • Day33
  • 3.1 if语句
  • 3.2 while循环
  • http,socket,WebSocket,RPC之间的联系和区别
  • 3.3 for循环
  • C++ 中 inline 与内联优化
  • 安卓加固脱壳
  • [EC Final 2022] Binary String 题解
  • 清橙基础练习之课程15
  • go学习笔记:log.Fatal的含义和作用是什么?
  • C++高性能:优化代码运行效率的艺术1 C++简介
  • 清橙基础练习之动态规划5
  • 2025.8.3总结 - A
  • Kubernetes v1.33:原地调整 Pod 资源特性升级为 Beta
  • 六爻01
  • Trail of Bits深度参与CSAW网络安全竞赛:五项CTF挑战详解