如何将Raspberry Pi 4B设置为I2C从机,解决i2cdetect无检测结果问题
问题根因
你运行i2cdetect -y 1扫不到已配置的I2C从机地址,核心原因如下:
pigpio的bsc_i2c功能启用的是树莓派4B的BSC从模式接口,默认绑定I2C0总线,对应引脚为BCM编号的GPIO0(SDA0)、GPIO1(SCL0)。而i2cdetect -y 1扫描的是默认用作主机的I2C1总线,对应引脚为GPIO2(SDA1)、GPIO3(SCL1),总线不匹配自然扫不到设备。
排查&解决步骤
- 先确认pigpio服务已正常启动,运行代码前执行命令:
sudo systemctl start pigpiod - 用sudo权限运行你的从机配置Python代码,避免硬件操作权限不足导致配置失效:
import pigpio pi = None slave_addr = 0x13 def i2cInterrupt(): global pi global slave_addr status, bytes_read, data = pi.bsc_i2c(slave_addr) if bytes_read: print(data) pi = pigpio.pi() int_handler = pi.event_callback(pigpio.EVENT_BSC, i2cInterrupt) pi.bsc_i2c(slave_addr) - 启用树莓派I2C0总线:编辑
/boot/firmware/config.txt(旧版系统为/boot/config.txt),添加如下配置后重启设备:
以上配置同时关闭了GPIO0/GPIO1的默认EEPROM、POE风扇功能占用,避免引脚冲突。dtparam=i2c_vc=on force_eeprom_read=0 disable_poe_fan=1 - 硬件接线调整:将PSoC的I2C SDA、SCL引脚接到树莓派的GPIO0、GPIO1上,确保两个设备共地。
- 扫描对应总线验证:运行以下命令即可扫到你配置的0x13从机地址:
i2cdetect -y 0
内容的提问来源于stack exchange,提问作者Jello
相关产品推荐
相关产品推荐

