总结:linux驱动之I2C至少四种读写方法

    总结在linux环境下四种读写I2C设备的方法:


一:读写/dev/i2c-x设备结点

    /dev/i2c-x设备结点对应的驱动文件为内核目录drivers/i2c下自带的i2c-dev.c文件,通读此文件可以发现它的工作流程。

 1、通过register_chrdev注册字符设备结点

  2、通过class_create在sysfs下创建对应的class结点

  3、利用bus_register_nofifier对I2C总线添加通知链,在有适配器加入或删除时调用相应的处理函数

  4、通过I2C核心函数i2c_for_each_dev循环遍历I2C总线上的设备,每找到一个设备便执行i2cdev_attach_adapter函数

  5、在i2cdev_attach_adapter函数中会首先判断此设备是否为适配器,如果是,则通过device_create在/dev目录下生成相应的结点,名称为i2c-x,其中x为第几个适配器

  6、在用户空间利用open("/dev/i2c-x",O_RDWR)操作相应结点时,会为操作此适配器的每一个用户创建一个i2c_client,i2c_client会通过client->adapter = adapter和file->private_data = client关联对应的适配器和操作文件

  7、则在用户空间通过read/write函数操作设备时驱动通过struct i2c_client *client = file->private_data;获取到适配器结构,继而通过调用I2C核心函数i2c_mater_send/i2c_master_recv,最终调用到具体的适配器发送/接收数据函数

    通过此方法操作I2C设备时需注意在通过open打开设备结点后,需通过ioctl I2C_SLAVE函数设置设备地址,之后才可通过read/write函数对设备进行操作

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值