IIC协议_符号标志

欢迎转载和指导,然后再吐槽!!!

 

重要的符号标志

——————————————

S          1位) :开始位

P           (1 )  :停止位

Rd/Wr       (1 )  :读写位,读,它就等于1,写,它就等于0

A,NA         1位) :应答和非应答位

Addr       7位) I2C 7位地址。注意此地址也可以扩展到10位地址。

Comm        8位) :命令字节,就是一个数据用来选择设备上面的一个寄存器

Data           8位) :普通数据字节。如果是16位数据,我也会写高数据位和低数据位

Count         8位) :  包含块操作长度的数据字节

[. .]                :   I2C设备的数据发送,与之对应的,主控制器数据的发送

 

 

 

简单发送事务

————————————————

这个相当于i2c_master_send

 

S  Addr  Wr  [A]  Data  [A]  Data  [A]  ...  [A]  Data  [A]  P

 

简单接收事务

————————————————

这个就相当于i2c_master_recv

 

       S  Addr  Rd  [A]  [Data]  A  [Data]  A  ...  A [ Data]  NA  P

 

组合事务传输

————————————————

这个就相当于i2c_transfer

 

他们就像上面说的事务那样,但是不是一个停止位P,而是接着一个开始位S发送,然后事务继续进行。一个字节写后面跟着一个字节读得例子:

      

      S  Addr  Rd  [A]  [Data]  NA  S  Addr  Wr  [A]  Data  [A]  P

 

改进的事务传输

————————————————

我们发现一些I2C 设备需要进入如下的修改。

 

       标志 I2C_M_NOSTART

              在一个组合传输中,在某些点上,‘S Addr Wr/Rd [A]’不会产生。例如,在第二部分消息设置I2C_M_NOSTART,产生如下所示的东西:

              S  Addr  Rd  [A]  [Data]  NA  Data  [A]  P

        如果你在第一个部分消息中设置了I2C_M_NOSTART变量,我们不会产生地址,但是会产生开始位S。这个可能会是你适配器上面的client设备产生混乱,所以不要试。

 

       标志 I2C_M_REV_DIR_ADDR

       这个用来切换Rd/Wr标志,也就是说,当你想写的时候,你需要发送Rd而不是Wr,反之亦然。例如:

       S  Addr  Rd  [A]  Data [A]  Data  [A]  ...  [A]  Data  [A]  P

 

标志 I2C_M_IGNORE_NAK

如果从client设备传回的是一个[NA]的话,那么正常的消息就会被马上打断。设置这个的话,就把所有[NA]当做[A]来处理,那么所有的消息继续发送。

 

标志I2C_M_NO_RD_ACK

在读消息中,master控制器的A/NA会被跳过。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值