关于i2c_msg的一些标志位

本文主要介绍了I2C子系统中的master_xfer方法和i2c_msg结构体中的标志位,包括I2C_M_IGNORE_NAK、I2C_M_NOSTART、I2C_M_NO_RD_ACK等,以及它们在I2C通信过程中的作用和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于公司的需要,在写I2C程序,原来从头到尾自己写一个IIC驱动是一件很简单的事情,但想完美的我还是想把我的驱动和内核的I2C子系统连接起 来,I2C本身很简单,S3C2410无操作系统不用300行就搞定,但I2C子系统却把这么简单的代码变得非常庞大,非常难懂,结构错综复杂。
      关于I2C子系统,我转载的文章Linux I2C核心、总线与设备驱动[转] 已经说得很请楚,这里只作一些补充。

一、master_xfer,以及i2c_msg标志位
      其实抛开子系编本身其它部份,实现I2C的主要作用代码就是algorithm里的master_xfer方法。这个方法就是我们无操作系统 时的的I2C读写函数(它用参数来区分读和写)。分析这些代码,最好是读内核的i2c-algo-bit.c文件,这个文件就是用模拟的方法来实现I2C 总线,因为不和其它I2C控制芯片相关,所以比较好理解。i2c-algo-bit.c其中的master_xfer函数bit_xfer函数如下:

 1 static   int  bit_xfer( struct  i2c_adapter  * i2c_adap,
 2              struct  i2c_msg msgs[],  int  num)
 3 {
 4      struct  i2c_msg  * pmsg;
 5      struct  i2c_algo_bit_data  * adap  =  i2c_adap -> algo_data;
 6     
 7      int  i,ret;
 8     unsigned  short  nak_ok;
 9
10     i2c_start(adap);
11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值