你好,恩智浦社区、
我正在开发一款运行基于 Yocto 的 Linux 映像的 i.MX8MP Phytech 评估板,
我正在尝试通过 I²C 连接 RRC2040 SM Bus 智能电池组。
硬件设置:
-板: Phytech i.mx8MP 评估板
-电池:RRC2040(SMBus 智能电池)
-I²C 端口:I²C3(通过外部接头连接)-预期
SMBus 地址:0x0B
-用于表示荷电状态 (RSOC) 的命令:0x0D
软件环境:
-适用于 i.mx8MP 的 Yocto 电路板支持包(未修改)
-带有 `/dev/i2c-3` 设备节点可用的 Linux 内核
-使用 `i2cdetect -y 3` 来探测总线
问题:
地址为 0x0B 的电池未出现在 `i2cdetect` 扫描中。
可以正确检测到电路板上的其他 I²C 设备。
即使以根用户身份运行,0x0B 也没有响应。
测试代码:
我还使用 `i2c-dev` 和 `i2c_smbus_read_word_data(fd, 0x0D)`测试了一个最小的 C++ 程序:
cpp
#include
#include
#include
#include
#include
#include
extern"C" { #include
int main () {
const char* dev = " /dev/i2c-3 ";
int fd = 打开(dev,O_RDWR);i
octl(fd,I2C_SLAVE,0x0B);int res = i2c_smbus_read_word_data(fd,0x0D);//RSOC 命令 std:: cou
t < < " 结果:" < < <
< std:: endl;}
kartikjva_1-1762178530944.png
因此,我尝试了其他 i2c 端口,如 /dev/i2c-0 和 /dev/i2c-1,但都不起作用。
我的硬件连接是正确的。
你好,
你的测试结果证明总线工作正常,电池组也能正常工作,你有关于如何连接的简单示意图吗?
您是否检查过电池组是否需要驱动程序才能正常工作?
如果板可能遇到任何硬件问题,我建议联系 phytec。
致以最崇高的敬意/问候,
Aldo。
我们测试了另一个传感器,即 DS3231,在 Phytec i.MX8MP 板上可以正确检测到其 I²C 地址。
我们还在其他平台(如 Arduino、STM32 和 Raspberry Pi)上对电池组进行了测试,以验证其工作正常。但是,在 Phytec i.MX8MP 板上未检测到它。
此外,我们确认使用的上拉电阻为 10kΩ。
您好,
这可能是电池组造成的,可能需要一些额外的连接,我建议先检查一下。
另外,如果可能的话,我建议尝试连接另一个 I2C 设备,以确保 I2C 通信正常运行。
致以最崇高的敬意/问候,
Aldo。