IIC

物理总线

I2C总线由两条线路组成,SCL和SDA。SCL是用来将所有数据传输同步的时钟线路,而SDA是实际的数据线路。还需要第三条线路,即普通接地,不过通常不被提及。由于两条线路都是“开漏”驱动器,它们都需要到电源线路的上拉电阻,这样的话,输出在无运行期间保持在高电平。对于MSP MCU应用来说,电源电压应该与MSP MCU的Vcc相匹配。传统上,上拉电阻器的值为4.7kΩ,不过这个值的范围可以在少于1kΩ到10kΩ之间,取决于所使用的从器件。要获得正确的上拉电阻值,请参考器件数据表。多个从器件可以共用一条I2C总线,单个上拉电阻器

I2C软件协议

不论何种应用,每个支持I2C器件都需要遵守针对全部I2C器件所定义的共同软件协议,其一般结构始终保持不变。通信从启动序列开始,并在一个停止序列中结束,两个序列之间有一个8位数据传输序列。启动位之后是从地址,通常为7位(虽然很少情况下也使用10位寻址)。这7个数据位被放置在一个字节的上7位,而LSB(最低有效位)被用来存储读/写 (R/W) 位。这个位让从器件知道是对其进行写入操作(位值为0),还是读取操作(位值为1)。对一个写入操作,操作序列如下:

  1. 发送启动序列
  2. 发送从地址,其中R/W位为低电平
  3. 发送寄存器数
  4. 发送数据字节
  5. 发送停止序列

读取操作序列与写入操作十分相似,除了它不发送数据字节,而是重新发送启动序列(被称为一个重复启动)和从地址(不过此时,对于读取操作来说,R/W位为高电平),这样的话,它可以接收数据,而不是发送数据。这个操作在主器件发出典型停止序列后结束。下面是读取操作序列:

  1. 发送启动序列
  2. 发送从地址,其中R/W位为低电平
  3. 发送寄存器数
  4. 再次发出启动序列(重复启动)
  5. 发出从地址,其中R/W位为高电平
  6. 读取数据字节
  7. 发出停止序列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值