C语言读写i2c代码
时间: 2024-10-11 09:05:17 浏览: 26
应用层读写I2C代码
在C语言中,I2C通信通常通过硬件库如mcp23017、wiringPi等或标准的Linux I2C API来操作。这里是一个简单的示例,展示了如何使用Linux的`i2c-dev.h`头文件进行基本的I2C读写操作:
```c
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/i2c-dev.h>
#define I2C_ADDR 0x40 // 设备地址
int main() {
int file;
char buffer[2] = {0}; // 存储读取的数据
int read_bytes;
// 打开I2C设备
if ((file = open("/dev/i2c-1", O_RDWR)) < 0) {
perror("Failed to open I2C device");
return -1;
}
// 设置设备地址
if (ioctl(file, I2C_SLAVE, I2C_ADDR) < 0) {
perror("Failed to set slave address");
close(file);
return -1;
}
// 写入数据
if (write(file, "Hello", 5) != 5) {
perror("Write failed");
close(file);
return -1;
}
printf("Wrote data to I2C\n");
// 读取数据
read_bytes = read(file, buffer, sizeof(buffer));
if (read_bytes > 0) {
printf("Read %d bytes: %s\n", read_bytes, buffer);
} else {
perror("Read failed");
}
// 关闭文件描述符
close(file);
return 0;
}
```
这个例子假设你有一个I2C从设备连接到I2C总线0,地址为0x40。首先打开设备,设置地址,然后写入字符串,接着读取并打印接收到的内容。
阅读全文