8051单片机的I2C接口并行扩展

发布者:Serendipitous33最新更新时间:2012-03-16 来源: 现代电子技术 关键字:I2C总线  VHDL  并行扩展 手机看文章 扫描二维码
随时随地手机看文章

1 引 言
  I2C总线接口器件在视频处理、移动通信等领域的应用已经非常普遍。另外,通用的I2C总线接口器件,如带I2C总线的RAM,ROM,A/D,D/A,LCD驱动器等,也越来越多地应用于计算机及自动控制系统中。随着I2C接口器件越来越广泛的应用,8051系列单片机与他之间的通信越来越频繁。
  8051系列单片机与I2C总线接口器件通信时,8051的通用口与I2C总线器件的SCL,SDA连接。根据I2C 总线数据传输协议,8051必须对其两个通用口进行频繁的置位、清零。根据基于51指令系统编制的汇编程序,传送一位数据,需要9个机器周期,而对于 8051,一个机器周期要耗费6个时钟周期,即用54个时钟周期才能传送一位数据。如此则极大地占用了CPU的工作时间,降低了系统的工作效率,导致I2C器件的优势难以显现。因此,有必要设计8051与I2C总线的专用接口电路。该接口电路能够对I2C总线上的数据进行自动收发,而CPU只需要通过并口访问该接口电路中的有关寄存器就可以实现与I2C器件的数据交换,从而使整个系统的性能得到提高。本设计用VHDL硬件描述语言为工具,用ALTERA公司的 MAXPLUSⅡ软件进行编译仿真,下载芯片为EPM7128SLC84-15。

2 设计目标和要求
  为了提高数据传送的速度,设计一个I2C接口电路。8051不直接与I2C器件交换数据,而是通过并口与该I2C接口电路交换数据,I2C总线上的数据传送也通过该I2C接口电路来完成。从而通过CPU的外部存储器读写指令就可实现与I2C器件的数据交换,使对串口的操作用并口的方式来实现。
  在I2C接口电路内部有一个控制寄存器CI0和一个数据寄存器CI1,即I2C接口电路占用两个地址。通过写控制寄存器CI0的内容实现对I2C接口电路的编程,读写数据寄存器CI1的内容实现与I2C器件的数据交换。在CI0中的内容定义了8051对I2C器件进行操作的类型(读或写)和I2C器件内地址的字节数等信息,使I2C接口电路能够识别从8051传来的数据是地址还是数据、8051将要发送数据还是接收数据以及数据的长度等。
  如果8051要发送数据给I2C器件,则根据I2C总线协议,在数据CI1接收到第一个数据后启动I2C总线,然后将CI1中的数据进行并串转换后逐位发出,发出完毕后设置一个标志位,使8051知道可以发送下一个总线后首先写I2C器件内地址,然后进行数据接收,进行串并转换后将接收到的数据装入CI1中,再设置标志位,使8051知道可以读出数据。
  根据上述设计要求,I2C接口芯片的引脚如图1所示。其中clk可以使用独立的时钟,使I2C总线的位传送速度远高于8051的位操作,从而可使I2C总线的数据传送接近并口的数据速率;a0是地址信号输入,a0=0时进行CI0写操作,当a0=1时进行CI1读/写操作;bz为标志输出位,bz=0时,8051需要等待,bz=1时8051可以对CI1操作。

  I2C接口芯片在系统中的情况如图2所示。这里8051对I2C接口芯片操作使用了查询方式,也可以改用中断方式。



