基于FPGA的I2C串行总线接口电路设计

基于FPGA的I2C串行总线接口电路设计
基于FPGA的I2C串行总线接口电路设计

本科毕业设计(论文)

学生姓名:史俊达

专业:集成电路设计及集成系统

指导教师:黄静

完成日期:2013/5/30

诚信承诺书

本人承诺:所呈交的论文是本人在导师指导下进行的研究成果。除了文中特别加以标注和致谢的地方外,论文中不包含其他人已发表或撰写过的研究成果。参与同一工作的其他同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。

签名:日期:

本论文使用授权说明

本人完全了解南通大学有关保留、使用学位论文的规定,即:学校有权保留论文及送交论文复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容。

(保密的论文在解密后应遵守此规定)

学生签名:指导教师签名:日期:

摘要

I2C(Inter Integrated Circuits)总线是Philips公司开发的用于芯片之间连接的串行总线。现场可编程门阵列(FPGA)设计灵活、速度快,在数字专用集成电路的设计中得到了广泛的应用。I2C串行总线接口电路设计的主要任务是根据I2C时序协议用Verilog HDL语言对I2C总线接口电路的描述,其目的是通过在FPGA上来实现I2C接口电路来领会复杂数字电路的设计思路和理念。

在对I2C总线的研究现状与发展进行了深入的调研的基础上,论文着重阐述了在FPGA 上实现随机读/写的I2C接口电路的设计方案。首先,论文简单介绍了硬件描述语言(Verilog HDL)与现场可编程门阵列(FPGA)。其次,论文详细说明了I2C串行总线内部结构和数据传输格式及其时序协议。基于此,论文重点阐述了接口电路的设计方案以及在FPGA开发板上与外围I2C接口器件E2PROM实现数据传输的仿真与测试。经过多次实验验证,I2C总线接口电路已通过行为级仿真和综合及布局布线后门级时序仿真,满足系统要求。最后,论文对所得的研究成果进行了总结。

关键词:Verilog_HDL;FPGA;I2C串行总线;随机读/写;E2PROM

ABSTRACT

I2C (Inter Integrated Circuits) Bus is developed by Philips for the connection between the chip serial bus. In the digital ASIC design, Field-programmable gate array (FPGA) design has been widely used because of its flexibility and high speed. The main task of I2C serial bus interface circuit design is based on the I2C timing agreement with Verilog HDL language description of the I2C bus interface circuit, which aims to achieve I2C interface circuit up to comprehend complex digital circuit design ideas and concepts through the FPGA.

Based on the in-depth research of the I2C bus status and development, the design scheme of the random read/write I2C interface circuit on FPGA was underlined in the paper. First,hardware description language (Verilog HDL) and field-programmable gate array (FPGA) were introduced slightly in the paper. Second, the internal structure and data transmission format of I2C serial bus and its timing protocol were illustrated in the paper in detail. Based on this, the interface circuit design in FPGA development board was emphasized in the paper.As well as, the simulation and test of data transmission with peripheral devices E2PROM with I2C interface were stressed. After several experiments, I2C bus interface circuit has passed the behavioral level simulation and synthesis and layout-level timing simulation backdoor to meet system requirements. Finally, the research results were summarized.

Keywords: Verilog_HDL; FPGA; I2Cserial bus ; Random read /write; E2PROM

目录

摘要 ......................................................................................................................................... I ABSTRACT................................................................................................................................ II 第一章绪论 . (1)

1.1本课题研究的意义 (1)

1.2研究领域现状 (1)

1.3发展趋势 (1)

1.4所做的主要工作 (2)

第二章Verilog HDL和FPGA的综述 (3)

2.1硬件描述语---Verilog HDL (3)

2.1.1 Verilog HDL简介 (3)

2.1.2 Verilog HDL的发展 (3)

2.1.3 Verilog HDL用途 (3)

2.2现场可编程门阵列--FPGA (3)

2.2.1 FPGA的概要 (3)

2.2.2 FPGA的基本组成 (4)

2.2.3 FPGA的基本特点 (4)

第三章I2C串行总线简介 (6)

3.1I2C串行总线的概述 (6)

3.2I2C总线特征 (6)

3.3I2C总线的数据位传输 (7)

3.3.1 有效数据位的规定 (7)

3.3.2 起始和终止信号 (7)

3.4I2C总线上的数据传输 (8)

3.4.1 数据字节格式 (8)

3.4.2 应答确认 (8)

3.4.3 I2C总线的工作模式 (9)

3.5I2C总线的工作流程 (9)

3.5.1 I2C总线的写操作 (9)

3.5.2 I2C总线的读操作 (10)

3.6仲裁和时钟同步 (10)

3.6.1 时钟同步 (10)

3.6.2 数据仲裁 (11)

第四章I2C串行总线接口电路设计 (13)

