打印

I2C接口经验总结

[复制链接]
1551|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dfsa|  楼主 | 2012-5-8 18:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、DM642的I2C接口及I2C协议简单介绍
  TMS320DM642片上带有一个I2C接口SDA(D3)和SCL(E4),DM642通过I2C接口与外部I2C外设通信,如I2C EEPROM、I2C视频解/编码器等。I2C通信的数据传输率一般包括100k和400k两种,支持多机通信,但同一时刻只允许存在一个主控设备,被控设备均使用唯一的地址标识符,I2C通信具有完备的通信协议,发送START起始位启动通信,获得总线控制权,发送STOP位结束通信,释放总线控制权。
  发送START位后再发送被控设备的地址,其中高7位为地址码,第0位为读/写控制标志RW,RW=0表示向被控设备写数据,RW=1表示从被控设备读数据。
  I2C协议的读写操作可以概括如下步骤:
  写操作:
  1.当主控设备检测到I2C总线处于空闲状态时,首先发送S位获得I2C总线控制权;
  2.发送寻址字节(7位地址位+1位读写控制位0);
  3.主控设备等待被控设备发送应答位(ACK);
  4.主控设备接收到ACK位后开始发送第1个数据字节;
  5.主控设备等待被控设备发送的应答位,如果应答位是ACK,则继续发送数据,如果应答位是NACK,停止发送数据;
  6.主控设备发送完全部数据后,发送一个STOP停止位,接收I2C通信释放总线控制权。
  读操作:
  1.主控设备检测到I2C总线空闲时,发送S起始位;
  2.发送地址字节(7位地址位+1位读写控制位1);
  3.被寻址的设备发送应答信号ACK;
  4.主控设备接收到ACK后释放数据总线,开始接收第1个数据字节;
  5.主控设备接收到数据后,发送ACK应答信号表示继续传送数据,发送NACK信号表示传送数据结束;
  6.主控设备接收完全部数据后,发送一个STOP停止位,接收I2C通信。
  二、分析视频解码芯片TVP5150A和视频编码芯片SAA7121H的设备地址
  1.TVP5150A的设备地址由I2CSEL引脚所接的上拉电阻或下拉电阻确定,I2CSEL引脚的状态与设备地址的映射关系如下:
  引脚状态 写操作 读操作
  0 0xB8 0xB9
  1 0xBA 0xBB
  2.SAA7121H的设备地址由SA引脚确定,该引脚为低电平时,设备地址为0x88,该引脚为高电平时,设备地址为0x8C。
  由TVP5150A和SAA7121H设备地址可以知道,当I2CSEL或SA引脚电平确定时,设备的地址是唯一确定的!SAA7121H比较好理解唯一确定的含义,对于TVP5150A来说,若I2CSEL=1,则该设备地址可以理解为0x1011101(7位寻址模式),而写操作时最后加一位bit0=0即0x10111010=0xBA,读操作时bit0=1即0x10111011=0xBB,这就好理解为什么写操作和读操作时设备地址看起来不同了。同理,因为SAA7121H芯片,对于主机DM642来说,只有写操作,所以设备地址的最后一位bit0始终为0(8=1000和C=1100),这也是符合I2C写操作协议规定的。
  三、分析开发板对应例程代码中,表示I2C设备地址时右移一位的情况(如,addrI2C=0xBA>>1)之原因
  在阅读开发板例程代码时,之前一直有个疑问,为什么表示I2C设备地址时一定要右移一位?可以不右移这一位吗?
  查阅TMS320C6000 DSP Inter-Integrated Circuit(I2C)Module Reference Guide,8.9中有介绍I2C模式寄存器I2CMDR,第8字段扩展地址使能位,当XA=0时为7位寻址模式且地址由I2CSAR的低7位确定,当XA=1时为10位寻址模式这时地址由I2CSAR的低10位确定。默认情况下,XA=0,所以代码中addI2C=0xBA>>1右移一位是必须的,不然不能正常寻址从设备。

相关帖子

沙发
火箭球迷| | 2012-5-8 18:37 | 只看该作者
值得借鉴的一些经验

使用特权

评论回复
板凳
hsbjb| | 2012-5-8 18:45 | 只看该作者
很实用的一些经验总结

使用特权

评论回复
地板
sinadz| | 2012-5-8 20:02 | 只看该作者
经验总结的很好,LZ可以专门开一个博客

使用特权

评论回复
5
fannaowutuobang| | 2012-5-9 13:35 | 只看该作者
多谢了,最近正在研究这方面。

使用特权

评论回复
6
hxy6951| | 2012-5-9 16:46 | 只看该作者
mark

使用特权

评论回复
7
txcy| | 2012-5-9 18:38 | 只看该作者
很不错的 I2C接口经验

使用特权

评论回复
8
firstblood| | 2012-5-10 10:07 | 只看该作者
总结的很好,值得借鉴,学习了

使用特权

评论回复
9
txcy| | 2012-5-12 09:57 | 只看该作者
不错的一些经验

使用特权

评论回复
10
shenmu2012| | 2012-5-14 15:14 | 只看该作者
借鉴学习下,谢谢楼主的分享

使用特权

评论回复
11
yybj| | 2012-5-14 19:13 | 只看该作者
很不错的I2C接口经验

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2404

帖子

2

粉丝