ZBLOG

Linux内核读写I2C从设备寄存器的示例

以下是一个基于Linux内核的读写I2C从设备寄存器的示例代码:

#include <linux/i2c-dev.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

#define I2C_DEV "/dev/i2c-1"   // I2C设备文件路径
#define SLAVE_ADDR 0x50        // 从设备地址

int main() {
    int i2c_fd;
    unsigned char buf[2];

    // 打开I2C设备文件
    if ((i2c_fd = open(I2C_DEV, O_RDWR)) < 0) {
        perror("Failed to open I2C device");
        return -1;
    }

    // 设置从设备地址
    if (ioctl(i2c_fd, I2C_SLAVE, SLAVE_ADDR) < 0) {
        perror("Failed to set I2C slave address");
        close(i2c_fd);
        return -1;
    }

    // 向指定寄存器写入数据
    buf[0] = 0x10;      // 寄存器地址
    buf[1] = 0xAB;      // 写入的数据

    if (write(i2c_fd, buf, 2) != 2) {
        perror("Failed to write to register");
        close(i2c_fd);
        return -1;
    }

    // 从指定寄存器读取数据
    buf[0] = 0x10;      // 寄存器地址

    if (write(i2c_fd, &buf[0], 1) != 1) {
        perror("Failed to write register address");
        close(i2c_fd);
        return -1;
    }

    if (read(i2c_fd, &buf[1], 1) != 1) {
        perror("Failed to read from register");
        close(i2c_fd);
        return -1;
    }

    printf("Read data: 0x%02X\n", buf[1]);

    // 关闭I2C设备文件
    close(i2c_fd);

    return 0;
}

以上代码演示了如何打开I2C设备文件,设置从设备地址,以及读写寄存器的操作。请根据实际情况修改I2C_DEVSLAVE_ADDR的值,并适配到您的项目中。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://sdn.0voice.com/?id=1767

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?