4.1I2C串行总线接口电路的性能指标 (13)

4.2I2C串行总线接口电路的设计平台 (13)

4.3I2C串行总线接口电路的设计方案 (13)

4.3.1 I2C串行总线接口电路的框图设计 (13)

4.3.2 I2C串行总线接口电路的内部模块设计 (14)

4.3.3 I2C串行总线接口电路各模块的程序设计方法 (14)

4.4I2C串行总线接口电路程序的综合 (16)

第五章I2C串行接口电路仿真与FPGA开发板测试 (17)

5.1电路仿真测试平台 (17)

5.1.1电路仿真工具 (17)

5.1.2电路开发板测试仪器 (17)

5.1.3 外部测试芯片 (18)

5.2外围电路的构建 (21)

5.2.1 E2PROM电路构建 (21)

5.2.2 完整的测试电路 (22)

5.3I2C串行接口电路仿真结果 (23)

5.3.1 I2C串行接口电路写数据的功能仿真 (23)

5.3.2 I2C串行接口电路读数据功能仿真 (24)

5.3.3 I2C串行接口电路写数据时序仿真 (25)

5.3.4 I2C串行接口电路读数据时序仿真 (25)

5.3.5 E2PROM行为模块的反馈信息图 (26)

5.4I2C串行接口电路FPGA测试结果 (26)

结束语 (31)

参考文献 (32)

致谢 (33)

附录 (34)

第一章绪论

1.1本课题研究的意义

随着电子科技的迅速发展,需要相互通信及与外界通信的IC电路变得越来越复杂。为了简化电路设计,Philips公司开发了一种双向二线的串行I2C总线(Intel Integrated Circuit Bus)。该总线具有通讯效率高、传输线少等特点。因为其简单的接口、控制简便,使用I2C总线的电子电路设计工程师日益增多。I2C总线只提供两根线进行通信,所有具有I2C接口的器件都可以挂在这两根线上直接通信。

目前,IC制造商提供的I2C总线应用芯片的功能越来越强大。I2C总线由主器件控制,增加额外的I2C控制器需要额外的印制板面积,增加了成本。因此,在一些特殊应用条件下,使用一种利用应用广泛的现场可编程门阵列(FPGA)实现与I2C总线器件无缝连接的方法,将是更为经济的解决方案。

根据I2C总线的通讯协议,在Altera 公司的EP2C35F672C6型号的FPGA上实现与具有I2C 接口的外围芯片进行通信,具有易调试、灵活配置、高速传输等优点,这样大大地缩减了电路系统的开发时间。

1.2研究领域现状

单片机应用系统正向小型化、高可靠性、低功耗等方向发展。在一些功能较多的电路系统中,经常需扩展多个外围接口器件。如果采用传统的并行传输方式,传输时间是缩短了,但也增加了系统资源的消耗和系统的复杂度,关键是功耗的增大和成本的增加。现在,许多公司采用了Philips公司开发的I2C总线,使单片机系统电路结构的复杂度大大减小,并且增加了硬件的灵活性,缩短了产品开发周期,降低了成本。

自从I2C总线成为国际通用的总线标准后,I2C总线因为具有扩展方便、协议完善、支持芯片多和连线少等优点,已经被很多集成电路厂商集成到微控制器集成电路中。I2C总线的应用涉及通信、控制、家电、消费电子等众多领域,在很多器件上都配备有I2C 总线接口,而且功能日益强大。

1.3发展趋势

I2C总线以其结构简单、通信功能可制定、高抗干扰性、传输速度快等特点获得了广泛的应用。I2C总线控制器是MPU与I2C器件之间的桥梁,它负责接收处理器的数据、地址以及控制信号,而且反馈I2C器件的状态和数据给处理器,实现处理器与I2C器件之间的通信。

Philips公司除了生产具有I2C总线接口的单片机外,还推出了许多具备I2C总线的外部

接口芯片,如AT24CXX系列的EEPROM、128字节的SRAM芯片PCF8571、日历时钟芯片PCF8563、4位LED驱动芯片SAA1064、160段LCD驱动芯片PCF8576等多种类多系列接口芯片。

随着可编程器件的飞速发展,用FPGA器件实现I2C总线控制器接口的设计可以带来很多方面的便利。

1.4 所做的主要工作

由于现场可编程逻辑门阵列(FPGA)作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点,深受硬件电路设计人员的喜爱,大大缩减了电路开发时间[5]。本论文要求在FPGA上实现I2C 串行总线接口电路,要求实现基本的随机读写功能和显示、编写电路测试模块。

全文共分为五章,各章节的主要内容安排如下:

第一章为绪论,简要介绍了I2C串行总线接口电路的研究背景、意义和目前国内外研究现状。

