树莓派SMBus实战:用Python精准操控EEPROM的硬核指南
当你的树莓派需要记住一些重要数据——比如传感器校准参数、设备配置信息或者简单的键值对——AT24C系列EEPROM芯片是个可靠的选择。但要让这块小芯片乖乖听话,你得先搞定SMBus协议那些"严苛"的规矩。本文将带你用Python的smbus2库,从硬件连线的物理层一路杀到数据校验的应用层,完整实现EEPROM的读写控制。
1. 硬件准备:当树莓派遇见AT24Cxx
AT24C32是常见的I2C接口EEPROM芯片,32Kbit容量(相当于4KB),足够存储大量配置数据。硬件连接简单到令人发指:
- 树莓派引脚:
- 3.3V → EEPROM VCC
- GND → EEPROM GND
- GPIO2 (SDA) → EEPROM SDA
- GPIO3 (SCL) → EEPROM SCL
注意:树莓派的I2C引脚需要上拉电阻,但大多数EEPROM模块已经内置了4.7kΩ电阻,直接连接即可。
在通电前,务必确认EEPROM的地址引脚(A0-A2)连接方式。以AT24C32为例,其7位I2C地址格式为0b1010(A2)(A1)(A0)。如果所有地址引脚接地,设备地址就是0x50(左移一位后为0xA0)。
python复制# 地址验证代码片段
def check_eeprom_address(bus):
for addr in range(0x50, 0x58): # AT24Cxx可能的地址范围
try:
bus.write_quick(addr)
return addr
except IOError:
continue
raise ValueError("未检测到EEPROM设备")
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 软件环境配置:从内核到Python层
树莓派默认禁用I2C接口,需要手动开启:
bash复制# 终端操作
sudo raspi-config
# 选择 Interfacing Options → I2C → Enable
接着安装必要的Python库:
bas复制