3 并行接口设计的实现
    3.1 接口设计的内部结构
  该芯片的内部结构图如图3所示。系统由控制寄存器CI0,数据寄存器CI1,并串转换,串并转换,移位寄存器以及I2C控制模块6部分构成。[page]
    3.2 方式控制字
  8051向控制寄存器CI0写控制字,实现对I2C接口的编程控制。CI0的控制字格式如下所示:

 

    A2,A1,A0位:对与8051相连的I2C器件组的片选(器件地址)。对应不同值时选择不同的器件通信。  
    R/W:用来控制8051对I2C器件的读写操作。1表示8051对I2C器件读数据;0表示8051对I2C器件写数据。
    M1M0:当S=1时的4种工作方式:
    ①I2C总线未连接,要进行写操作。
    ②I2C总线未连接,要进行读操作。
  ③I2C总线已连接,换一个I2C器件或换新地址,要进行写操作。
  ④I2C总线已连接,换一个I2C器件或换新地址,要进行读操作。
  S:工作控制位。当S=0时,关闭I2C总线,其他情况S=1。
  DZS:指明8051对I2C器件读写的地址数。具体为:
    0:8051对I2C器件内单字节地址读写。  
    1:8051对I2C器件内双字节地址读写。
    3.3 I2C模块对I2C传输协议的实现
  根据I2C数据传输协议,时钟为高电平时,数据线由高电平向低电平跳变,启动I2C数据传输。然后每到来一个时钟脉冲,传送一位串行数据,第8个脉冲到来后,已完成一个字节的传输,第9个脉冲时,发送应答信号。写数据时,I2C器件收到数据,发送应答信号;读数据时,8051收到数据,发送应答信号。数据传送过程中,时钟为高电平期间,数据线上的内容保持不变。数据传送完毕,应答结束后,需要用停止信号停止数据传输,时钟高电平时,数据线由低电平向高电  55平跳变来实现此停止信号。
  I2C模块实现I2C数据传输协议。start信号为1时,启动数据传输;write信号为1时,向I2C器件写数据,read信号为1时,向I2C器件读数据。
  读写过程中,输出标志位flag、计数器dcnt,控制en的两位矢量,从而控制并串转换寄存器和串并转换寄存器的并入、移位、保持、清零操作。停止信号为1时,结束数据传输。
    3.4 接口芯片的工作原理与控制过程
  8051向控制寄存器CI0写控制字,实现对I2C接口的编程控制;向数据寄存器CI1写数据,实现对I2C接口的数据传输。
  当bz=1时,8051才对数据寄存器读写,而每次读写后接口电路自动将bz置0,在接口电路完成有关操作等待8051的读写时将bz置1。
    (1)I2C总线未连接,要进行写操作。8051的操作:
  ①写控制字W1;②当bz=1时写器件内地址第1字节;③当bz=1时写器件内地址第2字节…;④当bz=1时写第1字节…。
    I2C的操作:
  当接收到该控制字W1后操作为:①置bz=1,启动I2C总线;②根据控制字中的器件地址发出第1个字节(器件选择、写);③发送器件内地址,置bz=1;④发送数据内容,置bz=1…。
    (2)I2C总线未连接,要进行读操作。8051的操作:
  ①电路写控制字W2;②写器件内地址第1字节; ③当bz=1时写器件内地址第2字节…;④当bz=1时读第1字节…。
  I2C的操作:
    当接收到该控制字W2后操作为:①置bz=1,启动I2C总线;②根据控制字中的器件地址以出第1个字节(器件选择、写);③发送器件内地址;④关闭I2C总线;⑤启动I2C总线;⑥第2次发送器件选择字节、读;⑦接收数据内容,置bz=1…。
  (3)I2C总线已连接,换一个I2C器件或换新地址,要进行写操作。
    8051的操作:
  ①写控制字W5;②当bz=1时写器件内地址第1字节;③当bz=1时写器件内地址第2字节…;④当bz=1时写第1字节…。
    I2C的操作:
  当接收到该控制字W5后操作为:①置bz=1,关闭I2C总线;②启动I2C总线;③根据控制字中的器件地址发出第1个字节(器件选择、写);④发送器件内地址,置bz=1。
  (4)I2C总线已连接,换一个I2C器件或换新地址,要进行读操作。
8051的操作:
  ①电路写控制字W6;②写器件内地址第1字节; ③当bz=1时写器件内地址第2字节…;④当bz=1时读第1字节…。
    I2C的操作:
  当接收到该控制字W6后操作为:①置bz=1,关闭I2C总线;②启动I2C总线;③根据控制字中的器件地址发出第1个字节(器件选择、写);④发送器件内地址;⑤关闭I2C总线;⑥启动I2C总线;⑦第2次发送器件选择字节、读;⑧接收数据内容,置bz=1…。