第二章对硬件描述语言Verilog HDL和现场可编程逻辑门阵列FPGA的综述,其中包括硬件描述语言Verilog HDL及FPGA的起源、发展、应用等;Verilog HDL语言与FPGA的开发板的结合在现在的半定制电路中应用很广泛,这样可以省去不少开发全定制的时间和成本等。

第三章对I2C串行总线接口电路进行了介绍,了解I2C串行总线的概念和其工作时序协议,其中包括I2C串行总线接口的内部结构。

第四章阐述了I2C随机读/写串行接口电路设计,首先说明了I2C随机读/写串行接口电路的设计框图,同时对这个电路进行分模块设计。遵循自顶向下(Top_Down)设计理念,将复杂的时序电路分解成几个简单的小模块,使设计流程清晰化,这样也便于测试。

第五章为I2C随机读/写串行接口电路的仿真和测试,分别用软件对电路进行功能、时序仿真和在FPGA开发板上测试。最后,把测试结果与实际值进行比较,进一步地确认电路的正确性。

第二章Verilog HDL和FPGA的综述

2.1 硬件描述语----Verilog HDL

2.1.1 Verilog HDL简介

Verilog HDL是一种描述硬件的语言,可以用文本编程的形式来描述硬件的内部结构和行为。它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。Verilog HDL由Gateway Design Automation公司开发的。现在,Verilog HDL和VHDL一样也是世界上最流行的两种硬件描述语言之一,已经成为为IEEE标准。

2.1.2 Verilog HDL的发展

Verilog HDL语言原来是由Gateway Design Automation公司于1983年为其模拟器产品开发的硬件建模语言,它还只是一种专用语言[2]。随着他们的模拟、仿真器产品被电子业界广泛使用,Verilog HDL作为一种便于使用而且实用的语言开始被越来越多的电路设计者所接受[2]。Verilog HDL语言在一次增加语言普及性的活动中被推向公众领域。1992年,Open Verilog International决定推广Verilog OVI标准成为IEEE标准,这一推广最终获得了成功。于1995年,Verilog 语言成为IEEE标准,称为IEEE Std 1364-1995[2]。

2.1.3 Verilog HDL用途

Verilog HDL是目前应用最为广泛的硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模[14]。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间[14]。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模[14]。

Verilog HDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等[14]。

2.2现场可编程门阵列--FPGA

现场可编程门阵列(Field Programmable Gate Array:FPGA),它是在PAL、GAL、CPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点[5]。

2.2.1FPGA的概要

目前以硬件描述语言(Verilog或VHDL)描述的逻辑电路,可以利用逻辑综合和布线工具软件,快速地烧录至FPGA上进行测试,这一过程是现代集成电路设计验证的技术主流[5]。

这些可编程逻辑元件可以被用来实现一些基本的逻辑门数字电路(比如与门、或门、异或门、非门)或者更复杂一些的组合逻辑功能,比如译码器等[19]。大多数的FPGA里面包含记忆元件,例如触发器(Flip-flop)或者其他更加完整的记忆块,从而构成时序逻辑电路[19]。

电路系统设计人员可以根据需要,通过编程下载的方式,把FPGA内部的逻辑块连接起来,这样就完成了在FPGA芯片里构建你所要的电路。FPGA内部的逻辑块和连接可以随着设计者的需要而改变,所以FPGA能够成为数字电路设计人员在半定制电路中的第一选择。

一般来说,FPGA比专用集成电路(ASIC)的速度要慢一点,无法完成更复杂的设计,并且能耗也大。但是,FPGA具有可以快速成品,而且其内部逻辑可以被设计者反复修改的优点。此外,用FPGA调试的成本较低。

2.2.2 FPGA的基本组成

●静态随机存取存储器(SRAM):基于静态内存Static memory技术,系统内可编程

化和再程序化(Re-programmable),须要外部启动元件(External boot devices)CMOS。

●Antifuse:可烧录一次。通常为CMOS。

●PROM(一次性可编程EPROM):可编程化只读存储器技术,可烧录一次。使用塑

料封装,无窗,不能清除内容。

●EPROM:可清除可编程化只读存储器技术,有窗,经紫外线照射可清除内容。

●EEPROM:可电气清除可编程化只读存储器技术,可用电气信号清除内容。

●闪存:一种特殊的EEPROM。

●熔丝:可烧录一次。通常为双极性的。

2.2.3 FPGA的基本特点

?采用FPGA设计ASIC电路,用户无需投片生产,就能得到组合的芯片。

?做半定制电路的样品。

?内部有大量的触发器和I/O引脚。

?电路设计周期短、开发成本低、风险小。

?采用高速、功耗低的CHMOS工艺,兼容CMOS、TTL电平。

?能提高系统集成度和可靠性。

FPGA内部RAM中的程序控制其工作过程。工作时,只需对片内的RAM进行编程,就可以实现不同的功能。

