×
单片机 > 单片机程序设计 > 详情

基于I2C总线的PIC单片机端口扩展技术

发布时间:2020-06-24 发布时间:
|

1.  概述

随着单片机技术的发展,单片机在机电产品领域的应用越来越广泛。一方面,希望单片机构成的嵌入式系统功能尽可能强大,处理能力强,控制对象多;另一方面,又希望整个系统的成本尽可能低,即性价比好。因此,实际应用中经常会遇到单片机I/0接口资源不够用的情形,在一些较复杂的应用系统中,由于被控对象较多,如控制多个LED数码管的显示、超过30路状态的显示等,此时,端口供需矛盾尤其突出, 通常的解决方法是采用8155 , 8255 , 8259 , 74HC164,74HC165,74LS373 及74LS245 等外扩I/0 接口, 这样必然会使系统更加复杂, 成本增加, 可靠性下降。

目前,功能较强的单片机中大多采用了FLASH技术,并且在传统的USART串行通信功能的基础上增加了诸如SPI、I2C、CAN等先进实用的功能;并且许多外围芯片具有I2C之类的通信接口,如具有64个按键、8×8个LED数码管驱动的ZLG7290芯片。因此,单片机端口扩展可选用更方便、功能更强的扩展途径。

I2C(内部集成电路,Inter IC,IC TO IC)总线是Philips Semiconductors在20世纪80年代中期开发的,最初用于音频和视频目的。将I2C扩展为系统管理总线SMBus后可用于电源管理及CPU与其它组件的通信。I2C支持多主控模式,2.1版规定的传输速率在标准模式下为最高100kbit/s,快速模式下为400kbit/s,高速模式下为 3.4Mbit/s[1]。由于只需要微控制器的两个端口引脚就可以传输任意特性的数据,所以I2C总线协议得到了广泛的应用,并促进了大量的I2C外部芯片的开发。I2C总线可用于控制IC卡、数据转换[2] 、LCD控制、时钟控制[3]、存贮器控制[4]、、多机通信[5]等。本文主要讨论MICROCHIP公司的PIC18F458用于控制汽车车身状态显示时,基于I2C接口的ZLG7290芯片的控制问题。

2. I2C总线的工作时序

串行总线I2C由数据线SDA和时钟线SCL构成,挂接在I2C总线上的器件可以是主控器Master(负责产生时钟SCL信号),也可以是从动器件 Slave,可作为发送器,也可作为接收器。I2C总线转换一次为9位,前8位按自MSB至LSB的顺序传送数据,第9位为应答ACK位,SCL信号为高电平时,SDA状态的变化用来实现转换的启动和停止。并且,每一个数据位的传送,需要一个SCL周期的支持,数据传送过程中,SCL为高电平时,SDA线上的数据必须保持,仅当SCL为低时,才可改变SDA线的状态(数据)。基本I2C通信的过程为:START(RESTART)à7bit外设芯片地址+R/~W控制位à8bit外设芯片内部寄存器地址à传送的多个数据字节àSTOP。I2C总线数据传送时序如图1所示。


图1 I2C总线数据传送时序

3.  ZLG7290扩展芯片

ZLG7290是广州周立功单片机发展有限公司开发的基于I2C接口的键盘及LED驱动器,可驱动8 位共阴数码管或64 只独立LED 和64 个按键。ZLG7290 提供两种控制方式:寄存器映象控制和命令解释控制,寄存器映象控制是指以字节操作方式直接访问底层寄存器实现基本控制功能;命令解释控制是指通过解释命令缓冲区CmdBuf0/ CmdBuf1 中的指令间接访问底层寄存器实现扩展控制功能如实现寄存器的位操作,对显示缓存循环移位,对操作数译码等。ZLG7290 的从地址( slave address)为70H(01110000B),内部寄存器的地址为00~17H。ZLG7290内部功能框图如图2所示,本次应用中采取寄存器映象控制方式对LED实现控制。

图2 ZLG7290内部功能框图

4.PIC18F458基于I2C通信的实现

PIC18F458是MICROCHIP公司开发的集成CAN控制器的高档8位FLASH单片机,具有32K字节FLASH程序RAM空间,数据存贮器为1536字节RAM+256字节EEPROM,共33个I/O端口[6][7]。 PIC18F458的主同步串行端口(MSSP)模块中提供了SPI和I2C通信功能,引脚RC4和RC3分别用作I2C模式下的数据SDA线和时钟 SCL线;内部有6个寄存器与I2C通信控制有关,它们分别是:MSSP控制寄存器1 (SSPCON1)、MSSP控制寄存器2 (SSPCON2)、MSSP状态寄存器 (SSPSTAT)、串行收/发缓冲器 (SSPBUF)、MSSP移位寄存器 (SSPSR)和MSSP地址寄存器 (SSPADD),其中,SSPCON1/SSPCON2用来设置工作方式,SSPADD用来设置器件地址(PIC18F458用作SLAVE时)或通信波特率(PIC18F458用作MASTER时),MASTER模式下,SSPADD的值应满足以下公式:

(Fosc/4)/FI2C=SSPADD+1

其中:

Fosc/4:PIC18F458内部时钟频率,固定为晶振频率的1/4;

FI2C:I2C通信的最高速率,单位:kbit/s,一般用100kbit/s

SSPADD值最后需圆整为大于或等于计算值的整数中的最小整数。

图3为PIC18F458控制ZLG7290作为车身状态显示驱动器时硬件接线,ZLG7290的19脚和20脚用来实现与PIC18F458的通信控制,显示控制在程序上的实现主要是通过调用函数WriteByte(SCANNUM,0x01)和 WriteByte(DPRAMi,Dig2word)来实现,其中,SCANNUM为扫描次数,DPRAMi(i=0~7)为8个数码管对应的段码显示缓冲器,如图3所示,如果要点亮发光二极管D1所在列的全部8个发光二极管,则对应的显示 缓冲器的值应为0XFF。

图3  PIC18F458控制ZLG7290作为车身状态显示驱动器时硬件接线

5.  结论

利用I2C总线接口扩展单片机的端口大大简化了嵌入式系统外围硬件电路的设计,提高了系统工作的可靠性;同时,也简化了系统控制软件的设计,在基于 PIC18F458的车身状况显示控制系统中取得了较好的应用效果。按照本文介绍的方法,可以很方便地将ZLG7290或类似芯片应用于 MICROCHIP的其它类型的MCU的应用场合。

参    考    文    献

1.THE I2C-BUS SPECIFICATION,VERSION 2.1,www.semiconductors.philips.com /i2c/support

2.吴强,黄石红. I~2C总线在智能化振动测试仪中的应用研究.微计算机信息, 2002(10)

3.李彩等. 时钟芯片PCF8563在海洋光学浮标中的应用. 电子产品世界,2003(7)

4.金明,陶维清.MSP430系列单片机与I~2C总线方式的EEPROM接口.仪器仪表用户,2003(6)

5.李秋生,王月忠.基于VB6的PC机与多台单片机通信在锂电池检测化成设备中应用.微计算机信息,2003(10)

6.PIC18FXX8 DATA SHEET, www.microchip.com

7.[美]约翰 B.皮特曼 著,郑红等译. PIC18F452微控制器嵌入式设计.科学出版社,2005,1

关键字:I2C总线  PIC单片机  端口扩展技术 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
实验八 交通灯控制(80C51单片机汇编语言编程)