4 结 语
  扩展接口芯片设计采用VHDL语言实现,芯片设计的全部程序均通过ALTERA公司的MAXPLUSⅡ软件编译,仿真结果正确。编译、仿真后的VHDL 程序经下载线下载至EPM7128SLC84-15芯片,验证正确。设计的接口时钟要求6 MHz,可直接和单片机接口连接。
  扩展后的接口,传送一位数据只需要4个时钟周期。扩展的接口,访问I2C器件的时钟可以自行设定,他们之间的通信不需要等待8051。一旦8051的并行数据送出,该接口可立即用自己设定的速度传送。从而该接口在8051和I2C器件之间通信时,数据的传送可达到并行的速度,这就是本接口扩展设计的最大优点。  
    由于使用的设计软件是ALTERA公司的MAXPLUSⅡ软件,下载仿真芯片为EPM7128SLC84该芯片延迟时间为15 s,延时时间过长;接口的设计本身对数据传输的时钟也可进一步减少,更进一步提高数据传输的速度。基于以上两点,还需要对本设计进一步优化,以期进一步提高性能与速度。


参考文献
[1]何立明.I2C总线应用系统设计[M].北京:北京航天航空大学出版社,1995.
[2]曾繁泰,陈美金.VHDL程序设计[M].北京:清华大学出版社,2002.

关键字:I2C总线  VHDL  并行扩展 引用地址:8051单片机的I2C接口并行扩展

上一篇:单片机在微型氧气机中的应用
下一篇:AT89C51及TWH9221在电冰箱中的应用

推荐阅读最新更新时间:2024-03-16 12:55

I2C总线CMOS型PB-0300数字图像传感器
摘要:介绍CMOS型数字图像传感器PB-0300的性能特点、功能设置、与MCS-51系列单片机的接口电路及编程技术。 关键词:I2C总线 数字图像 传感器 1 功能描述 1.1 性能特点 PB-0300系列CMOS型有源像素数字图像传感器,内置模数转换8、位并行数据输出、64个内部寄存器,采用I2C总线控制,可编程控制;可以在彩色和黑白两种模式下工作。当外接24MHz时钟晶振时,可以获得30帧/s的图像输出。在上电期间,自动调入缺省参数设置,包括自动曝光功能,所以可以不编程情况下使用传感器。主要性能指标如表1。 表1 主要性能指标 阵列格局 640%26;#215;487(311 680像素) VGA参考:64
[应用]
基于C8051F330便携式生理参数监测仪设计
  随着人们生活水平的提高, 越来越多的人希望通过简便的方式了解身体基本状况。因此人体生理监护仪开始出现并呈不断增多的趋势, 已经由过去的单一测试仪发展为现在的多参数监护仪。   在实际生活中, 生理参数监测仪多是基于PC 机平台的多参数测量、价格昂贵、体积庞大、不便于移动。现在多数生理参数监测仪无法准确的实时测量人体运动时的生理参数, 导致有些人特别是老年人运动强度过大, 对身体造成较大伤害。而教练员因无法准确掌握运动员运动时生理参数变化, 而不能 因材施教!, 有针对性的制定训练方案, 所以运动员训练方式都是大众化训练。综上所述, 开发一种体积小、价格低, 基于嵌入式系统的便携式生理参数监测仪就具有重要的意义。   1 系