加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,完成配置后,FPGA进入工作状态[3]。掉电后,FPGA恢复成空白片,内部逻辑关系消失[3]。因此,FPGA能够反复使

用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可[3]。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能[3]。因此,FPGA的使用非常灵活。

第三章I2C串行总线简介

3.1 I2C串行总线的概述

I2C(Inter Integrated Circuit)总线是由Philips公司开发的两线式串行总线,用于连接微控制器及其外围设备,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线[8]。

I2C总线也是微电子通信控制领域广泛采用的一种总线标准。它不同于普通的同步通信,具有输出线少,容易控制,传输速率快,抗干扰强等优点。

I2C总线定义了两根线:串行数据线SDA和串行时钟线SCL。如图3.1是I2C总线系统的示意图。图中的单片机、SRAM或E2PROM、A/D或D/A转换器以及其他I2C外围设备都有它们各自的地址。在数据传输过程中,通信双方分别称为I2C主控(I2C_Master)和I2C从设(I2C_Slave),都可以作数据发送端和接收端。

图3.1 带有微控制器的I2C总线配置

迄今为止,飞利浦已开发出150余种,包括CMOS和双极型I2C总线兼容IC,所有符合标准的I2C总线接口的设备,通过简单的双向两线总线,以实现有效的控制和IC之间的通信。

3.2 I2C总线特征

I2C总线是通过双向串行时钟线SCL和双向串行数据线SDA在器件之间传递信息的。SDA、SCL的输出级必须是开漏或者开集电极输出,并在两根线上分别通过上拉电阻接到正电源,以实现“线与”功能。如图3.2.

当总线处于空闲状态,SDA、SCL均保持为高电平。挂在总线上每个器件都有自己对应的唯一地址,用来发送数据或接收数据。当主器件掌控总线时,为实现数据的传输,主器件需要产生传输所需的时钟;被寻址的器件只能作为从器件。在标准模式下,I2C总线上数据的传输速率可达100kbit/s,在快速模式下可达400kbit/s,在高速模式下可达3.4Mbit/s[7]。总线电容(400pF)及地址的寻址范围决定连接到总线的器件数量。

图3.2 I2C标准模式器件和快速模式器件连接到I2C总线

在复杂的系统中,可能有多台主机同时启动总线,进行传输数据。通过总线仲裁,就可以很好地控制哪一台主机来控制总线。

3.3 I2C总线的数据位传输

3.3.1有效数据位的规定

I2C总线进行数据传输时,串行时钟为高电平期间,数据线上的数据必须保持稳定,只有在串行时钟为低电平期间,才允许数据线上的数据进行变化(即:高电平变低电平状态或者低电平变高电平状态),如图3.3。

图3.3 I2C总线的数据位传输

3.3.2 起始和终止信号

串行时钟SCL为高电平期间,串行数据SDA出现下降沿,则表示本次传输的起始信号;SCL线为高电平期间,SDA线出现上升沿,则表示本次传输的终止信号,如图3.4。

主机负责向从设发送启动和停止信号,产生启动信号后,SDA总线被占用;产生停止信号后,总线就释放总线。(即:处于空闲状态)。

图3.4 启动和停止信号

3.4 I2C总线上的数据传输

3.4.1 数据字节格式

发送至SDA线上的每个字节必须为8位,每次传输的字节数不受限制,每个字节后必须跟一位响应。被发送的数据第一位就是最高有效的数据位(MSB)。如图3.5。如果接收器在传输途中去做其他事(比如:做一些中断程序),接收器将把SCL拉低,直到处理好它的事情后才释放SCL,继续接收数据,在SCL被拉低的期间,主器件处于等待状态。

图3.5 数据字节格式

3.4.2 应答确认

每次发送的8位数据必须跟一位应答,此应答对应的时钟周期还是由主器件来产生。在这个时钟周期里,主器件要释放SDA,由从器件控制,主器件在这个期间需要检测从器件有没有发送应答信号。

从器件必须在这个时钟周期的低电平期间拉低SDA,这样主器件才能在时钟高电平期间检测到应答信号。当然,SDA的建立时间和保持时间也要考虑在内。

产生起始位后,总线就处于忙碌状态,产生停止位后,总线就进入空闲状态。在读数据时,主机接收到最后一个字节就不产生响应位(SDA=1),以此告知从设不要再发送数据,等待结束信号。如果不是最后一个数据字节,则主机发出的响应位为0(SDA=0)。当从设响应了

主机终止当前传输,于是主机产生一个停止信号终止本次传输,或者产生重复起始信号开始新的传输[13]。

3.4.3 I2C总线的工作模式

(1)主器件发送从器件接收(写操作)

主器件发送开始信号之后,紧接着发送的第一个字节是控制字节。高七位为从器件的地址片选信号。最低位为数据传输方向标示位 (1表示读从器件,0代表写从器件),如下图3.6。应答后再发送从器件的片内地址。应答后,接着发送的是数据字节,数据可以是单个字节,也可以是多个字节,取决于主器件。

图3.6 第一个字节格式

从器件每收到一个字节之后,在第九个SCL周期要反馈一个应答信号(SDA=0)。在应答周期,主器件释放SDA线,从器件把SDA拉成低电平,作为对主器件的应答。

(2)从器件发送主器件接收(读操作)

发送开始信号之后,主器件发送写控制字节给从器件。如果从器件检测到这个控制字节中的从器件地址与自身地址相一致,并且方向位为1(R/W=1),则表示此次操作是读操作,由从器件反馈主器件一个应答。

然后,从器件把数据发送给主器件。若主器件在之前给从器件发过片内地址,则从器件就从这个地址开始发送数据;若从器件没有收到片内地址,则从器件就从当前地址开始向主器件发送数据。

从器件在发送一个字节数据后,若收到主器件的应答信号则继续发送下一个字节数据;若没收到主器件的应答信号,从器件将停止发送数据,等待主器件的停止信号。从器件的发送地址和字节数都由主器件决定。

3.5 I2C总线的工作流程

3.5.1 I2C总线的写操作

写操作的步骤:

1.向从器件发启动信号

2.向从器件发I2C器件特征码、页地址(3bit)和读写控制位(R/W=0)

4.向从器件发8位片内地址

5.从器件发应答信号(低)

6.向从器件发8位数据

7.从器件发应答信号(低)

8.若主器件仍需发送数据,就继续发,直到从器件没有应答信号(高)

9.向从器件发停止信号

3.5.2 I2C总线的读操作

读操作的步骤(读随机地址单元):

1.向从器件发启动信号

2.向从器件发I2C器件特征码、页地址(3bit)和读写控制位(R/W=0)

3.从器件发应答信号(低)

4.向从器件发8位地址

5.从器件发应答信号(低)

6.向从器件发启动信号

7.向从器件发I2C器件特征码、页地址(3bit)和读写控制位(R/W=1)

8.从器件发应答信号(低)

9.从器件发数据(8位)

10.若主器件读单字节数据,则不给从器件应答(SDA=1)。若主器件需读多字节数据,

则给从器件发应答(SDA=0),直到读最后一个字节数据,才向从器件发应答

(SDA=1)。

11.向从器件发停止信号

3.6 仲裁和时钟同步

3.6.1 时钟同步

在I2C总线上,所有的主器件产生他们自己的传输时钟来传输数据。数据只在串行时钟的高电平器件有效。要得到一个确定的串行时钟就需要一位一位进行仲裁[7]。

时钟的同步就是利用I2C总线的线与功能。当有多个主机同时在SCL线上产生自己的时钟信号时,这些时钟信号通过线与的方式来同步。如图3.7,主器件l产生的串行时钟CLK1先变低,同步后的SCL线随之被拉低,主器件2内部的计数器被SCL的下降沿复位,同时输出端导通,两个主器件都对SCL的低电平开始计时。主器件1首先计数完成并关闭输出端,而主器件2没有完成计,输出端仍是导通,此时SCL仍为低电平,这时主器件1进入高电平

等待状态,直到主器件2完成计数并释放SCL线,SCL变为高电平[7]。

当SCL变高时,两个主器件同时把计数器清0,然后开始对SCL线高电平计时,在图3.7中,主器件l首先完成SCL线高电平计数并拉低SCL线,检测到SCL线下降沿后,两个主器件的计数器同时清0,准备开始低电平的计时[13]。

综上所述,同步后SCL线低电平时间取决于时钟低电平时间最长的主机,高电平时间取决于时钟高电平时间最短的主机[7]。

图3.7 时钟同步图

3.6.2 数据仲裁

主机只会在I2C总线空闲时产生起始位,但是在起始位的保持时间t HD:STA内可能有多个主机产生起始位,最终,总线上的起始位由它们之间的线与运算决定,仲裁只是对SDA线上传输的数据进行仲裁。SCL为高时,在SDA线上发送低电平的主器件将会赢得仲裁,发送高电平的主器件将会仲裁失败,并对SDA置高阻。如图3.8,两个主器件产生起始位后就开始对传输的数据进行仲裁,第一个数据位,SCL为高时,两个主器件都输出高电平,继续仲裁,第二个数据位,两个主器件都输出低电平,继续仲裁,到第三个数据位时,主器件l的SDA输出高电平,而主器件2的SDA线输出低电平,于是,主器件2赢得仲裁,主器件l呈现高阻状态[7]。

