APP下载

基于Actel FPGA的I2CIP的应用

2009-09-05

电子产品世界 2009年8期

I2C(Inter Integrated Circuit)双向二线制串行总线,是由飞利浦公司制定的。I2C总线是一个多主机的总线,使用串行数据线(SDA)和串行时钟线(SCL)在总线上传递信息。每个器件都有一个唯一的识别地址,而且都可以作为一个发送器或接收器。当连接在I2C总线上的多个主机器件同时传输数据时,通过仲裁来避免冲突。SDA和CHSCL都是双向线路,通过一个电流源或上拉电阻连接到电源。器件输出级必须是漏极开路或集电极开路,当总线空闲时,两条线路处于高电平,执行线与的功能。

Actel公司免费提供I2C IP核——Core I2C。Core I2C是基于APB总线形式的,它的优点是可以连接到Core 8051或者是Cortex M1处理器上,方便用户进行SoC设计,本文将主要介绍Core 12C的原理与应用。

1、Core I2C介绍

(1)I2C协议简介

I2C总线协议定义如下:只有在总线处于“非忙”状态时,才能开始数据传输。在数据传输期间,只要时钟线为高电平,数据线都必须保持稳定,否则数据线上的任何变化都被当作“启动”或“停止”信号。图1所示为总线状态的定义。

I2C总线的工作方式为:当SCL为高电平时,如果检测到SDA的下降沿,则启动数据的传输;在数据传输时,只要SCL为高电平时,SDA数据必须保持稳定,SDA数据可以在SCL的低电平时发生变化;当SCL为高电平时,如果检测到SDA的上升沿。则停止数据的传输。

(2)Core I2C内部结构

Core I2C的内部结构框图如图2所示。它主要由串行时钟发生器、地址寄存器、控制寄存器、状态寄存器和APB总线接口等组成的。

·串行时钟发生器模块:提供SCL时钟脉冲。

·地址寄存器模块:包含了内核编程的地址信息。

·控制寄存器模块:控制串行传输的启动、重启、终止、位速率、地址识别和应答等功能。……

登录APP查看全文