S3C2410中文手册第20章 I2C总线.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二十章 I2C总线 概述 S3C2410处理器支持一个多主I2C串行总线接口。一根专用串行数据线SDA和一根串行时钟线SCL在总线主机和连到I2C总线上的外设之间传输数据,SDA和SCL都是双向的。 在多主I2C总线模式下,处理器能与从设备接收或者发送串行数据。S3C2410主机可以初始化和停止一次基于I2C总线的传输,此芯片上的I2C总线使用标准的总线仲裁策略。 为了控制多主I2C总线操作,如下寄存器必须被设置好: 多主I2C总线控制寄存器,IICCON 多主I2C总线控制/状态寄存器,IICSTAT 多主I2C总线Tx/Rx移位寄存器,IICDS 多主I2C总线地址寄存器,IICADD 当I2C总线空闲时,SDA和SCL线都处于高电平状态,当SCL保持高电平时,一个SDA下降沿可以初始化一个起始条件;当SCL保持高电平时,SDA的一个上升沿可以初始化一个停止条件。 起始和停止条件总是由主设备发起的,起始条件停止后第一个字节是一个7位地址值——决定总线主选择哪个从设备。第8位决定此次传输的方向(读还是写)。 发送到SDA上的每个数据必须是8位的,在整个总线传输操作期间字节可以被无限地发送和接收。数据总是从MSB开始传输,所有字节后都必须跟1个ACK应答位。 图20-1 I2C总线方框图 注意:IIC数据保持数据(tSDAH)最小为0ns。(IIC data hold time is minimum 0ns for standard/fast bus mode in IIC specification v2.1.)。请检查你的I2C总线设备是否是0ns。 I2C控制器仅支持I2C总线设备(标准和快速总线模式),不支持C总线设备 I2C总线接口 S3C2410的I2C总线接口有如下4种操作模式: 主发生器模式 主接收器模式 从发送器模式 从接收器模式 各种操作模式之间的联系如下 起始和停止条件 当I2C总线接口无动作时,它通常处于从模式。换句话说,在从SDA上检测到一个起始条件前接口将处于从模式(当SCL保持高电平时,一个SDA下降沿可以初始化一个起始条件)。当接口状态变成主模式时,可以初始化 SDA上的一个数据传输,且SCL信号产生。 一个起始条件可以在SDA上发送1个字节的数据,而1个停止条件可以停止数据传输。停止信号是当SCL保持高电平时SDA的一个上升沿。起始和停止条件总是由主机发起的。当一个起始条件产生和,设备获得I2C总线;一个停止条件将释放I2C总线。 主机通过发送一个停止条件来结束某次传输,但是应该发送一个从地址以通知对应的从设备。地址字节包括7位的地址和1位的传输方向描述(读或写)。如果第8位为0,将执行写操作(发送);如果第8位为1,将执行读操作(接收)。 主机通过发送1个停止条件来结束一次传输。如果主机希望继续向总线发送数据,应该发起另外一个起始条件和从地址,这种方式下,将以不同的格式执行读写操作。 图20-2 起始和停止条件 数据传输格式 放到SDA上的每个字节必须是8位长度的,每次传输可以发送无限多个字节。起始条件后紧跟着地址字节,地址字节必须当I2C总线工作在主模式下被主机发送。每个字节后面应该跟一个ACK应答位,数据和地址字节的MSB位总是被最先发送的。 图20-3 I2C总线数据格式 ACK信号传输 为了完成1个字节的传输操作,接收器应该向发送器发送一个ACK位,ACK脉冲应该在第9个SCL时钟处发生,一个字节的数据传输需要8个SCL时钟,主机应该产生发送ACK位所需的时钟脉冲。 ACK位发送功能可以通过软件使能和禁止(IICSTAT)。但是第9个SCL时钟处的ACK脉冲是必须的,只有这样才能完成一次数据传输。 读-写操作 在发送器模式下,当1个数据发送完毕,I2C总线将等待I2C总线数据移位寄存器IICDS被写入一个新的数据,在此之前,SCL信号将保持低电平,and then released after it is written。S3C2410将保持中断以识别当前的数据发送完成,当CPU接收到此中断请求后,将会重新向IICDS写入一个新的数据。 在接收器模式下,当接收到一个数据后,IIC总线接口将等待IICDS中的数据被读出,在此之前,SCL将保持低电平。S3C2410将保持中断以识别当前的数据接收完成,当CPU接收到此中断请求后,将会从IICDS读入一个数据。 总线仲裁策略 总线仲裁发生在SDA上以防止两个主机连接到总线上,如果一个SDA为高的主机检测到另外1个SDA为低电平的主机,它将不会初始化一次数据传输,因为总线当前电平不允许它,仲裁过程将延续到SDA线变高。 但是,当多个主机同时将SDA拉低时,每个主机都应该判断是否总线是否分配给了它,出于这个目的,每个主机应该检测总线上地址位。

文档评论(0)

wq640326 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档