i2ctransfer -f -y 8 w64@x68 0x32 0x2 0x00 0x00 转换成 i2c_write() 代码
时间: 2024-03-09 14:45:37 浏览: 105
code for I2C
以下是将该命令转换成 `i2c_write()` 函数的代码:
```c
#include <linux/i2c-dev.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
int i2c_write(int bus, int addr, int reg, char *buf, int len) {
char filename[20];
snprintf(filename, 19, "/dev/i2c-%d", bus);
int file = open(filename, O_RDWR);
if (file < 0) {
perror("Failed to open the bus.");
return -1;
}
if (ioctl(file, I2C_SLAVE, addr) < 0) {
perror("Failed to select the device.");
return -1;
}
if (write(file, ®, 1) != 1) {
perror("Failed to write to the register.");
return -1;
}
if (write(file, buf, len) != len) {
perror("Failed to write to the device.");
return -1;
}
close(file);
return 0;
}
int main(void) {
int bus = 8;
int addr = 0x68;
int reg = 0x32;
char buf[2] = {0x00, 0x00};
i2c_write(bus, addr, reg, buf, 2);
return 0;
}
```
以上代码将该命令转换成了 `i2c_write()` 函数,可以直接调用该函数进行 I2C 数据传输。需要注意的是,该函数的第 4 个参数 `buf` 是要发送的数据的指针,第 5 个参数 `len` 是要发送的数据的长度。
阅读全文