免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1181 | 回复: 0
打印 上一主题 下一主题

ARM学习笔记--IIC总线接口 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 08:51 |只看该作者 |倒序浏览
 摘自:《嵌入式Linux应用开发完全手册》——韦东山
一、IIC总线协议和硬件介绍

1、IIC总线协议

1)IIC总线的概念

        IIC总线是一种串行总线,用于连接微控制器及其外围设备,具有以下特点:

        ①两条总线线路:一条串行数据线(SDA),一条串行时钟线(SCL)

        ②每个连接到总线的器件都可以使用软件更具它的唯一的地址来识别

        ③传输数据的设备间是简单的主从关系

        ④主机可以用作主机发送器或主机接收器

        ⑤它是一个多主机总线,两个或多个主机同时发起数据传输时,可以通过冲突检测和仲裁来方式数据被破坏

        ⑥串行的8位双向数据传输,位速率在标准模式下可达100kbit/s,在快速模式下可达400kbit/s,在高速模式下可达3.4Mbit/s

        ⑦片上的滤波器可以增加干扰功能,保证数据的完整

        ⑧连接到同一总线上的IC数量受到总线最大电容的限制

发送器:发送数据到总线的器件

接收器:从总线接收数据的器件

主机:发起/停止数据传输、提供时钟信号的器件

从机:被主机寻址的器件

多主机:可以有多个主机试图去控制总线,但是不会破坏数据

仲裁:当多个主机试图去控制总线时,通过仲裁可以使得只有一个主机获得总线控制权,并且它传输的信息不会被破坏

同步:多个器件同步时钟信号的过程

 

2)IIC总线的信号类型

IIC总线在传送数据过程中共有3种类型信号:开始信号、结束信号和响应信号

①开始信号(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据

②结束信号(P):SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据

③响应信号(ACK):接收器在接收到8位数据后,在第9个时钟周期,拉低SDA电平。

 

开始信号S和结束信号P

应答信号ACK

 

3)IIC总线的数据传输格式

        发送到SDA线上的每个字节必须是8位的,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据最高位。

        如果从机要完成一些其他功能后才能继续接收或发送,从机可以拉低SCL迫使主机进入等待状态。当从机准备好接收并释放SCL后,数据继续传输。如果主机在传输数据期间也需要完成一些其他功能叶可以拉低SCL以占住总线。

        启动一个传输时,主机先发出S信号,然后发出8位数据。前7位为从机地址,第8位表示传输方向(0表示写操作,1表示读操作)。被选中的从机发出响应信号。跟着传输一系列字节及响应位。最后,主机发出P信号结束。

下列三种情况不会有ACK信号:

①当从机不能响应从机地址时(从机忙于其他事无法响应IIC总线操作或这个地址没有对应从机),在第9个SCL周期内SDA线没有被拉低,即没有ACK信号。这时,主机发送一个P信号终止传输或者重新发送一个S信号开始新的传输

②从机接收器在传输过程中不能接收更多的数据时,也不会发出ACK信号。主机意识到这点,从而发出一个P信号终止传输或者从新发送一个S信号开始新的传输

③主机接收器在接收到最后一个字节时,也不会发出ACK信号,于是,从机发送器释放SDA线,允许主机发送P信号结束传输

 

2、S3C2440 IIC总线控制器寄存器介绍

S3C2440的IIC接口有4种工作方式:主机发送器、主机接收器、从机发送器、从机接收器

S3C2440使用4个寄存器来完成所有IIC的操作

1)IICCON寄存器

        IICCON寄存器用于控制是否发出ACK信号、设置发送器的时钟、开启IIC中断,并标识中断是否发生

        使用IICCON寄存器时,应注意

        ①发送模式的时钟频率由位[6]、位[3:0]联合决定。另外,当IICCON[6]=0时,IICCON[3:0]不能取0或1

        ②IIC中断在以下三种情况下发生:当发出地址信息或接收到一个从机地址并且吻合时,当总线仲裁失败时,当发送/接收完一个字节的数据(包括相应位)时

        ③基于SDA、SCL线上时间特性的考虑,要发送数据时,先将数据写入IICDS寄存器,然后再清除中断

        ④如果IICCON[5]=0,IICCON[4]将不能正常工作。所以,即使不使用IIC中断,也要讲IICCON[5]设为1

2)IICSTAT寄存器

         IICSTAT寄存器用于选择IIC接口的工作模式,发出S信号、P信号,使能接收/发送功能,并标识各种状态,比如总线仲裁是否成功、作为从机时是否被寻址、是否接收到0地址、是否接收到ACK信号

3)IICADD寄存器

        IICADD寄存器[7:1]表示从机地址,IICADD寄存器在串行输出使能位IICSTAT[4]为0时,才可以写入,在任何时候都可以读取

4)IICDS寄存器

        IICDS寄存器[7:0],保存要发送或已经接收到的数据,IICDS寄存器在串行输出使能位IICSTAT[4]为1时,才可以写入,在任何时候都可以读取

 

3、S3C2440 IIC总线操作方法

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP