i2c_msg一些标志的解释

转载 2012年03月24日 17:21:05
I2C_M_IGNORE_NAK:
      设置这个标志意味当前i2c_msg忽略I2C器件的ack和nack信号。
I2C_M_NOSTART:      
      设置这个标志意味当前i2c_msg不发送start信号。注意,其实调用bit_xfer的一开始就已经发了start信号了(程序第10行),这个标记无非就是标志是否发送地址第18行。其次,如果一个i2c_msg没有定义I2C_M_NOSTART而且又不是msgs序列里的第一个i2c_msg,则回发送重复start信号,我想这就是这个标志起这个名的原因。我们可以猜想,
      1.msgs序列第一个数据必须是地址,同时必须不定义这个标志位
      2.在进行读数据,要从写操作转变为读操作时,会发重复start信号和器件地址时,必须不定义这个标志位
      3.其它情况下一的i2c_msg必须定义这个标志
      以上只是我看完这个函数的理解,不一定正确。同时1和2总结下来就是发器件地址(注意,是器件地址,不是像EEPROM那样的EEPROM地址,这个地址是当数据发的)时会不设置I2C_M_NOSTART, 发数据时就设置I2C_M_NOSTART这个标志。
I2C_M_NO_RD_ACK:
      这个标识表示在正行读操作时不去ACK,我不知道其它芯片如果,如果是AT24C04则一定不能设这个标志位了。
(下面三个标志为均为bit_doAddress函数使用,结合上面的说明,也就是这时I2C_M_NOSTART一定没有设置。)
I2C_M_RD:
      表示这是一个读操作,默认是把相应的位置1
I2C_M_REV_DIR_ADDR:
      表示把读写标志位反转,也就是读是把相应位置0
I2C_M_TEN:
     表示这个器件的器件地址是10Bit的。一定要搞清,这是器件地址,不是指EEPROM的ROM地址。24C02等芯片真正的器件地址只有4位永远有效(0xA),低4位用来放其它东西了(根据容量有可能是器件地址的低3位,或ROM地址的高3位)。也是说,无论什么容量,这类器件的地址只是器件地址我们只选7位模式(内核只区分10位模式和其它模式)

相关文章推荐

i2c 编程接口

1、通信接口 i2c发送或者接收一次数据都以数据包 struct i2c_msg 封装 struct i2c_msg { __u16 addr; // 从机地址 __u16 fla...

Linux I2C驱动分析与实现(一)

====本文系本站原创,欢迎转载! 转载请注明出处:http://blog.csdn.net/yyplc==== 本文基于内核版本linux-2.6.30.4分析. Linux中i2c子系统框...
  • yyplc
  • yyplc
  • 2012年04月11日 09:33
  • 7124

关于i2c_msg的一些标志位

由于公司的需要,在写I2C程序,原来从头到尾自己写一个IIC驱动是一件很简单的事情,但想完美的我还是想把我的驱动和内核的I2C子系统连接起来,I2C本身很简单,S3C2410无操作系统不用300行就搞...

android 下linux的I2C 读写函数实例

******************************************************* 功能: 读取从机数据 每个读操作用两条i2c_msg组成,第1条消息用于发送...

I2C驱动学习笔记

一、I2C基本知识 i2c总线是philips公司推出的一种串行总线。是具备多主机系统所需的,包括总线裁决和高低带器件同步功能的高性能串行总线。 i2c总线有两根双向信号线,一根是数据线SDA,另...

linux gpio模拟i2c的使用/用GPIO模拟I2C总线-3

这个结构专门用于数据传输相关的addr为I2C设备地址,flags为一些标志位,len为数据的长度,buf为数据。这里宏定义的一些标志还是需要了解一下。 I2C_M_TEN表示10位设备地址 I2...

我对linux理解之i2c 二

我们下面开始分析i2c的通信,即读写过程。 我们先看读函数,对应i2c core中的i2c_master_recv: int i2c_master_recv(struct i2c_client *...
  • sadamoo
  • sadamoo
  • 2012年09月11日 17:26
  • 6793

i2c_master_recv()/i2c_msg {}

inti2c_master_recv(struct i2c_client *client, char *buf ,int count)   int i2c_master_recv(struct ...

Linux I2C read eeprom 从应用层看系统

转载地址:http://www.zhimengzhe.com/bianchengjiaocheng/qitabiancheng/302708.html Linux 操作I2C从设备有两种不同的方法。...
  • kunkliu
  • kunkliu
  • 2017年10月13日 17:52
  • 42

i2c驱动之调用ioctl函数进行读写at24c08

在linux驱动中/drivers/i2c/目录下有i2c-dev.c提供了I2C设备的通用驱动,实现了read(),write(),ioctl等函数,不过这里的read()和write()函数只能对...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:i2c_msg一些标志的解释
举报原因:
原因补充:

(最多只允许输入30个字)