1. I2C 协议

本文介绍了I2C协议中如何通过ioctl函数进行设备通信,包括I2C_SLAVE设置从设备地址、I2C_SMBUS实现读写操作。详细解析了i2c_smbus_ioctl_data结构体和i2cdev_ioctl_smbus函数的工作流程,涉及不同数据类型的处理及错误检查。
摘要由CSDN通过智能技术生成
 

r = ioctl(fd, I2C_FUNCS, &funcs)是查看其功能,它最终调用algo通信方式中的functionality()函数

r = ioctl(fd, I2C_SLAVE, addr)这个函数设置要通信的从设备地址,如下:

case I2C_SLAVE:
 case I2C_SLAVE_FORCE:
  
  if ((arg > 0x3ff) ||
      (((client->flags & I2C_M_TEN) == 0) && arg > 0x7f))
   return -EINVAL;
  if (cmd == I2C_SLAVE && i2cdev_check_addr(client->adapter, arg))
   return -EBUSY;
  
  client->addr = arg;
  return 0;

 

 

ioctl(file,I2C_SMBUS,&args);实现读写,通过args

struct i2c_smbus_ioctl_data args;


struct i2c_smbus_ioctl_data {
 __u8 read_write;
 __u8 command;
 _

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值