现在的位置:主页 > 期刊导读 >

I2C总线器件编程开发关键技术

来源:电脑编程技巧与维护 【在线投稿】 栏目:期刊导读 时间:2020-11-18

【作者】网站采编

【关键词】

【摘要】在微机控制领域,作为外围芯片的I2C总线器件因结构简单,可靠性高,得到了广泛应用。例如存储芯片24C02,用于记录密码及公里数等,广泛用于汽车仪表系统。I2C(Inter-Integrated Circu

在微机控制领域,作为外围芯片的I2C总线器件因结构简单,可靠性高,得到了广泛应用。例如存储芯片24C02,用于记录密码及公里数等,广泛用于汽车仪表系统。I2C(Inter-Integrated Circuit)总线又称IIC总线或I2C总线,是PHLIPS公司推出的一种高性能串行总线。采用I2C串行总线技术可以精简系统硬件设计,提高系统可靠性,同时,系统也易于扩充与升级。24C02作为I2C总线接口存储芯片,属串行EEPROM,容量2 kbit,断电后数据不会丢失,常用于记录密码及公里数等场合。

1 24C02及I2C总线接口电路

24C02引脚图如图1所示,24C02与51单片机接口电路如图2所示。

图1 24C02引脚

应用I2C总线器件进行编程时,由单片机主机完成I2C总线初始化、数据传送、产生时钟信号和终止发送功能,从机24C02接收主机发送的数据。I2C总线具有总线裁决功能,主要依靠从机设备地址实现。对于24C02,8位从机设备地址的高4位固定为1010,后3位为A2、A1、A0,最后1位是数据传送的方向位 (R/W),主机将数据写入从机为“0”,主机从从机读出数据为“1”。

图2 24C02与单片机接口电路

2 I2C总线的数据传送

2.1 起始条件与停止条件

只有在起始条件满足后才能进行数据传送,起始条件与停止条件如图3所示。

图3 起始条件与停止条件

从图3可看出,当SCL处于高电平期间,SDA从高电平向低电平跳变时产生起始条件。当SCL处于高电平期间时,SDA从低电平向高电平跳变时产生停止条件。

2.2 I2C位数据传输规定

位数据的有效性及应答信号时序如图4所示。

图4 位数据的有效性及应答信号时序

主机进行数据传送时,从最高位开始逐位传送,时钟信号线为高电平期间,位数据必须保持不变。另外,每传送8位数据 (即一个字节)后,从机都必须产生一个应答信号。

3 I2C总线接口数据读写时序与编程

3.1 24C02字节读取时序

从机读操作有3种不同的方式:读当前地址内容、读随机地址内容、读顺序地址内容。图5为24C02读随机地址内容操作时序。

图5 24C02字节读时序

随机读操作允许主机对存储器的任意字节进行读操作,主机首先通过发送起始信号、从机设备地址和它想读取的字地址执行一个伪写操作。在从机应答之后,主机重新发送起始信号和从机设备地址,注意此处R/W位为1,从机响应并发送应答信号,然后输出所要求的一个8位字节数据,主机不发送应答信号但产生一个停止信号。

3.2 24C02字节写入时序

24C02字节写操作时序如图6所示。

图6 24C02字节写时序

主机先发送起始命令,然后发送从机设备地址数据,主机在收到从机产生的应答信号后,再发送一个字的地址数据,主机再次收到从机的应答信号后,最后发送数据到相应存储单元。从机再次应答,并在主机产生停止信号后开始内部数据的擦写,在内部擦写过程中,从机不再应答主机的任何请求。

3.3 24C02字节写入编程

下列代码完成24C02字节写入。

void write_byte (uchar add,uchar dat )

{

void init ();//I2C总线初始化

void start (void);//起始条件

I2Cwr_byte (0xa0);//写24C02地址

void ack (void);//从机24C02应答

I2Cwr_byte (add);//写单元地址

void ack (void);//从机24C02应答

I2Cwr_byte (dat);//写数据

void ack (void);//从机24C02应答

void stop (void);//结束条件

}

说明:上述用到的几个被调用函数定义如下。

①void init ();//I2C总线初始化

{

sda=1;

scl=1;

}

②void start (void);//起始条件

{

scl=0;//拉低SCL再改SDA以防误操作

delay ();

sda=1;

delay ();

scl=1;

delay ();

sda=0;

文章来源:《电脑编程技巧与维护》 网址: http://www.dnbcjqywh.cn/qikandaodu/2020/1118/633.html

上一篇:基于PLC控制的交通信号灯多种编程方法解析
下一篇:道通科技汽车编程诊断技术培训会圆满举办