十七、S3C2440裸机—IIC 接口
17.1 IIC接口介绍
17.1.1 IIC 总线的概念
I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。
主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。
17.1.2 IIC 总线术语
术语 |
描述 |
发送器 |
发送数据到总线的器件 |
接收器 |
从总线接收数据的器件 |
主机 |
初始化发送产生时钟信号和终止发送的器件 |
从机 |
被主机寻址的器件 |
多主机 |
同时有多于一个主机尝试控制总线但不破坏报文 |
仲裁 |
是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使报文不被破坏的过程 |
同步 |
两个或多个器件同步时钟信号的过程 |
8.1.3 IIC 总线信号类型
- IIC 总线信号类型:IIC 总线在传输过程中共有3种类型信号:开始信号、结束信号和响应信号
- 开始信号(S):SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据
- 结束信号(P):SCL 为低电平时,SDA 由低电平向高电平跳变,结束传送数据
- 响应信号(ACK):接收器在接收到 8 位数据后,在第9个时钟周期,拉低 SDA 电平
SDA 上传输的数据必须在 SCL 为高电平期间保持稳定,SDA 上的数据只能在 SCL 为低电平期间变化。如下,IIC 总线的位传输图:
17.1.3 IIC总线的数据传输格式
发送到 SDA 线上的每个字节必须是 8 位的,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。
首先传输的是数据的最高位(MSB)。如果从机要完成一些其他功能(例如一个内部中断服务程序)后才能继续接收或发送下一个字节,从机可以拉低 SCL 迫使主机进入等待状态。
当从机准备好接收下一个数据并释放 SCL 后,数据传输继续。如果主机在传输数据期间也需要完成一些其他功能(例如一个内部中断服务程序)也可以拉低 SCL 以占住总线。
启动一个传输时,主机先发送 S 信号,然后发出 8 位数据。这8位数据的前 7 位为从机的地址,第 8 位表示传输方向(0 表示写操作,1 表示读操作)。被选中的从机发出响应信号。紧接着传输一系列字节及其响应位。
最后,主机发出 P 信号结束本次传输。
主机——发送器用10位地址寻址从机——接收器
主机——接收器用 10 位地址寻址从机——发送器
组合格式 主机用 10 位地址寻址从机 然后发送数据到这个从机并向这个从机读数据
组合格式 主机发送数据到两个都有 10 位地址的从机
组合格式 主机发送数据到两个从机 一个用 7 位地址 一个用 10 位地址
17.2 S3C2440 I2C 总线控制器
IIC 接口有4种工作模式:主机发送器、主机接收器、从机发送器和从机接收器
从图种可以知道,S3C2440提供4个寄存器来完成 IIC 的操作。SDA 线上的数据从 IICDS 寄存器发出,或传入 IICDS;IICADD 寄存器中保存 S3C2440 当作从机时的地址;IICCON、IICSTAT 两个寄存器用来控制或标识各种状态,比如选择工作模式,发出 S 信号、P信号,决定是否发出 ACK 信号,检测是否收到 ACK 信号。
寄存器的用法见芯片手册
8.3 程序
JZ2440 没有使用 IIC 接口的器件