[测试测量]
基于C<font color='red'>8051</font>F330便携式生理参数监测仪设计
8051单片机抢答器C程序
#include REG51.h /****************************************************************** * 自定义Macro *******************************************************************/ //编码的均为反向编码 #define CLEAR 0x7f //定义清空的反码 #define LED_BEGIN 0x01 // 定义开始时数码管的显示 #define LED_FOUL 0x38 // 犯规后显示字母 F ,数码管编码 #define LED_
[单片机]
C8051 F12X中多bank的分区跳转处理
在8051核单片机庞大的家族中,C8051F系列作为其中的后起之秀,是目前功能最全、速度最快的8051衍生单片机之一,正得到越来越广泛的应用。它集成了嵌入式系统的许多先进技术,有丰富的模拟和数字资源.是一个完全意义上的SoC产品。 C805IFl2X作为该系列中的高端部分,具有最快100MIPS的峰值速度,集成了最多的片上资源。其128 KB的片上Flash和8 KB的片上RAM足以满足绝大多数应用的需求。使用C8051F12X,只需外加为数不多的驱动和接口,就可构成较大型的完整系统。只是其中128 KB的Flash存储器不可避免地要处理bank分区问题。 幸运的是Keil C51开发环境对C8051F系列有良好的支持,包
[单片机]
C<font color='red'>8051</font> F12X中多bank的分区跳转处理
屏显示器件MC141541及其接口技术
1、引言   在某些图像处理系统中,往往需要在显示目标视频图像的同时,显示其参数及提示等信息。如医疗设备B超、CT、X透视,除了在监视器显示人体内部的组织器定外,还要显示相关参数,以辅助医生作出准确诊断。电力系统的红色外检测设备在显示被测目标的热像时,还要显示出其温度等参数,以便测试人员从定性的热像和定量的参数中诊断出故障所在。   利用MC141541在屏显示器件可使微处理器(MPU)通过I2C总线接口将需要显示的数据定入在屏显示器件(OSD),然后将数据输出显示。其字符的显示及同步均由OSD完成。OSD作为独立的智能I/O,可大大减轻MPU的负担。 2、I2C总线   I2C总线由PHILIPS公司推出,目前
[嵌入式]
基于STM32F103的I2C总线EEPROM的读写(带超时检测)
基于STM32F103的I2C总线EEPROM(24C256)的读写程序,总线的最高速度可达400K, 注意:最好将固件库升级一下,st网站上面有 V2.03库的补丁。 u32 ulTimeOut_Time; /* ********************************************************************************************************* * I2C_EE_WriteStr() * * Description : 将一个数据块写入EEPROM 的指定的地址 * * Argument(s) : xChip
[单片机]
运用C8051F340的数据采集系统电路设计
  本文以带有片上USB 控制器和D/A 转换器的高度集成处理器C8051F340为核心器件,采用SD 卡存储技术利用USB 总线、虚拟仪器实现软件LabVIEW 设计图形用户界面,设计一款低成本数据采集器。该数据采集器可与PC 机共同实现数据采集与分析,也可长时间独立工作于工业现场,并将采集数据存放于大容量SD 卡,便于数据收集并利用计算机分析。   系统的硬件设计主要是数据采集模块。由于C8051F340内部集成了高精度时钟源、USB 控制器、电压调节器、A/D 转换器以及用于A/D 转换的参考电压源等丰富的片上外设,因此在对数据采集模块硬件设计时,无需扩展上述电路,使得系统硬件结构简单,集成度高,可靠性好。如图所示,通过片
[电源管理]
运用C<font color='red'>8051</font>F340的数据采集系统电路设计
基于C语言的I2C总线软件模块设计
1 I2C总线概述   I2C(Intel-Integrated Circuit)总线是荷兰的Philips公司于八十年代初推出的一种芯片间串行总线扩展技术。它用两根线(数据线SDA、时钟线SCL)可完成总线上主机与器件的全双工同步数据传送,可极方便地构成多主机系统和外围器件扩展系统。I2C总线支持所有NMOS、CMOS、TTL等工艺制造的器件,其上所有的节点都连到同名的SDA、SCL上。I2C总方法,数据传送都有相同的操作模式,接口电器特性相同且独立,可在系统供电情况下从系统中移去或增加IC芯片,有I2C接口的外围器件都有应答能力,读写片内单元时有地址自动加1功能,易实现多个字节的自动操作。近年来,国际上有关公司制造了多达
[单片机]
基于C语言的<font color='red'>I2C总线</font>软件模块设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved