IIC学习(一):documentation(二)

本文档描述i2c协议。

 

关键符号

==============

S     (1 bit) : Start bit(起始位)

P     (1 bit) : Stop bit(停止位)

Rd/Wr (1 bit) : Read/Write bit. Rd equals 1, Wr equals 0.(读写位)

A, NA (1 bit) : Accept and reverse accept bit. (回复位)

Addr  (7 bits):I2C 7位地址。注意,这可以像往常一样扩展到获取10位I2C地址

Comm  (8 bits):命令字节,通常选择设备上的寄存器的数据字节。

Data  (8 bits):一个普通数据字节。Sometimes, I write DataLow, DataHigh for 16 bit data.

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

 

简单发送
======================

这对应于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

 

混合传输

====================

它们与上述事务一样,但不是发送停止位Pa start bit S,而是继续发送事务。字节读取的一个示例,后跟字节写入

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

 

修改的传输

=====================

我们发现一些I2C设备需要进行以下修改:

  1. 标志I2C_M_NOSTART:

在混合传输中,有时没有 'S Addr Wr/Rd [A]'。例如,在第二条部分消息上设置I2C_M_NOSTART生成如下内容:

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

如果为第一条部分消息设置I2C_M_NOSTART变量,我们不生成Addr,但生成开始位 S。这将可能把总线的其他

client都弄糊涂了,所以不要试着这样做。

     2.标志I2C_M_REV_DIR_ADDR

这将切换Rd/Wr标志。也就是说,如果你做一个写操作,但是需要发出一个Rd而不是Wr,反之亦然你要设置这个标志。例如:

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

    3.标志I2C_M_IGNORE_NAK

如果client有NA时,正常消息传输会被打断,设置这个标志会认为Na为A,消息就会正常传输。

These messages may still fail to SCL lo->hi timeout.

     4.标志I2C_M_NO_RD_ACK

在已读消息中,跳过主a/NA位。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值