打印

DM642的一点IIC接口总结

[复制链接]
4846|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
figo20042005|  楼主 | 2012-8-1 14:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一,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右移一位是必须的,不然不能正常寻址从设备。

相关帖子

沙发
liuningzjk| | 2012-11-29 10:14 | 只看该作者
顶,写的很清楚!!!

使用特权

评论回复
板凳
leadman| | 2012-11-29 14:55 | 只看该作者
把DM642通讯说的挺透彻的,挺好资料

使用特权

评论回复
地板
hanwei2008| | 2013-10-16 19:46 | 只看该作者
确实不错啊,拜谢

使用特权

评论回复
5
smilingangel| | 2013-10-16 23:38 | 只看该作者
I2C协议方面讲的还是蛮清楚的

使用特权

评论回复
6
fangshibing12| | 2013-12-19 21:20 | 只看该作者
不错,写的很详细!很受用!

使用特权

评论回复
7
zhangmangui| | 2013-12-20 09:33 | 只看该作者
支持这种分享    顶起来

使用特权

评论回复
8
raoxianbin| | 2013-12-20 16:54 | 只看该作者
mark

使用特权

评论回复
9
超星电子| | 2014-5-5 16:14 | 只看该作者
真的不错

使用特权

评论回复
10
tianli1980| | 2014-5-6 20:20 | 只看该作者
IIC的设备地址应该是7位的,最高位是读写标志位,后7位才是设备地址.

使用特权

评论回复
11
zhangmangui| | 2014-5-21 22:27 | 只看该作者
呼唤楼主   继续给大家分享好的资料和总结

使用特权

评论回复
12
yangguangaisha| | 2014-5-25 12:16 | 只看该作者
资料很实用 很有帮助

使用特权

评论回复
13
gexingyouxian| | 2014-5-25 12:22 | 只看该作者
I2C通信具有完备的通信协议

使用特权

评论回复
14
acer4736| | 2014-5-25 12:44 | 只看该作者
希望还有后续更新

使用特权

评论回复
15
jinpaidianzi| | 2014-5-25 12:54 | 只看该作者
楼主还有相关的其他资料吗

使用特权

评论回复
16
teabottle| | 2014-5-25 13:08 | 只看该作者
这种资料很难找的

使用特权

评论回复
17
wangjinlili| | 2014-5-25 13:49 | 只看该作者
I2C通信的数据传输率一般包括100k和400k两种,支持多机通信

使用特权

评论回复
18
meishizhaoshi| | 2014-5-25 14:04 | 只看该作者
acer4736 发表于 2014-5-25 12:44
希望还有后续更新

顶起 确实是好资料

使用特权

评论回复
19
shibalihuandao| | 2014-5-25 14:22 | 只看该作者
总结的很好 帮顶

使用特权

评论回复
20
zgsxhzac| | 2014-5-25 14:43 | 只看该作者
步骤很详细 好贴

使用特权

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

本版积分规则

个人签名:need to study

16

主题

1576

帖子

3

粉丝