I want to be a complete engineer - technical genius and sensitive humanist all in one!

Thursday, March 12, 2009

CY7C68013 IIC

EZ USB FX2(FX2) 是Cypress公司推出的USB 2.0控制器, 当用于高速数据采集系统时, 其片内集成的I2C 总线控制器,可以很好地实现与一些串行外设(如串行存储器、串行AD转换器等) 的无缝接口。一下简单介绍FX2 片内I2C总线控制器实现I2C 协议,I2C总线的读写操作流程。

1.FX2 片内I2C 总线控制器的特性

FX2 芯片内集成的I2C总线控制器具有2 种功能: 启动加载数据和通用I2C 总线接口。其中, 启动加载数据就是当芯片上电复位后, 通过检查其I2C总线上是否连接有串行E2PROM, 以决定采用何种设备固件加载方式; 通用I2C总线接口可以很方便地连接一些串行外设。其I2C总线的默认传输速率为100kbs, 可以被配置成快速方式, 传输速率可达400 kbs。FX2只作为主设备, 任何总线冲突将产生一个错误位, 中断数据的传输。另外, 芯片的串行数据线(SDA)和串行时钟线(SCL)需分别连接上拉电阻。

FX2 中I2C总线寄存器如下表所示:
I2DAT为8 bit 数据寄存器, 负责数据的读入或送出;
I2CTL为配置寄存器,负责配置总线;
I2CS为控制状态寄存器, 负责控制传输和报告各种状态。

表1 FX2 中I2C 总线控制器寄存器

地址 名称 b7 b6 b5 b4 b3 b2 b1 b0
E678 I2CS START STOP LASTRD ID1 ID0 BERR ACK DONE
E679 I2DAT D7 D6 D5 D4 D3 D2 D1 D0
E67A I2CTL 0 0 0 0 0 0 STOPE 400 kHz

开始控制位START: 当START位被配置为1, 写入数据到I2DAT, 开启I2C总线数据传输。此位在接收器的应答信号期间自动清零。

停止控制位STOP: 当STOP位被配置为1, 当前总线数据传输完后, 停止I2C总线数据传输。此位在总线停止传输数据后自动清零。

错误状态位BERR: 当总线上出现错误时, BERR 位被置为1。此位也可自动清零。

应答信号状态位ACK: ACK 位为1时, 表示接收器成功接受数据; 反之, 表示数据传输失败。此位在读传输时被忽略。

状态位DONE: 当完成1Byte 数据传输后, FX2设置DONE位, 并产生中断。当读或写I2DAT寄存器时, 此位自动清零。

由上可知, 只要正确配置或读取I2CS和I2CTL中相应的状态位, 并向I2DAT中写入数据或从其中读出数据,就能完成I2C总线数据的传输, 即EZ USB FX2通过表1中的3个寄存器实现了I2C 总线协议, 方便、快捷地完成数据的传输。

I2C总线读写流程

A.发送数据(参考手册 EZ-USB FX2 Technical Reference Manual P290 13.4.3 Sending Data)

1.设置start=1;

2.向I2DAT写外围设备的地址和方向=0(对于写);

3.等待done=1。如果BEER=1或ACK~=0,则转向步骤7;

4.用数据字节加载I2DAT;

5.等待DONE=1。如果BEER=1或ACK~=0,则转向步骤7;

6.对于每一个字节,重复4\5两个步骤,直到所有字节全部加载完成;

7.设置STOP=1。

B.接收数据(参考手册 EZ-USB FX2 Technical Reference Manual P290 13.4.4 Receiving Data)

1.设置START=1;

2.将外设地址和方向=1(对于读)写入I2DAT中;

3.等待DONE=1,如果BEER=1或ACK~=0,则通过设置stop=1结束;

4.读I2DAT并放弃数据。这表示9个脉冲的第一瞬时脉冲作为从从属设备来的第1个字节的时钟;

5.等待DONE=1,如果beer=1,则通过STOP=1结束;

6.从I2DAT读数据。这表示另外的读传输;

7.对于每一个字节重复6\7过程;

8.在读到最后一个字节之前,设置LASTRD=1;

9.从I2DAT中读数据,LASTRD=1,这就在总线初始化最终字节的读操作;

10.等待DONE=1.如果BEER=1,则通过设置STOP=1来结束;

11.设置STOP=1;

12.在设置STOP位后,从I2DAT立即读最后的字节。这就重新得到最后一个数据字节,而不用在I2CS总线上初始化一个额外的读处理(9个或更多的SCL脉冲)。

No comments:

Labels

Followers