仲裁可以持续几个数据位,若两个主器件传输的数据都是一样的,那么仲裁也会持续到结束信号。在实际通信中,第一个进行仲裁往往是控制字字节部分(即:器件地址和传输方向标示位),如果一个从器件被多个主器件寻找,那么比较数据位进行仲裁,直到传输结束。赢得总线仲裁的主器件决定I2C总线上的地址和数据,因此传输的数据信息不会丢失[7]。

图3.8 数据仲裁图

第四章I2C串行总线接口电路设计

4.1 I2C串行总线接口电路的性能指标

本文设计要求实现一个严格遵循I2C协议的接口电路,传输速率最高为1MHz,向下兼容低速的I2C接口的设备,输入的数据是8位的,输入地址是15位的(高7位是器件地址,低8位是器件内地址),另外器件地址为7位,可以对128个有I2C接口的器件进行寻址,能与I2C接口的E2PROM进行数据传输,并支持对从设进行随机读、写。

4.2 I2C串行总线接口电路的设计平台

Altera公司的Quartus Ⅱ软件是电路设计所用到的平台。Altera公司的Quartus II集成PLD/FPGA开发软件,支持原理图,VHDL,Verilog HDL的AHDL(Altera Hardware Description Language)和其他设计输入表单,以及嵌入式自身合成模拟器的硬件配置,可以完成从设计输入完整的PLD设计过程。除了使用Tcl脚本完成设计流程外,Quartus II还提供了一个完善的图形用户界面设计,具有编译速度快,界面功能多样,容易上手等优点。

Altera的Quartus II支持的IP内核,包括LPM/宏功能块库,使用户能够充分利用成熟的模块,简化了设计的复杂性,加快了设计速度。第三方EDA工具的良好支持也使得用户在设计过程中的各个阶段可以使用熟悉的第三方EDA工具。其可编程逻辑设计环境,由于其强大的设计能力和直观的界面,越来越多的数字系统设计人员的欢迎[8]。

4.3 I2C串行总线接口电路的设计方案

4.3.1 I2C串行总线接口电路的框图设计

图4.1 I2C接口电路的框图设计

在电路设计中,电路的整体外部框图的设计对整个电路设计起到了决定性作用。拥有一个完整的、清晰的电路外廓对之后电路的各个部分的设计就有了清晰的把握。本次I2C接口电路需要一边要与MPU进行通信,另一边要与带有I2C接口的设备进行数据传输,这样就构

SPII2CUART三种串行总线的原理区别及应用

简单描述: SPI 与I2C这两种通信方式都就是短距离的,芯片与芯片之间或者其她元器件如传感器与芯片之间的通信。SPI与IIC就是板上通信,IIC有时也会做板间通信,不过距离甚短,不过超过一米,例如一些触摸屏,手机液晶屏那些很薄膜排线很多用IIC,I2C能用于替代标准的并行总线,能连接的各种集成电路与功能模块。I2C就是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存这两种线属于低速传输; 而UART就是应用于两个设备之间的通信,如用单片机做好的设备与计算机的通信。这样的通信可以做长距离的。UART与,UART就就是我们指的串口,速度比上面三者快,最高达100K左右,用与计算机与设备或者计算机与计算之间通信,但有效范围不会很长,约10米左右,UART优点就是支持面广,程序设计结构很简单,随着USB的发展,UART也逐渐走向下坡; SmBus有点类似于USB设备跟计算机那样的短距离通信。 简单的狭义的说SPI与I2C就是做在电路板上的。而UART与SMBUS就是在机器外面连接两个机器的。 详细描述: 1、UART(TX,RX)就就是两线,一根发送一根接收,可以全双工通信,线数也比较少。数据就是异步传输的,对双方的时序要求比较严格,通信速度也不就是很快。在多机通信上面用的最多。 2、SPI(CLK,I/O,O,CS)接口与上面UART相比,多了一条同步时钟线,上面UART 的缺点也就就是它的优点了,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快。一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。 3、I2C(SCL,SDA)接口也就是两线接口,它就是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复杂。一般单片机系统里主要用来与24C02等小容易存储器连接。 SPI:高速同步串行口。3~4线接口,收发独立、可同步进行 UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢 SPI:一种串行传输方式,三线制,网上可找到其通信协议与用法的 3根线实现数据双向传输 串行外围接口 Serial peripheral interface UART:通用异步收发器 UART就是用于控制计算机与串行设备的芯片。有一点要注意的就是,它提供了

SPI、I2C、UART三种串行总线的区别

SPI、I2C、UART三种串行总线的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS:意为IC之间总线) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI 设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。 如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。 I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。 如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。 显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。 第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行; 第四,看看牛人们的意见吧! wudanyu:I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且I2C使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI 则无所谓,因为它是有时钟的协议。 quickmouse:I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。

I2C总线原理及应用实例

I2C总线 原理及应 用实例 I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为 音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的 通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能 状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数, 增加了系统的安全性,方便了管理。 1 I2C总线特点 I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互 联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持 40个组件。I2C总线的另一个优点是,它支持多主控(multimastering),其中 任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传 输和时钟频率。当然,在任何时间点上只能有一个主控。 2 I2C总线工作原理 2.1 总线的构成及信号类型 I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种 被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工 作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并 接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决 于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码 用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别 (如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线 上,却彼此独立,互不相关。 I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单 元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递 信号的判断。若未收到应答信号,由判断为受控单元出现故障。 目前有很多半导体集成电路上都集成了I2C接口。带有I2C接口的单片机有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX 系列等。很多外围器件如存储器、监控芯片等也提供I2C接口。 3 总线基本操作 I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。总

SPI、I2C、UART三种串行总线的原理、区别及应用

简单描述: SPI 和I2C这两种通信方式都是短距离的,芯片和芯片之间或者其他元器件如传感器和芯片之间的通信。SPI和IIC是板上通信,IIC有时也会做板间通信,不过距离甚短,不过超过一米,例如一些触摸屏,手机液晶屏那些很薄膜排线很多用IIC,I2C能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C 是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存这两种线属于低速传输; 而UART是应用于两个设备之间的通信,如用单片机做好的设备和计算机的通信。这样的通信可以做长距离的。UART和,UART就是我们指的串口,速度比上面三者快,最高达100K左右,用与计算机与设备或者计算机和计算之间通信,但有效范围不会很长,约10米左右,UART优点是支持面广,程序设计结构很简单,随着USB的发展,UART也逐渐走向下坡; SmBus有点类似于USB设备跟计算机那样的短距离通信。 简单的狭义的说SPI和I2C是做在电路板上的。而UART和SMBUS是在机器外面连接两个机器的。 详细描述: 1、UART(TX,RX)就是两线,一根发送一根接收,可以全双工通信,线数也比较少。数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快。在多机通信上面用的最多。 2、SPI(CLK,I/O,O,CS)接口和上面UART相比,多了一条同步时钟线,上面UART 的缺点也就是它的优点了,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快。一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。 3、I2C(SCL,SDA)接口也是两线接口,它是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复杂。一般单片机系统里主要用来和24C02等小容易存储器连接。 SPI:高速同步串行口。3~4线接口,收发独立、可同步进行 UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢 SPI:一种串行传输方式,三线制,网上可找到其通信协议和用法的 3根线实现数据双向传输 串行外围接口 Serial peripheral interface UART:通用异步收发器 UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了

SPI、I2C、UART三种串行总线协议的区别

第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输 入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以 实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。如果用通用IO 口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现 的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输 出口即可,若只实现从设备,则只需输入口即可。 I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。 在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现 设备组网。如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入 输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这 里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般 由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、 UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。显然, 如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。 第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行; 第四,看看牛人们的意见吧! 1、I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单 一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无 所谓,因为它是有时钟的协议。 2、I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。

SPI、I2C、UART三种串行总线协议的区别

SPI、I2C、UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS:意为IC之间总线) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。 如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。 I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。 如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART 发送器组成,硬件上由两根线,一根用于发送,一根用于接收。 显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。 第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行;

I2C与UART的区别与比较

I2C IIC本身是为板级通讯设计,没有考虑远距离通讯.UART通讯编程简单,通讯速度远比IIC 快,可以直接使用RS485延伸通讯距离达到1km,通讯速度很容易做高。 UART是一个并行输入成为串行输出的芯片...有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信. I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用 于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优 点。 发送器:发送数据到总线的器件; 接收器:从总线接收数据的器件; 主机:初始化发送产生时钟信号和终止发送的器件; 从机:被主机寻址的器件; 多主机:同时有多于一个主机尝试控制总线但不破坏传输; 仲裁:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏 的过程; 同步:两个或多个器件同步时钟信号的过程。 两条总线线路:一条串行数据线SDA,一条串行时钟线SCL;SDA 线上的数据必须在 时钟的高电平周期保持稳定。数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。

SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件; SCL 线是高电平时,SDA 线由低电平向高电平切换,这个情况表示停止条件。 发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。每个 字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续。 数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器 释放SDA 线(高)。在响应的时钟脉冲期间,接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。 写操作 写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不 同有所不同。 读操作

TMS320F28335笔记-I2C串行总线

I2C串行总线 I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。 每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。 I2C总线的数据传送 一、数据位的有效性规定 I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。 二、起始和终止信号 SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。 连接到I2C总线上的器件,若具有I2C总线的硬件接口,则很容易检测到起始和终止信号。 三、数据传送格式 (1)字节传送与应答 每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。

由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。 如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送。 当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“非应答”来实现的。然后,从机释放SDA线,以允许主机产生终止信号。 (2)数据帧格式 I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。 在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。 在总线的一次数据传送过程中,可以有以下几种组合方式: a、主机向从机发送数据,数据传送方向在整个传送过程中不变: 注:有阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送。 A表示应答,A非表示非应答(高电平)。S表示起始信号,P表示终止信号。 b、主机在第一个字节后,立即从从机读数据: c、在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。 四、总线的寻址 I2C总线协议有明确的规定:采用7位的寻址字节(寻址字节是起始信号后的第一个字节)。 (1)寻址字节的位定义 D7~D1位组成从机的地址。D0位是数据传送方向位,为“0”时表示主机向从机写数据,为“1”时表示主机由从机读数据。 ?主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/T位将自己确定为发送器或接收器。 ?从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8个同样的器件,即可以有8个同样的器件接入到该I2C总线系统中。

I2C 串行总线的组成及工作原理

I2C 串行总线的组成及工作原理 I2C 串行总线的组成及工作原理 1 I2C串行总线的组成及工作原理 采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。 常用的串行扩展总线有:I2C (Inter IC BUS)总线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface)总线及Microwire/PLUS等。 1.1 I2C串行总线概述 I2C总线是一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与

”关系。 每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱,I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。在80C51单片机应用系统的串行总线扩展中,我们常以80C51单片机为主机,其它接口器件为从机的单主机情况。 1.2 I2C总线的数据传送 一、数据位的有效性规定 I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。 二、起始和终止信号 SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 起始和终止信号都是由主机发出的,在起始信号产生后,总

I2C串行总线的组成及工作原理

I2C串行总线的组成及工作原理 ?采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充 极为容易。 ?常用的串行扩展总线有:I2C (Inter IC BUS)总线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface) 总线及Microwire/PLUS等。 本章仅讨论I2C串行总线。 8.1.1 I2C串行总线概述 I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。 I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。 每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。 在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱,I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。 在80C51单片机应用系统的串行总线扩展中,我们经常遇到的是以80C51单片机为主机,其它接口器件为从机的单主机情况。

8.1.2 I2C总线的数据传送 一、数据位的有效性规定 I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。 二、起始和终止信号 SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。 连接到I2C总线上的器件,若具有I2C总线的硬件接口,则很容易检测到起始和终止信号。对于不具备I2C总线硬件接口的有些单片机来说,为了检测起始和终止信号,必须保证在每个时钟周期内对数据线SDA采样两次。 接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。 三、数据传送格式 (1)字节传送与应答 每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。

I2C与UART的区别与比较

I2C lie本身是为板级通讯设计,没有考虑远距离通讯.UART通讯编程简单,通讯速度远比lie 快,可以直接使用RS485延伸通讯距离达到1km,通讯速度很容易做高。 UART是一个并行输入成为串行输出的芯片…有一点要注意的是,它提供了RS-232C数据终 端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信. I2C (Inter —Integrated Circuit )总线是由PHILIPS公司开发的两线式串行总线,用 于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。 发送器:发送数据到总线的器件;接收器:从总线接收数据的器件;主机:初始化发送产生时钟信号和终止发送的器件;从机:被主机寻址的器件;多主机:同时有多于一个主机尝试控制总线但不破坏传输;仲裁:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏的过程;同步:两个或多个器件同步时钟信号的过程。 两条总线线路:一条串行数据线SDA 一条串行时钟线SCL;SDA线上的数据必须在 时钟的高电平周期保持稳定。数据线的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变。

SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件; SCL 线是高电平时,SDA 线由低电平向高电平切换,这个情况表示停止条件。 发送到SDA 线上的每个字节必须为 8位,每次传输可以发送的字节数量不受限制。每个 字节后必须跟一个响应位。首先传输的是数据的最高位 (MSB ,如果从机要完成一些其他功 能后(例如一个内部中断服务程序) 才能接收或发送下一个完整的数据字节, 可以使时钟线 SCL 保持低电平,迫使主机进入等待状态, 当从机准备好接收下一个数据字节并释放时钟线 SCL 后 数据传输继续。 数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器 释放SDA 线(高)。在响应的时钟脉冲期间,接收器必须将 SDA 线拉低,使它在这个时钟脉 冲的高电平期间保持稳定的低电平。 SDA 写操作 写操作分为字节写和页面写两种操作, 对于页面写根据芯片的一次装载的字节不 同有所不同。 读操作 SDA SCL SCL MSB AcknowlEMigGmont Achnowlodgomo Si^al Frocn Receiver Signal From Rec? I. —J START Cofidition (S) /\Z\7\ 7 8 R/W 9 ACK Achrtowlodgomant Signal Frorii Rewiver /XZXZX/X/V^^^ i 2 3 9 斫矗 ACK Condition (P) 起姑条件 停止条

相关主题
相关文档
最新文档