gpt4 book ai didi

linux - 写入 I2C I/O 设备

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:09 25 4
gpt4 key购买 nike

我正在尝试与 Bosch Sensortec BNO055 传感器通话。我正在使用穿梭板。 VDD和VDDIO接3.3V,在17和18脚分别是SDA和SCL。这些连接到嵌入式 linux 板。另一个传感器在同一条总线上,我可以在示波器上看到它的值。我有以下代码:

BNO055_RETURN_FUNCTION_TYPE Bno055I2cBusWrite(u8 dev_addr, u8 reg_addr, u8* reg_data, u8 wr_len){
//According to https://www.kernel.org/doc/Documentation/i2c/dev-interface

int file = 0;
char filename[20];
snprintf(filename, 19, "/dev/i2c-%d", ADAPTER_NR);

if(open(filename, O_RDWR) < 0){ /*error*/ }
if(ioctl(file, I2C_SLAVE, dev_addr) < 0){ /*error*/ }

char buf[1 + wr_len];
buf[0] = reg_addr;
memcpy(&buf[1], reg_data, wr_len);

int written_bytes = 0;
if(write(file, buf, wr_len) != wr_len){
printf("Error BusWrite-write: %s.\n", strerror(errno));
exit(-1);
}
}

前两个 if 语句顺利通过。写操作失败。在示波器上,我看到了正确的设备地址(然后未被确认)。我做了什么:

当它的设备地址出现在线路上时,我的传感器只是不确认。

  • ioctl(file, I2C_SLAVE, dev_addr) 到底做了什么?这会在 I2C 总线上发送设备地址吗?
  • linuxkernel 自己发送设备地址吗?我希望如此。

恢复:

  • 有人可以指出正确的方向让传感器使用react吗?

最佳答案

嗯……似乎是连接示波器的电线干扰太大了。驱动程序在写入或读取时发送设备地址,以回答我自己的问题。

关于linux - 写入 I2C I/O 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29150143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com