嵌入式Linux如何用C读写i2c
时间: 2024-05-08 07:16:14 浏览: 185
i2c.c.rar_I2C C程序_i2c_i2c.c_i2c.c 8051_i2c读写
在嵌入式Linux中,可以使用C语言通过i2c总线进行读写操作。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/i2c-dev.h>
int main()
{
int file;
char *filename = "/dev/i2c-1";
int addr = 0x68; // i2c设备地址
char buf[2];
// 打开i2c设备文件
if ((file = open(filename, O_RDWR)) < 0)
{
printf("Failed to open the bus.\n");
return 1;
}
// 设置i2c设备地址
if (ioctl(file, I2C_SLAVE, addr) < 0)
{
printf("Failed to acquire bus access and/or talk to slave.\n");
return 1;
}
// 写入数据
buf[0] = 0x00; // 寄存器地址
buf[1] = 0x01; // 写入的数据
if (write(file, buf, 2) != 2)
{
printf("Failed to write to the i2c bus.\n");
return 1;
}
// 读取数据
buf[0] = 0x00; // 寄存器地址
if (write(file, buf, 1) != 1)
{
printf("Failed to write to the i2c bus.\n");
return 1;
}
if (read(file, buf, 1) != 1)
{
printf("Failed to read from the i2c bus.\n");
return 1;
}
printf("Data read from the device: %d\n", buf[0]);
// 关闭i2c设备文件
close(file);
return 0;
}
```
在上面的示例中,首先打开i2c设备文件,然后设置i2c设备地址。接着,写入数据和读取数据都需要先设置寄存器地址,然后进行读写操作。最后关闭i2c设备文件。需要注意的是,i2c设备地址和寄存器地址需要根据具体的硬件进行设置。
阅读全文