STM32入门之I2C总线应用详解(附LM75A温度传感器实战) | 零基础入门STM32第四十九步
主题 | 内容 | 教学目的/扩展视频 |
---|---|---|
I2C总线 | 电路原理,跳线设置,I2C协议分析。驱动程序与调用。 | 熟悉I2C总线协议,熟练调用。 |
师从洋桃电子,杜洋老师
📑文章目录
- 一、I2C总线技术解析
- 1.1 什么是I2C总线?
- 1.2 电路连接规范
- 二、I2C应用层协议解析
- 2.1 通信时序流程
- 2.2 器件地址分配
- 三、LM75A温度传感器深度解析
- 3.1 内部结构原理
- 3.2 温度数据格式
- 四、温度读取实战流程
- 4.1 操作步骤图解
- 4.2 数据处理技巧
- 五、典型应用场景
- 六、总结与展望
- 七、相关资源
▲ 回顾上期🔍STM32功能介绍—I2C和USART接口 | 零基础入门STM32第十步
一、I2C总线技术解析
1.1 什么是I2C总线?
I2C(Inter-Integrated Circuit)总线是飞利浦公司开发的同步串行通信协议,具有以下核心特点:
- 两线制通信:仅需SCL(时钟线)和SDA(数据线)
- 多主从架构:支持多个主设备与从设备(最多127个)
- 标准速率:100kHz(标准模式),400kHz(快速模式)
- 地址寻址:每个设备拥有唯一7位地址
▲新版I2C范围中新增了10位地址模式,最大器件地址数量可达1023个。
1.2 电路连接规范

关键连接要点:
- 上拉电阻:1kΩ~10kΩ(推荐4.7kΩ)
- 确保总线空闲时为高电平
- 电阻值影响上升沿时间
- 开漏输出:所有设备必须配置为开漏模式
- 共地连接:所有设备必须共地
- 布线限制:总线长度建议不超过2米
二、I2C应用层协议解析
2.1 通信时序流程
▲ 🔍I2C总线规范(中文)
2.2 器件地址分配
设备类型 | 基础地址 | 可配置位 | 完整地址示例 |
---|---|---|---|
LM75A温度传感器 | 0x48 | A2A1A0 | 0x9E(写地址) |
OLED显示屏 | 0x3C | SA0位 | 0x78 |
EEPROM存储器 | 0x50 | A2A1A0 | 0xB2 |
▲ 🔍LM75(温度传感器)
三、LM75A温度传感器深度解析
3.1 内部结构原理

主要特性:
- 测量范围:-55℃~+125℃
- 精度:±2℃(-25℃~+100℃)
- 分辨率:0.125℃
- 内置9位ADC
3.2 温度数据格式
Temp 数据
11 位二进制数(补码) | 3 位十六进制 | 十进制值 | 温度值(℃) |
---|---|---|---|
0111 1111 000 | 3F8h | 1016 | +127.000℃ |
0111 1110 111 | 3F7h | 1015 | +126.875℃ |
0111 1110 001 | 3F1h | 1009 | +126.125℃ |
0111 1101 000 | 3E8h | 1000 | +125.000℃ |
0001 1001 000 | 0C8h | 200 | +25.000℃ |
0000 0000 001 | 001h | 1 | +0.125℃ |
0000 0000 000 | 00h | 0 | 0.000℃ |
1111 1111 111 | 7FFh | -1 | -0.125℃ |
1110 0111 000 | 738h | -200 | -25.000℃ |
1100 1001 001 | 649h | -439 | -54.875℃ |
1100 1001 000 | 648h | -440 | -55.000℃ |
MSB字节:
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | => 整数部分
LSB字节:
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | => 小数部分(0.125℃/bit)
示例数据解析:
- 原始数据:0xC890(二进制1100100010010000)
- 温度值 = 11001000.10010000b
= 200.125℃(需转换为补码)
四、温度读取实战流程
4.1 操作步骤图解
4.2 数据处理技巧
- 补码转换:最高位为符号位
- 正温度:直接转换
- 负温度:取反加1
- 精度处理:
float temp = (raw_data >> 5) * 0.125;
- 滤波处理:建议取多次平均值
▲ 完整工程代码示例⏬温度传感器数码管显示程序
五、典型应用场景
常见问题解决方案:
- 总线锁死:重新初始化I2C
- 地址冲突:修改从设备地址选择位
- 波形畸变:减小上拉电阻值
- 通信失败:检查共地连接
六、总结与展望
I2C总线作为经典的双线制通信协议,在STM32开发中具有重要地位。掌握以下要点可提升开发效率:
- 正确配置GPIO为复用开漏模式
- 合理选择上拉电阻值
- 准确理解器件地址分配规则
- 熟练掌握温度传感器的数据解析方法
七、相关资源
[1] 洋桃电子B站课程-STM32入门100步
[2] STM32F103xx官方数据手册
[3] STM32F103X8-B数据手册(中文)
[4] STM32F103固件函数库用户手册(中文)
[5] I2C总线规范(中文)
[6] LM75(温度传感器)数据手册+编程说明+应用
[7] 温度传感器数码管显示程序
💬 技术讨论(请在评论区留言~)
📌 下期预告:下一期将探讨I2C驱动程序分析,欢迎持续关注!
点击查阅🔍往期【STM32专栏】文章
版权声明:本文采用[CC BY-NC-SA 4.0]协议,转载请注明来源
实测开发版:洋桃1号开发版(基于STM32F103C8T6)
更新日志:
- v1.0 初始版本(2025-03-06)