1 / 11
文档名称:

S3C2410中文手册:I2C总线.doc

格式:doc   页数:11
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

S3C2410中文手册:I2C总线.doc

上传人:经管专家 2011/11/28 文件大小:0 KB

下载得到文件列表

S3C2410中文手册:I2C总线.doc

文档介绍

文档介绍:I2C总线
概述
S3C2410处理器支持一个多主I2C串行总线接口。一根专用串行数据线SDA和一根串行时钟线SCL在总线主机和连到I2C总线上的外设之间传输数据,SDA和SCL都是双向的。
在多主I2C总线模式下,处理器能与从设备接收或者发送串行数据。S3C2410主机可以初始化和停止一次基于I2C总线的传输,此芯片上的I2C总线使用标准的总线仲裁策略。
为了控制多主I2C总线操作,如下寄存器必须被设置好:
多主I2C总线控制寄存器,ON
多主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 .)。请检查你的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拉低时,每个主机都应该判断是否总线