首页 理论教育 常用器件接口技术指南

常用器件接口技术指南

时间:2023-12-01 理论教育 版权反馈
【摘要】:第三章常用器件及接口技术在嵌入式系统中,仅仅依靠一个单片机去完成一个系统的功能是不太现实的,一个完整的系统往往会涉及到多种外围部件的使用和控制。本章主要对嵌入式系统中常用的非处理器部件进行介绍和描述,以便读者对相关技术和应用有所了解。因此在使用中,动态存储器需要不断地进行刷新,才能保证其存储的信息不会丢失。目前,DDR SDRAM技术已经成为主流存储技术,在PC及各类嵌入式应用领域得到广泛使用。

常用器件接口技术指南

第三章 常用器件及接口技术

嵌入式系统中,仅仅依靠一个单片机去完成一个系统的功能是不太现实的,一个完整的系统往往会涉及到多种外围部件的使用和控制。本章主要对嵌入式系统中常用的非处理器部件进行介绍和描述,以便读者对相关技术和应用有所了解。

3.1 动态与静态存储器

存储器是计算机系统的基本部件,离开了存储器,现代计算机将无法完成任何工作。根据存储器在使用中工作方式的不同,可以将存储器分为动态存储器和静态存储器。

3.1.1 动态存储器(Dynamic Random Access Memory)

动态存储器的基本单元结构如图3-1所示。

图3-1 动态RAM基本单元电路示意图

动态存储器中所谓的“动态”,是指存储器工作时,由于存储数据信息是通过电路中微小的电容充放电完成,充上的电荷很容易因漏电而丢失数据。因此在使用中,动态存储器需要不断地进行刷新,才能保证其存储的信息不会丢失。这也就导致动态存储器不能像静态存储器一样,直接连接到CPU的三总线上,它需要专用的控制器才能保证系统的可靠工作。

动态存储器虽然在使用上相对更复杂一些,但是它也有其自身的优点,那就是集成度高,价格便宜。因此,动态存储器一直以来都是计算机系统中的主要内存器件,在嵌入式系统中往往也得到广泛使用。

动态存储器经历了以下几个发展阶段。

(1)早期的DRAM,按先行后列方式给出存储地址,然后读/写数据。

(2)FPM(Fast Page Mode)DRAM,以行为单位进行数据读取,只需要给出一次行地址,该行中多个列数据即可进行读/写操作,从而提高读/写速度。

(3)EDO(Extended Data Out)DRAM,根据数据读/写过程中存在地址空闲的状况,在进行前一数据操作时,将后一数据操作的地址送到地址总线,从而使得内存读/写性能得到较大幅度提高。

(4)SDROM(Synchronous)同步DRAM,在这个过程中,DRAM中增加了原来DRAM没有的同步时钟,从而可以进一步提高DRAM与CPU的数据交换速度。另外,SDRAM采用了命令读取的方式进行数据操作,而不是以简单的地址加控制的方式进行数据操作,这使得对存储器的操作可以更灵活多样,从而完成更复杂的数据操作,以满足不同应用条件。

(5)DDR(Double Date Rate)SDRAM,由于SDRAM受到工艺上的限制,工作频率很难进一步提高,这使得SDRAM成为计算机系统的一个瓶颈性问题。为解决这一问题,人们提出了DDR SDRAM的思想。DDR SDRAM并没有从工艺上解决内存读/写数据的限制,但是却具有两倍于SDRAM的操作速度,其解决的方法就是使用不对等的总线宽度。在芯片内部的数据总线是芯片外部数据总线宽度的2倍,那么,在内部数据线上进行一次读/写操作,外部数据总线需要通过两次才能完成,这样就相当于将外部数据的传输速度提高了一倍。但是很显然,这样做需要解决一个重要问题,那就是内部数据总线的操作时钟应该是外部数据总线操作时钟的一半,并且能够做到良好的同步。为了解决这个问题,人们将外部数据的总线操作由原来每个时钟操作一次变成每个时钟操作两次,即在时钟的上升沿和下降沿各进行一次数据读/写操作。

(6)DDRII存储器,DRAM的工作频率通常只有133MHz,即使是DDR也只不过达到在133MHz的工作频率下实现266MHz的数据传送率。这个速率与CPU的主频相比,还是慢了很多。为了提高DRAM的读写速度,人们又以与DDR相似的方法开发了DDRII,这一次,DDRII的外部工作频率要比内部总线工作频率高1倍,并且利用上升沿和下降沿各进行一次数据传送操作。这样就实现了在相同工艺条件下的更高数据传送率,当然,前提是内部数据总线宽度是外部数据总线宽度的4倍。以相同的原理,人们还开发了DDRIII和即将面世的DDR4。目前,DDR SDRAM技术已经成为主流存储技术,在PC及各类嵌入式应用领域得到广泛使用。

提到DDR,自然少不了提及一下与之竞争的另一项存储技术——RDRAM(Rambus DRAM)。Rambus DRAM由美国兰巴斯公司(Rambus)推出,属于专利技术,标准非公开,这也是其在市场上表现不佳的一个重要原因。Rambus技术也通过命令方式读取DRAM中的数据,但其命令格式要比SDRAM复杂得多,它需要通过一个命令包来完成一次数据操作,因此在零散数据访问方面表现较差。但其内部采用了多存储单元条(bank)并列操作的方式进行操作,这在设计上比DDR使用的bank数量高出几倍,因此其总体效率还是不错的。

表3-1是RDRAM与SDRAM及DDR SDRAM的一个性能比较。

表3-1 几种动态存储器性能对比

3.1.2 动态存储器接口

这里将以三星公司的512MB动态存储芯片K48511632B为例,介绍一下SDRAM的引脚功能和接口方式。该芯片的引脚定义如图3-2所示。

图3-2 K48511632B引脚示意图

主要引脚功能有:

(1)A0~A13为地址总线引脚,用于连接CPU的地址总线,根据电路中数据宽度的不同,将该地址引脚接到CPU的不同引脚端,如采用16位数据总线时,地址线接CPU的A1-A14,采用32位数据总线时,需要接两片K48511632B,地址线接CPU的A2-A15;

(2)DQ1~DQ15为数据总线引脚,每片K48511632B提供16位数据宽度;

(3)DQM信号用于选择读取16位数据的高8位还是低8位,这两个信号与CPU提供的相关高位使能和低位使能信号连接;

(4)BA信号用于选择芯片内部的bank,需要与CPU的相关地址最高位进行连接,在512MB的存储容量下,应与CPU的A27、A28进行连接(229=512M);

(5)CAS、RAS信号分别是列地址有效和行地址有效信号,用于分两次将地址送到内存模块,与CPU对应信号连接;

(6)CS、WE信号表示片选和读写控制,用于与CPU对应信号连接;

(7)CLK信号是系统时钟,与CPU外部时钟同步;

(8)CKE信号用于控制SDRAM的刷新方式控制,正确工作时应为电平,当系统处于休眠或低电压状态时,可以将此信号设为低电平,用于实现自刷新控制,以保持内存中的数据不会丢失。

注意,在与CPU连接时,一方面需要考虑CPU是否带有SDRAM控制器;另一方面还需要根据使用的SDRAM数据宽度、容量大小等参数对CPU进行初始化设置,否则,系统可能无法正确工作。这些设置工作需要参考CPU的Datasheet等相关资料。

3.1.3 静态存储器(Static Random Access Memory)

静态存储器的基本单元如图3-3所示。

图3-3 静态内存单元原理示意图

由图中可以看出,静态存储器在设计中采用了单稳态电路的方式进行数据存储,使得数据的存储可靠性较高。但是由于每个存储单元需要占用多个三极管,并且需要一定的电流来维持系统处于一个稳态,因此在集成度和功耗方面存在一定的缺陷,价格也比动态存储器高。但是静态存储器具有比动态存储器更高的响应速度和更简易的接口方式,因此在容量要求较小或速度要求较快的环境下,人们更愿意使用静态存储器。在嵌入式系统中,很多单片机也不带动态存储控制器,因此,也常常使用静态存储器。

静态存储器与CPU的接口比较简单,只需要将数据线、地址线、控制线与CPU的对应线路连接即可,不需要对其容量、接口数据宽度等参数进行配置。

3.2 Flash存储器

无论哪一种计算机系统都需要由程序去控制,显然,程序需要一定的载体去保存。在PC机中,程序的载体是软盘、硬盘或光盘,而这些设备对于嵌入式系统而言,似乎显得都过于庞大和耗能,因此,早期的嵌入式系统程序是使用ROM保存的。ROM由于体积小、功耗低,在掉电情况下不丢失数据,可以直接运行程序等优势,在嵌入式系统中被广泛使用。但是由于ROM的只读特性,也使得系统的维护和升级变得十分困难,于是人们开发了EPROM、EEPROM、NVRAM、FeRAM等各类可重写的非易失存储器,但是这些存储器都存在一些不足。随着Flash技术的成熟,这些不足已经被一一弥补,因此,Flash也就自然成为非易失存储中使用最为普遍的一种存储器件。

几种非易失存储器的比较如表3-2所示。

表3-2 非易失存储器比较

表3-2中的ROM、PROM、EPROM、EEPROM已经较少作为单独器件使用,只在部分单片机中集成一定容量的EEPROM作为配置存储器使用,而PROM、EPROM已经在市场上消失了。ROM由于价格和密度的优势,在很多不需要二次开发或低档消耗类电子产品中被大量使用。新兴的非易失存储器如NVRAM、FeRAM、Flash等,由于容量、集成度和成本的原因分别占领着不同的市场:NVRAM读写次数不受限制,而且读写速度快,但体积较大、集成度低,因此,常用于频繁操作的数据或参数保存用途;Fe-RAM读写速度较快,容量不大,擦写寿命长,但成本相对较高,常用于取代小容量的SRAM加EEPROM的应用系统;Flash读写速度一般,但容量巨大、成本低廉,因此被广泛应用于各类嵌入式系统及移动存储器中。

Flash根据其工艺的不同可以分为NOR Flash、NAND Flash、AND Flash。由于AND Flash是日立公司的专利,在市场上用得并不多见,因此,我们只将最常见的NOR Flash和NAND Flash作一个介绍。

3.2.1 NOR Flash存储器

NOR技术闪速存储器是最早出现的Flash Memory,它源于传统的EPROM器件,具有可靠性高、随机读取速度快的优势,由于可以按字节读取,因此可以取代传统的EPROM作为系统中的程序存储器使用。在擦除和编程操作较少而直接执行代码的场合,尤其是纯代码存储的应用中,NOR技术闪速存储器被广泛使用,如PC的BIOS固件、移动电话、硬盘驱动器的控制存储器等。

由于NOR技术Flash Memory的擦除和编程以较大的块为单位进行,因此操作速度较慢,而块尺寸又较大(64KB,128KB),导致擦除和编程操作所花费的时间很长,在纯数据存储和文件存储的应用中,NOR技术显得力不从心。

NOR Flash的接口与SRAM的接口十分接近,只是在进行写操作时要比SRAM复杂得多。下面以英特尔的16MB NOR Flash存储芯片28F128J3A为例介绍其主要接口引脚。该芯片每块大小为128KB,即擦写数据将以128KB为单位进行,擦写速度较慢。

从图3-4中可以看到其引脚包括几个部分。

(1)A0~A23,地址引脚,由于NOR Flash在读取时可以像SRAM一样按地址操作,因此从该地址引脚上就可以计算出该芯片的容量大小为224=16MB。由于图3-4所描述的是一个32位的存储接口,需要用到两片28F128J3A(这里只画出了一片),因此,A0地址接0,其他地址线分别接到了CPU的A2~A24引脚上。

(2)D0~D15,数据引脚,接到CPU的数据总线上,当读数据时,该引脚将直接根据地址引脚的值给出相应存储单元的数据。

(3)CE_0~CE_2片选信号,用于选择该芯片工作,低电平有效。

(4)OE、WE信号,用于控制芯片进行读或写操作,低电平有效。

(5)BYTE信号,用于控制芯片工作于8位模式。

(6)RESET/POWER信号,用于进行复位控制

可见,NOR Flash与系统接口十分简单,与静态存储器件接口几乎一样。但是,需要注意NOR Flash只是在读数据时可以由读总线周期直接读取,其写数据过程却不能直接进行。因为,在NOR lash中写只能完成将0写为1,却不可以将1写为0。在写数据之前要进行擦除,以保证所有数据单元的内容都已经写为0;在写入时,将需要写为1的单元写入就成,需要写入为0的单元则不需要改变。为了实现这一操作过程,NOR Flash需要通过一系列命令来完成对芯片的擦除和写入操作。另外,擦除将以块为单位进行,而写入则可以按字节为单位进行。不同的芯片对擦除和写入操作的命令格式和步骤会有所不同,但基本上都是由几个总线周期来完成的。如表3-3所示,就是现代的29LV160 8MB NOR Flash存储芯片的命令周期列表。

图3-4 28F128J3A闪存引脚示意图

在表3-3中,可以看到除了读和复位操作可以在一个总线周期完成外,其他的操作都需要若干周期来完成。不同公司的产品,在使用前必须了解其操作步骤和命令格式才能正确使用,否则即使是同一容量和引脚排列,仍然有可能无法使用。比如28F128J3A的操作命令通常只有两个总线周期,其命令格式与表3-3也有所不同。

表3-3 NOR Flash的命令周期

从表3-3可以看出,读数据时在第一个总线周期,按照正常的地址线送入地址,在数据线上可读到数据,操作只需要1个周期。

写数据则需要4个总线周期:

1—将0x AA写到Flash地址0x555;

2—将0x55写到Flash地址0x2AA;

3—将0x A0写到Flash地址0x555;

4—将编程数据(Byte)写到对应的编程地址上去。

整片的擦除需要6用到个总线周期

1—将0x AA写到Flash地址0x555;

2—将0x55写到Flash地址0x2AA;

3—将0x80写到Flash地址0x555;

4—将0x AA写到Flash地址0x555;

5—将0x55写到Flash地址0x2AA;

6—将0x10写到Flash地址0x555。

其他操作步骤与此相同。为了能够正确识别Flash芯片,NOR Flash还提供了几条用于读取厂商代码和设备代码的命令,但这些命令在不同厂家生产的产品中仍然不兼容。由于NOR Flash可以按字节为单位进行访问,因此,可以用于存放程序代码,并直接在NOR Flash上运行。但是,由于其写入速度不够理想,容量也相对较小,常常只作为程序存储器存放代码,数据存储则很少使用NOR Flash产品。数据存储通常以NAND Flash存储器为主。

3.2.2 NAND Flash存储器

图3-5 NAND Flash每个NAND Flash结构

NAND Flash的数据是以Bit的方式保存在Memory Cell,一个Cell中存储一个Bit。这些Cell以8个或者16个为单位,连成Bit Line,形成所谓的Byte(X8)/Word(X16),这就是NAND Device的位宽。这些Line会再组成Page,每页528Bytes[512Byte (Main Area)+16Byte(Spare Area)],每32个Page形成一个Block(32*528B)。具体一片Flash上有多少个Block视需要所定。如三星K9f1208U0M具有4096个Block,总容量为4096*(32*528B)=66MB,但是其中的2MB是用来保存ECC校验码等额外数据的,故实际可使用的为64MB。图3-5表达了每个Page的基本结构。

NAND Flash以页为单位读写数据,而以块为单位擦除数据。按照这样的组织方式可以形成所谓的三类地址。

Column Address:列地址,地址的低8位。

Page Address:页地址,用于描述每个页的编号。

Block Address:块地址,用于描述块的编号。

从NAND Flash的使用上看,其接口方式比NOR Flash更固定,不同的NAND Flash通常具有相同的接口。主要引脚如图3-6所示。

NAND Flash的引脚主要包括:

(1)IO0~IO7的数据总线,用于传送命令、地址或数据;

(2)CE信号,低电平有效,用于片选;

(3)RE、WE信号,低电平有效,分别用于进行读功能控制和写功能控制;

(4)CLE、ALE信号,高电平有效,分别用于进行命令和地址/数据锁存;

(5)WP、R/B信号,分用于写保护控制和芯片忙信号输出。

从图中不难看出,NAND Flash的数据、地址和命令都必须通过I/O[7:0]引脚进行传递,这8个引脚的最大数据宽度只有8位。如果要对某一个地址上的数据进行访问,需要用多个周期将地址传送到芯片中,显然这样会产生较大的时间开销。但是,由于NAND Flash可以连续地进行数据操作,因此为提高数据访问效率,通常以一定数据块的方式进行访问。

NAND Flash和NOR Flash一样通过命令方式进行访问控制,其主要的功能列表如表3-4所示。

图3-6 NAND Flash引脚功能示意图

表3-4 NAND Flash指令列表

NAND Flash的命令通常只一个总线周期,但是由于数据宽度的限制,后续仍然需要若干个总线周期才能完成一定的工能。如读取数据时,需要指定读取的起始地址,这个地址是以字节为单位描述的,通常需要若干周期才能将一个地址发送到Flash芯片中。正是由于这样的限制,使得NAND Flash在数据操作时以连接数据访问为主。另外,由于需要用指令方式才能进行读/写操作,NAND Flash作为程序存储器时,需要额外存储器上的程序将NAND Flash中的程序读取到其他存储器中才能够执行。因此,NAND Flash的功能更接近于PC机上的硬盘这类外存设备。而且NAND Flash具有良好的集成度,能够提供较大的存储空间和较好的数据存储速度,因此,被广泛用作嵌入式系统中作为外存设备使用。

3.2.3 NAND Flash和NOR Flash的比较

任何Flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR Flash由于擦除时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。因此,当选择存储解决方案时,必须在系统的方便性和性能上做出权衡。两种Flash性能大致的比较如表3-5所示。

表3-5 NAND Flash和NOR Flash性能比较

NAND Flash和NOR Flash更多的性能差别包括以下几个方面。

1.接口差别

NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地读取其内部的每一个字节。

NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。

NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。

2.容量和成本

NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。

NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8 ~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储。NAND在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。

3.可靠性和耐用性

这里主要从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。

(1)寿命(耐用性)

在NAND Flash闪存中,每个块的最大擦写次数可达一百万次,而NOR Flash的擦写次数仅为十万次。NAND Flash存储器除了具有10∶1的块擦除周期优势,典型的NAND Flash块尺寸要比NOR Flash器件小8倍,每个NAND Flash存储器块在给定的时间内的删除次数要少,从而使得器件的使用寿命得以更大地延长。

(2)位交换

所有Flash器件都受位交换现象的困扰。所谓位交换,就是指在一些情况下,某一比特位发生了反转或被报告发生了反转,也就是存储的数据与原数据不再一致。

一个位的变化如果发生在一个关键文件上,这个小小的故障有可能导致整个系统故障,因此这绝不是一个小问题。如果只是报告有问题,采用多次读取就有可能解决。但是如果这一位真的发生改变了,那么就需要采用一定的手段进行纠错了。最常用的纠错方式就是采用一定的ECC算法。而位反转问题的发生,NAND Flash闪存出现的概率要高于NOR Flash。

(3)坏块处理

NAND Flash器件会因为各种原因产生坏块,并且这种坏块随机分布在芯片中。为了避免将数据写入坏块,NAND Flash使用时需要对介质进行初始化扫描以发现坏块,并将坏块进行标记。在已制成的器件中,为了保证系统的总体容量不会因坏块导致减少,通常在Flash芯片中保留了一定数量的备用存储单元,这些存储单元在正常情况下是不被使用的。当发现芯片中使用的部分有坏块时,这些存储单元将取代无法使用的坏块,以保证芯片容量。

4.易用性

由于NOR Flash可以像其他存储器那样直接连接到CPU的三总线上,并可以直接进行按字节的总线访问,因此在NOR Flash上可以直接运行代码。

而NAND要复杂得多,需要以I/O接口的方式与CPU三总线连接,并通过一定的驱动程序来完成对其内部存储单元的访问。

正是由于NOR Flash和NAND Flash的各自优缺点,使得很多嵌入式系统中既有NOR Flash又NAND Flash。

3.3 串行通信技术

串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。只需要很少几条线路就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。

相比于并行通信,串行通信具有自身的特点。

第一,节省传输线,这是显而易见的,尤其是在远程通信时,此特点尤为重要,而这也是串行通信的主要优点。

第二,数据传送效率较低。在串行通信技术中,根据传送方式的不同,又可以将串行通信分为两个大类,即同步通信和异步通信。

1.同步通信

所谓同步通信,实际上是指通信双方使用相同的一个时钟作为基准进行数据收发的串行通信。由于使用同一个时钟,因此可以连续地传送数据而不会出现差错。同步通信中,通信双方传送的数据以数据块的形式进行包装以确保收发双方的一致。

数据块通常由同步字符、数据字符和校验字符(CRC)组成。其中,同步字符位于数据块头,用于确认数据字符的开始;数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。同步通信的缺点是由于同步时钟的存在,在通信双方需要一根时钟线以及一个公共时钟源来实现发送时钟和接收时钟的严格同步。

2.异步通信

所谓异步通信,是指通信双方没有一个共同的时钟,而是各自使用自己的时钟,在通信前双方将约定一个通信速度和通信格式,发送方按约定的速度发,收方收到起始信号后按约定的速度收。这样会因收发双方的时钟存在偏差而导致数据传送错误,因此,在异步方式下每次通信传送的数据较短。

异步通信通常是以帧的形式在发送数据,帧通常包括起始位、若干数据位和结束位。这样即使收发双方的时钟存在偏差,也会因每次传送数据时间短,偏差不足以产生错误的接收而不会传送出错。在下个数据帧到来时,接收方又会根据起始信号调整自己的接收起点,从而达到校正上一帧接收时间差的目的。在异步通信方式下,收发双方使用各自的时钟可以减少对时钟的要求,也可以减少连线,提供更大的灵活性和自由性,因此在嵌入式应用中广泛使用。

串行通信中还存在线路的争用问题,也就是我们通常所说的工作模式问题,主要有三种。

第一,全双工模式。在这种模式下,不区分收方和发送方,发方在发送数据的同时,也可以进行接收;收方在接收数据的同时也可以发送。显然这需要有两条通信线路,以实现两个方向同时的数据传送。我们的电话通常就是全双工的。

第二,半双工模式。在这种模式下的任何一个时间段,收方只能接收数据,不能发送数据,而发方只能发送数据不能接收。但下一个时间段则可以调换身份,收方变成发方,不能接收数据;发方变成收方,不能发送数据。生活中最典型的例子就是单频道的步话机。

第三,单工模式。在这种模式下,任何时候收方都只能接收数据而不能发送,发方也只能发送数据而不能接收。我们的收音机就是典型工作于单工模式。

3.3.1 RS232接口及专用芯片

RS-232-C是美国电子工业协会EIA(Electronic Industry Association)制定的一种串行物理接口标准。RS是英文“推荐标准”的缩写,232为标识号,C表示修改次数。RS-232-C总线标准可以使用9针或25针连接器。RS232串行接口由于连线少、信号简单,在很多设备上得到了广泛的应用。而且它是嵌入式系统调试的基本手段之一,也几乎是所有嵌入式处理器的必备接口。

RS-232在PC机上的最高传送数率为115200bit/s,其最简单的连接电路如图3-7所示,只需要3根导线即可实现全双工通信。

图3-7 RS232最简单连接电路

其中TXD表示发送端,Rx D表示接收端它们的信号电平采用负逻辑,即:

逻辑1(MARK)=-3V~-15V

逻辑0(SPACE)=+3~+15V

由于RS232使用了与TTL电平不同的逻辑电平,因此,RS232不能直接与TTL电路连接,需要使用电平转换电路完成RS-232电平与TTL电平的转换。这种转换可以使用分离元件构成,也可以使用专用器件构成。在嵌入式系统设计,通常使用专用器件来完成这种转换。

最常使用的RS232电平转换器件是美信公司(Maxim)出品的MAX200系列,这个系列的转换器使用+5V工作电压,可以直接转换得到符合RS232标准的±15电平,十分方便好用,因此使用较为普遍。其典型电路如图3-8所示。

从电路中可以看出,MAX232只是一个电平转换和接收器,不对收发数据的格式进行控制,这个格式完全由接在MAX232发送端上的TTL电平器件来控制。单片机通常都内置有符合232标准的串行接口电路,只需要将对应信号与MAX232进行连接即可,具体连接可见图3-9所示。

RS232的数据帧格式见图3-10所示,其定义如下。

起始位S:1位,低电平表示,用于通知接收方做接收准备;

图3-8 MAX232功能示意图

图3-9 单片机与MAX232的连接示意图

数据位D0~Dn:5~8位,紧跟起始位,先低位后高位顺序传送;

奇偶检验位P:0~1位,紧跟数据位之后,可为奇校验也可为偶校验;

停止位E:1位,1位半,2位,用高电平表示。

图3-10 RS232数据帧格式

通信双方事先要约定好通信参数和格式,通信过程中不再更改。

3.3.2 RS422/485接口及专用芯片

RS232虽然简单实用,但是也存在明显的问题:首先,RS232只支持点到点通信,不支持多机连网;其次,RS232通信距离十分有限,其通信距和速率之间关系如表3-6所示。

表3-6 RS232通信速率与距离范围对照表

为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。

为扩展应用范围,美国电子工业协会又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。TIA/EIA-485-A标准主要是将232的单端信号改为差分信号,从而大大提高了信号线抗共模干扰的能力。RS422/485总线连接示意图如图3-11所示。

RS232之所以传送距离短,主要原因在于其使用的传送信号方式。RS232使用非平衡方式传送,也就是传送电平以地线为参考,这样很容易受到干扰,影响接收方对信号的正确读取。RS485/422则采用了平衡方式传送和差分式接收,信号由两条传输线路的相对电平来表示,受到干扰时,它们的电平相对地线虽然都会发生变化,但是由于它们的变化是同步和等值的,因此它们的电压差能够保持不变。所以,RS485/422具有更好的抗干扰能力,也就使得其具有更远的传输距离。RS485的主要特点如下。

(1)电气特性:逻辑“1”以两线间的电压差为+(0.2~6)V表示;逻辑“0”以两线间的电压差为-(0.2~6)V表示。接口信号电平比RS-232-C降低了,这就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。

(2)最高数据传输速率为10Mbps。

(3)采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。

(4)最大的通信距离约为1219m,最大传输速率为10Mb/S,传输速率与传输距离成反比。只有在100Kb/S的传输速率下,才可以达到最大的通信距离,而如果需传输更长的距离,则需要加485中继器。

(5)一条线路上最大可支持32个节点,如果使用特制的485芯片,则可以达到128个或者256个节点,最大甚至可以支持到400个节点。

RS232、RS422、RS485三种通信标准比较见表3-7所示。

图3-11 RS422/485总线连接示意图

表3-7 RS232、RS422、RS485通信标准比较表

续表3-7

最常使用的RS422/485接口器件是美信公司出品的MAX48/49系列专用RS422/485接口芯片,其基本引脚方式连接方式如图3-12所示。

图3-12 RS422/485接口器件引脚及连接示意图

由于RS422属于全双工总线,它不需要额外的控制信号,只需要与CPU的TXD、RXD引脚连接就可以工作,实现远程数据传送。而RS485属于半双工总线,因此,在使用时需要额外连接两个控制信号/RE、DE,用于收使能和发使能。这两个使能信号电平通常是互斥的,所以可以连接在一块,由一个信号来控制。RS422/485接口芯片与CPU的连接示意如图3-13所示。

其他公司的产品也和它们的连接方式类似,这里就不再作详细介绍,读者在使用时可查阅相关产品资料来了解相关信息。

图3-13 422/485通信方式的CPU连接示意图

最后需要说明的是,RS232、RS422、RS485只是一个物理层的协议,仅仅提供电平转换、发送和接收,并不提供数据格式控制和速率控制功能。因此,要正确使用好串口,需要通过单片机编程来设置串口速率、数据格式控制、数据校验等功能。

3.3.3 同步串行通信方式

同步串行通信与异步通信不同,在传送数据的同时需要有一个公共时钟来同步通信双方的行为。在嵌入式系统中,典型的同步串行通信接口包括SPI、I2C、PS/2等。与异步通信关心较大通信距离不同,同步通信主要考虑在电路板上芯片之间的连接,因此对速率和互联性的追求是其主要目标,其同步通信接口通常直接使用TTL电平。如果单片机不支持标准的同步通信协议,那么可以通过编程的方式来实现对总线协议的支持,当然,这会对CPU产生较大开销。下面就常用的同步通信协议作一下介绍。

1.SPI通信接口

SPI接口的全称是“Serial Peripheral Interface”,意为串行外围接口,是摩托罗拉公司首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM、Flash、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。

SPI接口是在CPU和外围器件之间进行同步串行数据传输,在主器件的时钟脉冲驱动下,数据按位传输,高位在前、低位在后,可以全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。

SPI接口包括4个信号:

(1)MOSI–主器件数据输出,从器件数据输入;

(2)MISO–主器件数据输入,从器件数据输出;

(3)SCLK–时钟信号,由主器件产生;

(4)/SS–从器件使能信号,由主器件控制,有的IC会标注为CS(Chip select)。

CPU与外围设备通信时的主器件通常指CPU,而从设备通常指连接的器件。SPI接口不需要进行寻址操作,且为全双工通信,简单而高效。当多个从设备连接到CPU上时,CPU可以通过控制片选择信号/SS并选择与哪个器件通信,因此也可以实现多个器件的连接。其连接方式如图3-14所示。

图3-14 多个从器件连接示意图

由上图可以看到,在多个从器件的系统中,每个从器件需要独立的使能信号,因此硬件比I2C系统要稍微复杂一些。

SPI接口的内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前、低位在后。如上图所示,在SCLK的下降沿上数据改变,同时一位数据被存入移位寄存器。

SPI接口的一个缺点是,没有指定的流控制,没有应答机制确认是否接收到数据。

2.I2C总线接口

I2C(Inter-Integrated Circuit)总线是由飞利浦公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。它具有接口线少、控制方式简单、器件封装形式小、通信速率较高等优点。其主要特点包括:

(1)只要求两条总线线路,即一条串行数据线SDA,一条串行时钟线SCL;

(2)每个连接到总线的器件都可以通过唯一的地址和主机连接,主机可以作为主机发送器或主机接收器;

(3)它是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏;

(4)串行的8位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s;

(5)连接到相同总线的设备数量只受到总线的最大电容400p F限制。

I2C总线上器件之间的连接示意图如图3-15所示。

图3-15 I2C总线器件连接示意图

由于只使用两根通信线路完成多机通信,因此I2C总线使用了一套相对复杂的的通信协议,主要内容如下。

(1)数据的有效性

在传输数据的时候,SDA线必须在时钟的高电平周期保持稳定,SDA的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变。

(2)起始和停止条件

SCL线是高电平时,SDA线从高电平向低电平切换,这个情况表示起始条件。

SCL线是高电平时,SDA线由低电平向高电平切换,这个情况表示停止条件。

起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态,在停止条件的某段时间后,总线被认为再次处于空闲状态。

如果产生重复起始条件而不产生停止条件,总线会一直处于忙的状态,此时的起始条件(S)和重复起始条件(Sr)在功能上是一样的。

(3)字节格式

发送到SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制,但每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要在完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,那么可以使时钟线SCL保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL后数据传输继续。

(4)应答响应

数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器释放SDA线(高)。

在响应的时钟脉冲期间,接收器必须将SDA线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。

通常被寻址的接收器在接收到的每个字节后,除了用CBUS地址开头的数据,必须产生一个响应。当从机不能响应从机地址时(例如它正在执行一些实时函数,不能接收或发送),从机必须使数据线保持高电平,主机然后产生一个停止条件终止传输或者产生重复起始条件开始新的传输。

如果从机接收器响应了从机地址,但是在传输了一段时间后不能接收更多数据字节,主机必须再一次终止传输。这个情况用从机在第一个字节后没有产生响应来表示。从机使数据线保持高电平,主机产生一个停止或重复起始条件。

如果传输中有主机接收器,它必须通过在从机不产生时钟的最后一个字节时不产生一个响应,通知从机发送器数据结束。从机发送器必须释放数据线,允许主机产生一个停止或重复起始条件。

(5)7位寻址方

第一个字节的头7位组成了从机地址,最低位(LSB)是第8位,它决定了传输的方向。第一个字节的最低位是“0”,表示主机会写信息到被选中的从机;“1”表示主机会向从机读信息,当发送了一个地址后,系统中的每个器件都在起始条件后将头7位与它自己的地址比较,如果一样,器件会判定它被主机寻址,至于被寻址的是从机接收器还是从机发送器,都由R/W位决定。

(6)10位寻址

10位寻址和7位寻址兼容,而且可以结合使用。

10位寻址采用了保留的1111XXX作为起始条件(S),或重复起始条件(Sr)的后第一个字节的头7位。

10位寻址不会影响已有的7位寻址,有7位和10位地址的器件可以连接到相同的I2C总线,它们都能用于标准模式(F/S)和高速模式(Hs)系统。

保留地址位1111XXX有8个组合,但是只有4个组合11110XX用于10位寻址,剩下的4个组合11111XX保留给后续增强的I2C总线。

10位从机地址是由在起始条件(S)或重复起始条件(Sr)后的头两个字节组成。

第一个字节的头7位是11110XX的组合,其中最后两位(XX)是10位地址的两个最高位(MSB)。

第一个字节的第8位是R/W位,决定了传输的方向;第一个字节的最低位是“0”表示主机将写信息到选中的从机;“1”表示主机将向从机读信息。

如果R/W位是“0”,则第二个字节是10位从机地址剩下的8位;如果R/W位是“1”,则下一个字节是从机发送给主机的数据。

(7)快速模式

快速模式器件可以在400kbit/s下接收和发送,其最小要求是,它们可以和400kbit/s传输同步,可以延长SCL信号的低电平周期来减慢传输。快速模式器件都向下兼容,可以和标准模式器件在0~100kbit/s的I2C总线系统通讯。但是,由于标准模式器件不向上兼容,所以不能在快速模式I2C总线系统中工作。快速模式I2C总线规范与标准模式相比有以下额外的特征:

第一,最大位速率增加到400kbit/s;

第二,调整了串行数据(SDA)和串行时钟(SCL)信号的时序;

第三,快速模式器件的输入有抑制毛刺的功能,SDA和SCL输入有施密特触发器;

第四,快速模式器件的输出缓冲器对SDA和SCL信号的下降沿有斜率控制功能;

第五,如果快速模式器件的电源电压被关断,SDA和SCL的I/O管脚必须悬空,不能阻塞总线;

第六,连接到总线的外部上拉器件必须调整,以适应快速模式I2C总线更短的最大允许上升时间。对于负载最大是200p F的总线,每条总线的上拉器件可以是一个电阻;对于负载在200p F~400p F之间的总线,上拉器件可以是一个电流源(最大值3m A),或者是一个开关电阻电路。

(8)高速模式

高速模式(Hs模式)器件对I2C总线的传输速度有极大的突破。Hs模式器件可以在高达3.4Mbit/s的位速率下传输信息,而且保持完全向下兼容。快速模式或标准模式(F/S模式)器件,它们可以在一个速度混合的总线系统中双向通讯。

Hs模式传输除了不执行仲裁和时钟同步外,也与F/S模式系统有相同的串行总线协议和数据格式。

高速模式下I2C总线规范如下:

第一,Hs模式主机器件有一个SDAH信号的开漏输出缓冲器和一个在SCLH输出的开漏极下拉和电流源上拉电路,这个电流源电路缩短了SCLH信号的上升时间,在Hs模式,任何时侯都只有一个主机的电流源有效;

第二,在多主机系统的Hs模式中,不执行仲裁和时钟同步以加速位处理能力,仲裁过程一般在前面用F/S模式传输主机码后结束;

第三,Hs模式主机器件以高电平和低电平是1∶2的比率产生一个串行时钟信号,解除了建立和保持时间的时序要求;

第四,可以选择Hs模式器件有内建的电桥,在Hs模式传输中,Hs模式器件的高速数据(SDAH)和高速串行时钟(SCLH)线通过这个电桥与F/S模式器件的SDA和SCL线分隔开来,减轻了SDAH和SCLH线的电容负载,使上升和下降时间更快;

第五,Hs模式从机器件与F/S从机器件的唯一差别是它们工作的速度,Hs模式从机在SCLH和SDAH输出有开漏输出的缓冲器,SCLH管脚可选的下拉晶体管可以用于拉长SCLH信号的低电平,但只允许在Hs模式传输的响应位后进行;

第六,Hs模式器件的输出可以抑制毛刺,而且SDAH和SCLH输出有一个施密特触发器;

第七,Hs模式器件的输出缓冲器对SDAH和SCLH信号的下降沿有斜率控制功能。

3.PS/2接口

PS/2通信协议是一种双向同步串行通信协议,主要用于键盘、鼠标设备与PC机之间的通信。其基本引脚规范如图3-16所示。

通信双方通过时钟脚(clock)同步,并通过数据脚(data))交换数据。任何一方如果想抑制另外一方的通讯时,只需要把时钟脚拉到低电平。如果是PC机和PS/2键盘间的通讯,则PC机必须做主机,也就是说,PC机可以抑制PS/2键盘发送数据,而PS/2键盘则不会抑制PC机发送数据。一般两设备间传输数据的最大时钟频率是33 KHz,大多数PS/2设备工作在10~20KHz,推荐值在15 KHz左右。也就是说,时钟脚高、低电平的持续时间都为40μs。每一数据帧包含11~12个位,具体含义如下表3-8所示。

图3-16 PS/2接口引脚规范

表3-8 PS/2通信协议数据包格式

(1)PS/2设备和PC机的通讯

PS/2设备的时钟脚和数据脚都是集电极开路的,平时都是高电平。当PS/2设备等待发送数据时,它首先检查时钟脚以确认其是否为高电平。如果是低电平,则认为是PC机抑制了通讯,此时它必须缓冲需要发送的数据直到重新获得总线的控制权。如果时钟脚为高电平,PS/2设备便开始将数据发送到PC机。一般都是由PS/2设备产生时钟信号,发送时一般也都是按照数据帧格式顺序发送。其中,数据位在时钟脚为高电平时准备好,在时钟脚的下降沿被PC机读入。PS/2设备到PC机的通讯时序如图3-17所示。

当时钟频率为15KHz时,从时钟脚的上升沿到数据位转变时间至少要5μs。数据变化到时钟脚下降沿的时间至少也有5μs,但不能大于25μs,这是由PS/2通讯协议的时序规定的。如果时钟频率是其它值,参数的内容应稍作调整。

图3-17 PS/2接口通讯时序图

PS/2接口的嵌入式软件编程方法如下。

首先,PS/2向PC机发送一个字节。从PS/2向PC机发送一个字节可按照下面的步骤进行:

①检测时钟线电平,如果时钟线为低,则延时50μs;

②检测判断时钟信号是否为高,为高则向下执行,为低则转到①;

③检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时PC机在向PS/2设备发送数据,所以PS/2设备要转移到接收程序处接收数据);

④延时20μs(如果此时正在发送起始位,则应延时40μs);

⑤输出起始位(0)到数据线上,这里要注意的是,在送出每一位后都要检测时钟线,以确保PC机没有抑制PS/2设备,如果有则中止发送;

⑥输出8个数据位到数据线上;

⑦输出校验位;

⑧输出停止位(1);

⑨延时30μs(如果在发送停止位时释放时钟信号则应延时50μs);

通过以下步骤可发送单个位:

①准备数据位(将需要发送的数据位放到数据线上);

②延时20μs;

③把时钟线拉低;

④延时40μs;(www.xing528.com)

⑤释放时钟线;

⑥延时20μs。

其次,PS/2设备从PC机接收一个字节。由于PS/2设备能提供串行同步时钟,因此,如果PC机发送数据,则PC机要先把时钟线和数据线置为请求发送的状态。PC机通过下拉时钟线大于100μs来抑制通讯,并且通过下拉数据线发出请求发送数据的信号,然后释放时钟。当PS/2设备检测到需要接收的数据时,它会产生时钟信号并记录下面8个数据位和一个停止位。主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存数据,而PS/2设备则要配合PC机才能读到准确的数据。具体连接步骤如下:

①等待时钟线为高电平;

②判断数据线是否为低,为高则错误退出,否则继续执行;

③读地址线上的数据内容,共8个Bit,每读完一个位,都应检测时钟线是否被PC机拉低,如果被拉低则要中止接收;

④读地址线上的校验位内容,1个Bit;

⑤读停止位;

⑥如果数据线上为0(即还是低电平),PS/2设备继续产生时钟,直到接收到1且产生出错信号为止(因为停止位是1,如果PS/2设备没有读到停止位,则表明此次传输出错);

⑦输出应答位;

⑧检测奇偶校验位,如果校验失败,则产生错误信号以表明此次传输出现错误;

⑨延时45μs,以便PC机进行下一次传输。

读数据线的步骤如下:

①延时20μs;

②把时钟线拉低;

③延时40μs;

④释放时钟线;

⑤延时20μs;

⑤读数据线。

下面的步骤可用于发出应答位:

①延时15μs;

②把数据线拉低;

③延时5μs;

④把时钟线拉低;

⑥延时40μs;

⑦释放时钟线;

⑦延时5μs;

⑧释放数据线。

PS/2设备主要用于产生同步时钟信号和读写数据,因此,嵌入式装置常作为PS/2设备使用,以下程序是以嵌入式装置作为PC机的PS/2从设备的编程方法,作为主设备连接其他PS/2设备时可以参考上面的方式进行编程。在后面的实例介绍中,将介绍PS/2设备的编程代码。

3.4 输入技术及常用器件

输入设备是计算机与外界交换的必备手段,在嵌入式系统中,输入设备常常直接与CPU连接,其接口及设计技术属于整个系统的必备内容。

3.4.1 键盘设计及接口

键盘是最常使用的输入装置之一,按照所需要键盘数量的不同,可以采用多种不同的方式来实现。主要有独立式、行列式(矩阵式)、A/D式等。

1.独立式键盘设计

如果在系统中使用的键盘数量较少,CPU可用于键盘的I/O端口数量达到或超过键盘个数,则可以采用这种方式进行设计,如图3-18所示。

键盘中的每个键通常使用一个常开式的接触开关,如上图所示,构成一个可以产生0、1信号的基本单元,微处理器可以方便地检测引脚上电平的变化。当开关打开时,通过处理器I/O口的一个上拉电阻提供逻辑1;当开关闭合时,处理器I/O口的输入将被拉低到逻辑0。

采用单个按键方式进行键盘设计虽然结构简单,但是却存在一个十分明显的缺陷,就是当按键数量增加时需要的微处理器引脚也要相应增加,因此,当键盘数量较大时,对微处理器而言将是非常大的一个开销。

另外,在这种电路中每个I/O口直接与一个按键相连接,CPU通过读取其I/O引脚的电平来判断键盘的按下与否。这种设计最为简单,但需要软件不停读取I/O引脚的值,会浪费大量CPU资源。因此,在很多时候都使用中断的方式来实现键盘设计,当键盘有键按下时通知CPU读取I/O端口,从而提高系统的运行效率。采用中断式的键盘电路如图3-19所示。

图3-18 简单键盘电路

图3-19 中断方式的独立键盘设计

为了提高CPU的I/O端口利用率,在实际工程中更多使用采用行列式的键盘设计方案。

图3-20 行列式(矩阵式)键盘结构

2.行列式(矩阵式)键盘设计

行列式键盘用于键盘数量较多的场合,键盘接口分为行线和列线,在行线和列线的交叉点上设计按键开关。当按键按下时,判断出按键所在的行和列就可以知道是哪一个键被按下了。其基本结构如图3-20所示。

行列式键盘的扫描过程如下:假设正常情况下键盘各行列线均为低电平,扫描键盘时微处理器按一定时间间隔逐行发送高电平信号,同时检查列线上是否有某一列呈现高电平。如果有键按下,则按键所在的行和列应具有相同电平,当微处理器扫描

到该行时,按下键所在的列线也应呈现高电平,记录这时扫描的行线和呈现高电平的列线,就是该按键所在的行列位置,也就是按键值的扫描码,通过该扫描码来确定下一步的程序动作。

如果采用中断方式则可以在有按键被按下时产生中断后再进行扫描,可以节省大量的CPU时间,提高系统整体运行效率。

在理论状态下,每次的按键都是可以被正确识别并读取的,但在实际工程应用中,还需要考虑开关的抖动和干扰问题。因为当按键被按下或释放时,由于按键的机械特性,按键产生的是一个并不稳定的信号,如图3-21所示,或者是干扰,这种不稳定通常会持续5ms~30ms。因此,在应用时需要加以处理,以减少抖动和干扰所产生的不确定性影响。

图3-21 按键抖动和干扰

为了过滤抖动或干扰问题,微处理器以规定的时间间隔对键盘进行采样,这个间隔通常在20ms~100ms之间(被称为去抖动周期),它主要取决于所使用开关的抖动特性。周期性采样的另外一个特点就是所谓的自动重复。自动重复允许一个键的扫描码可以重复地被插入缓冲区,只要按着这个键,微处理器每个扫描周期都会读到该键的扫描码,也就会产生一个键值直到缓冲区满为止。自动重复功能有时是非常有用的,比如当你打算递增或者递减一个参数(也就是一个变量)值时,不必反复按键进行操作。如果该键被按住的时间超过自动重复的延迟时间,这个按键将被重复的确认按下。

3.A/D式键盘设计

在一些特殊应用中,由于I/O口比较紧张,而A/D端口却留有富余时,可以采用这种A/D式的键盘设计方案。很多单片机都集成了A/D转换功能,并且具有很多A/D口且使用不完,利用其A/D口的读取功能来完成键盘的识别将变得十分简单方便。其基本原理如图3-22所示。

图3-22 利用A/D转换的键盘设计

当某个按键被按下后,其相应电阻被短接,导致A/D点的电压发生改变,通过A/D转换可以读取对应的A/D值。只要电阻阻值不同,就可以从电压值的变化中判断被短接的电阻是哪一个,进而知道按键的位置。由于A/D转换式的键盘设计可以十分容易地实现多个按键的识别,只需要使用极少的引脚,而且A/D转换精度通常可以达到8位以上,完全可以支持多个按键的识别,因此,这在工具在应用中具有一定的实际使用价值。但是这种电路也存在缺点,就是需要保证按键的接触电阻较小。一旦因长期使用导致按键接触电阻变大,这种方式就可能产生错误的按键识别,从而导致错误的结果。

3.4.2 触摸屏原理及接口

触摸屏作为一种最直观的操作界面,被广泛应用于嵌入式设备中,而且随着微处理器性能的不断提高,带有触摸屏操作界面的嵌入式装置也越来越丰富。

1.触摸屏的基本原理

触摸屏按其工作原理的不同,可分为表面声波屏、电容屏、电阻屏和红外屏几种,且每一类触摸屏都有其各自的优缺点。下面简单介绍每一类触摸屏技术的工作原理和特点。

(1)电阻技术触摸屏

电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏。这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(ITO氧化铟,透明的导电电阻)导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层,内表面也涂有一层ITO涂层,在它们之间有许多细小的(小于1/1000英寸)透明隔离点把两层导电层隔开绝缘。当手指触摸屏幕时,两层导电层在触摸点位置就有了接触。这就是电阻技术触摸屏最基本的原理。

图3-23 电阻触摸屏触摸示意图

电阻触摸屏的触摸示意图详见图3-23。这种触摸屏的特点是:高解析度、高速传输反应;表面硬度处理,减少擦伤、刮伤及防化学处理;具有光面及雾面处理;一次校正,稳定性高,不易漂移。

(2)表面声波技术触摸屏

表面声波技术是利用声波在物体的表面进行传输。当有物体触摸到表面时,阻碍声波的传输,换能器侦测到这个变化,反映给计算机,进而进行鼠标的模拟。

表面声波屏特点是:清晰度较高、透光率好;高度耐久,抗刮伤性良好;一次校正不漂移;反应灵敏;适合于办公室、机关单位及环境比较清洁的场所。

表面声波屏需要经常维护,因为灰尘、油污甚至饮料的液体沾污在屏的表面,都会阻塞触摸屏表面的导波槽,使波不能正常发射,或使波形改变致使控制器无法正常识别,从而影响触摸屏的正常使用。因此,用户需严格注意环境卫生,必须经常擦抹屏的表面以保持屏面的光洁,并定期作一次全面彻底擦除。由于这种触摸屏对环境要求较高,因此,现在应用的已经越来越少。

(3)电容技术触摸屏

电容技术触摸屏(Capacity Touch Panel,CTP)是利用人体的电流感应进行工作。电容屏是一块四层复合玻璃屏,玻璃屏的内表面和夹层各涂一层ITO(纳米铟锡金属氧化物),最外层是只有0.0015mm厚的矽土玻璃保护层,夹层ITO涂层作工作面,四个角引出四个电极,内层ITO为屏层以保证工作环境。

当用户触摸电容屏时,由于人体电场的作用,用户手指和工作面形成一个耦合电容。因为工作面上接有高频信号,于是手指吸收走一个很小的电流,这个电流分别从屏的四个角上的电极中流出,且理论上流经四个电极的电流与手指头到四角的距离成比例,控制器通过对四个电流比例的精密计算,得出的位置可以达到99%的精确度,具备小于3ms的响应速度。

电容屏主要有自电容屏与互电容屏两种。以现在较常见的互电容屏为例,内部由驱动电极与接收电极组成,驱动电极发出低电压高频信号投射到接收电极形成稳定的电流,当人体接触到电容屏时,由于人体接地,手指与电容屏就形成一个等效电容,而高频信号可以通过这一等效电容流入地线,这样,接收端所接收的电荷量减小。当手指越靠近发射端时,电荷减小越明显,最后根据接收端所接收的电流强度来确定所触碰的点。

电容屏要实现多点触控,靠的就是增加互电容的电极,简单地说,就是将屏幕分块,在每一个区域里设置一组互电容模块且都是独立工作,所以电容屏就可以独立检测到各区域的触控情况,进行处理后简单地实现多点触控。

我们将电容屏与电阻屏做一个对比。

首先,电容屏能更好地支持多点触控。多点触摸屏有别于传统的单点触摸屏,其最大特点在于可以两只手、多个手指,甚至多个人同时操作屏幕的内容,更加方便与人性化。多点触摸技术也叫多点触控技术。与电阻屏相比,电容触屏比较容易实现多点触摸技术,目前多点触控技术已在电容屏上基本实现。

其次,电容屏造价更高。虽然电容屏拥有诸多优点,但是因为其材料特殊、工艺精湛,其造价较高。当然,这也跟厂商的不同而不同。一般来说,电容屏的价格也会比电阻屏贵15%~到40%,这些额外成本对旗舰级产品的可能影响可能较小,但是对于中、底低等价位智能手机而言确实却是高门槛,所以目前市场上的多数智能手机价格不菲,其中很多很大一部分原因是其使用了电容屏的缘故。

图3-24 四线式电阻触摸屏原理

2.电阻式触摸屏与显示器的配合

一般触摸屏将触摸时的X、Y方向的电压值送到A/D转换接口,经过A/D转换后的X与Y值仅是对当前触摸点的电压值的A/D转换值,不具有实用价值。这个值的大小不但与触摸屏的分辨率有关,而且也与触摸屏和LCD贴合的情况有关。电阻屏可以分为四线式、五线式、七线式、八线式电阻触摸屏。四线式电阻触摸屏基本原理如图3-24所示。

(1)四线触摸屏

四线触摸屏包含两个阻性层,其中一层在屏幕的左右边缘各有一条垂直总线,另一层在屏幕的底部和顶部各有一条水平总线。为了在X轴方向进行测量,将左侧总线偏置为0V,右侧总线偏置为VREF,将顶部或底部总线连接到ADC,当顶层和底层相接触时即可做一次测量。

为了在Y轴方向进行测量,将顶部总线偏置为VREF,底部总线偏置为0V,将ADC输入端接左侧总线或右侧总线,当顶层与底层相接触时即可对电压进行测量。

对于四线触摸屏,最理想的连接方法是将偏置为VREF的总线接ADC的正参考输入端,并将设置为0V的总线接ADC的负参考输入端。

(2)五线触摸屏

五线触摸屏使用了一个阻性层和一个导电层。导电层有一个触点,通常在其一侧的边缘。阻性层的四个角上各有一个触点。为了在X轴方向进行测量,将左上角和左下角偏置到VREF,右上角和右下角接地。由于左右角为同一电压,其效果与连接左右侧的总线差不多,类似于四线触摸屏中采用的方法。五线式电阻屏原理如图3-25所示。

图3-25 五线式电阻屏原理图

为了沿Y轴方向进行测量,将左上角和右上角偏置为VREF,左下角和右下角偏置为0V。由于上下角分别为同一电压,其效果与连接顶部和底部边缘的总线大致相同,类似于在四线触摸屏中采用的方法。这种测量算法的优点在于它使左上角和右下角的电压保持不变,但如果采用栅格坐标,X轴和Y轴需要反向。对于五线触摸屏,最佳的连接方法是将左上角(偏置为VREF)接ADC的正参考输入端,将左下角(偏置为0V)接ADC的负参考输入端。

(3)七线触摸屏

七线触摸屏的实现方法除了在左上角和右下角各增加一根线之外,与五线触摸屏相同。执行屏幕测量时,将左上角的一根线连到VREF,另一根线接SAR ADC的正参考端。同时,右下角的一根线接0V,另一根线连接SAR ADC的负参考端。导电层仍用来测量分压器的电压。

(4)八线触摸屏

除了在每条总线上各增加一根线之外,八线触摸屏的实现方法与四线触摸屏相同。对于VREF总线,将一根线用来连接VREF,另一根线作为SAR ADC的数模转换器的正参考输入。对于0 V总线,将一根线用来连接0V,另一根线作为SAR ADC的数模转换器的负参考输入。未偏置层上的四根线中,任何一根都可用来测量分压器的电压。

在电阻式触摸屏中,以四线电阻式触摸屏的使用量最为广泛。每次按压后,将产生4个电压信号,即X+、Y+、X-、Y-,它经过A/D得到相应的值。LCD分辨率与触摸屏的分辨率一般是不一样的,坐标也不一样,因此,如果想得到体现LCD坐标的触摸屏位置,还需要在程序中进行转换。电阻式触摸屏在使用前通常需要进行一次校正操作,校正后可以在较长的时间内连续使用。

有很多高档单片机带有专门设计的触摸屏接口,可以方便地编程使用。如果单片机没有内置专用的触摸屏接口,则可以利用A/D转换接口通过程序来实现对触摸屏的使用,也可以使用专用的接口芯片来完成这一功能。四线式电阻触摸屏与CPU接口电路如图3-26所示。

图3-26 四线式电阻触摸屏接口示意图

3.4.3 传感器及其接口

1.传感器基础

在嵌入式系统中,CPU的输入信号除了人以外,更多的是需要了解外部环境和信息。这些信息通常是一些连续变化的模拟信号,需要通过一定的方式转换成电信号,并变换成CPU能够识别和处理的数字信息。这样,CPU才能够根据这些信息来做出正确的处理。这里将各种模拟信号转换成电信号的装置就是传感器。

国家标准GB7665—87对传感器下的定义是:“能感受规定的被测量件并按照一定的规律转换成可用信号的器件或装置,通常由敏感元件和转换元件组成。”传感器是一种检测装置,能感受到被测量的信息,并能将检测感受到的信息按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。它是实现自动检测和自动控制的首要环节。

“传感器”在新韦式大词典中定义为:“从一个系统接受功率,通常以另一种形式将功率送到第二个系统中的器件。”根据这个定义,传感器的作用是将一种能量转换成另一种能量形式,所以不少学者也用“换能器—Transducer”来称谓“传感器—Sensor”。

(1)传感器静态特性

传感器的静态特性是指对静态的输入信号,传感器的输出量与输入量之间所具有相互关系。因为这时输入量和输出量都和时间无关,所以它们之间的关系,即传感器的静态特性可用一个不含时间变量的代数方程,或以输入量作横坐标,把与其对应的输出量作纵坐标而画出的特性曲线来描述。表征传感器静态特性的主要参数有线性度、灵敏度、分辨率、迟滞、重复性、漂移等。

①线性度:指传感器输出量与输入量之间的实际关系曲线偏离拟合直线的程度。其定义为在全量程范围内实际特性曲线与拟合直线之间的最大偏差值与满量程输出值之比。

②灵敏度:灵敏度是传感器静态特性的一个重要指标。其定义为输出量的增量与引起该增量的相应输入量增量之比。用S表示灵敏度。

③迟滞:传感器在输入量由小到大(正行程)及输入量由大到小(反行程)变化期间,其输入输出特性曲线不重合的现象成为迟滞。对于同一大小的输入信号,传感器的正反行程输出信号大小不相等,这个差值称为迟滞差值。

④重复性:重复性是指传感器在输入量按同一方向作全量程连续多次变化时,所得特性曲线不一致的程度。

⑤漂移:传感器的漂移是指在输入量不变的情况下,传感器输出量随着时间变化,此现象称为漂移。产生漂移的原因有两个方面,一是传感器自身结构参数;二是周围环境,如温度、湿度等。

(2)传感器的线性度(Linearity)

通常情况下,传感器的实际静态特性输出是条曲线而非直线。在实际工作中,为使仪表具有均匀刻度的读数,常用一条拟合直线近似地代表实际的特性曲线、线性度(非线性误差)就是这个近似程度的一个性能指标。

拟合直线的选取有多种方法。如将零输入和满量程输出点相连的理论直线作为拟合直线;或将与特性曲线上各点偏差的平方和为最小的理论直线作为拟合直线,此拟合直线称为最小二乘法拟合直线。

(3)传感器的灵敏度(Sensitivity)

灵敏度是指传感器在稳态工作情况下输出量变化△y对输入量变化△x的比值。它是输出一输入特性曲线的斜率。如果传感器的输出和输入之间呈显线性关系,则灵敏度S是一个常数。否则,它将随输入量的变化而变化。

灵敏度的量纲是输出、输入量的量纲之比。例如,某位移传感器,在位移变化1mm时,输出电压变化为200m V,则其灵敏度应表示为200m V/mm。当传感器的输出、输入量的量纲相同时,灵敏度可理解为放大倍数。提高灵敏度,可得到较高的测量精度。但灵敏度愈高,测量范围愈窄,稳定性也往往愈差。

(4)传感器的分辨率和阈值(Resolution and Threshold)

分辨率是指传感器可感受到的被测量的最小变化的能力。也就是说,如果输入量从某一非零值缓慢地变化,当输入变化值未超过某一数值时,传感器的输出不会发生变化,即传感器对此输入量的变化是分辨不出来的。只有当输入量的变化超过分辨率时,其输出才会发生变化。

传感器在满量程范围内各点的分辨率通常并不相同,因此常用满量程中能使输出量产生阶跃变化的输入量中的最大变化值作为衡量分辨率的指标。上述指标若用满量程的百分比表示,则称为分辨率。分辨率与传感器的稳定性有负相相关性。

阈值是指使传感器的输出端产生可测量变化量的最小被测量输入量值,即指零附近的分辨力。有的传感器在零位附近有严重的非线性,形成所谓“死区”(dead band),则将死区大小作为阈值;更多情况下,阈值主要取决于传感器噪声大小,因而有的传感器只给出噪声电平。

(5)传感器的迟滞(Hysteresis)

传感器的迟滞特性表明传感器在正(输入量增大)反(输入量减小)行程中输出与输入曲线不重合的程序。迟滞大小一般由实验方法测得。迟滞误差以正反向输出量的最大偏差与满量程输出之比的百分数表示。传感器材料的物理特性是造成迟滞的最主要原因。

(6)传感器的重复性(Repeatability)

传感器的重复性是指传感器在输入量按同一方向作全量程连续多次变动时所得特性曲线间不一致的程度。各条特性曲线越靠近,说明重复性越好。重复性所反映的是传感器精度程度的重要指标。当然,重复性好坏也与许多随机因素有关,它属于随机误差,要用统计规律来确定。

(7)传感器漂移(Drift)

传感器漂移是指在外界干扰情况下,一定时间间隔内,传感器输出量发生与输入量无关、不需要的变化。漂移量的大小也是衡量传感器稳定性的一个重要指标。传感器的漂移可能会导致严重后果。

(8)传感器动态特性

所谓动态特性,是指传感器在输入变化时,它的输出的特性。在实际工作中,传感器的动态特性常用它对某些标准输入信号的响应来表示。这是因为传感器对标准输入信号的响应容易用实验方法求得,并且它对标准输入信号的响应与它对任意输入信号的响应之间存在一定的关系,往往知道了前者就能推定后者。最常用的标准输入信号有阶跃信号和正弦信号两种,所以传感器的动态特性也常用阶跃响应和频率响应来表示。

2.传感器与CPU的接口方式

由于传感器将各类非电或非标准电信号转换成标准电信号,而这种转换有时非常微弱,难以传送和识别,需要非常精密的放大器等专用电路进行放大和调理,以得到在标准范围的电信号,从而便于传送和应用。因此,在实际的工业生产中,更多地是将一些传感器与信号调理电路一并封装,形成所谓的变送器。

变送器的传统输出直流电信号有0~5V、0~10V、1~5V、0~20m A、4~20m A等。目前,工业上最广泛采用的是用4~20m A电流来传输模拟量。

采用电流信号的原因是不容易受干扰。电流源内阻无穷大,这导线电阻串联在回路中不影响精度,在普通双绞线上可以传输数百米。上限取20m A是因为防爆的要求:20m A的电流通断引起的火花能量不足以引燃瓦斯。下限没有取0m A的原因是为了能检测断线:正常工作时不会低于4m A,当传输线因故障断路,环路电流降为0。常取2m A作为断线报警值。

电流型变送器将物理量转换成4~20m A电流输出,必然要有外电源为其供电。最典型的是变送器需要两根电源线,加上两根电流输出线,总共要接4根线,称之为四线制变送器。电流输出也可以与电源公用一根线(公用VCC或者GND),节省一根线,称之为三线制变送器。

图3-27 两线制变送器连接示意图

其实大家也可以注意到,4~20m A电流本身就可以为变送器供电,如图3-27所示。变送器在电路中相当于一个特殊的负载,特殊之处在于变送器的耗电电流在4~20m A之间根据传感器的输出而变化,显示仪表只需要串连在电路中即可。这种变送器只需外接两根线,因而被称为两线制变送器。工业电流环标准下限为4m A,因此只要在量程范围内,变送器至少有4m A供电。

电流型的变送器需要将电流转换成相应的电压,然后才能通过A/D转换变成数字量。为了确保电流到电压的转换不会因电阻的误差而影响到测量值的准确性,需要使用专用的高精度电阻。该电阻为250Ω时,对应的测量信号电压范围为1~5V;如果该电阻选取500Ω时,则其对应的测量信号电压范围为2~10V。选择时应根据AD转换器件的输入信号范围来确定采用的转换电阻值。同时还应注意不同电压范围的供电电压取值要求。

3.AD转换器件选择及接口

如果单片机无AD转换功能,则需要外接专用的AD转换器件。AD转换器件有串行工作和并行工作两种类型。串行工作的器件只需要极少的连接线就可以将转换的数值传送到MCU中,而并行工作方式则需要使用4位或8位接口来完成数据的传送。串行工作方式一般由单片机提供时钟信号,在AD转换器和MCU间进行同步通信,会占用较多的时间。而使用并行方式则只需要一个总线周期就可以完成对AD转换值的读取。在实际使用时,应根据CPU的I/O口资源和速度要求等选择合适的器件。

在AD转换的器件选择上,需要考虑转换速度、转换精度、分辨率、待转换信号范围等因素。

(1)转换速度选择

转换速度最低应满足采样定理的基本条件,即采样频率是被采样信号最高频率的两倍。在实际应用中,通常会选择比被采样对象频率高更多的AD转换器件,以保证采样的质量和数量要求。需要注意的是,对于多通路的AD转换器件,其标称的最高转换速率往往是多路复用的。比如一个器件标称其最高转换速率可以达到200KSPS,但是可能这个器件有8路输入,如果用户同时使用这8路AD口,则每一路是得不到200KSPS的速率的,而是平均为200K/8=25KSPS。因此,在使用时需要考虑由于分时使用产生的延迟问题。

(2)转换精度选择

转换精度反映的是转换后的值与实际值之间的差距,可以用绝对误差和相对误差来表示。这个精度一方面由器件的好坏决定,另一方面还与AD转换所使用的基准参考电压有关。如果参考电压精度高,则转换精度相对就高,否则就会有较大误差。

(3)转换分辨率选择

转换分辨率决定了能够分辨的最小变化值,它由转换后的数值长度决定,转换后的数值越长,则其分辨率就越高。如一个10位的ADC可以得到的数值范围是0~210,如果其转换的输入电压范围为0~5V,则其分辨率可以达到5/210≈5毫伏。如果使用一个12位的ADC可以得到的数值范围是0~212,同样对0~5V信号采样,则其分辨率可以达到5/212≈1.2毫伏。很显然,无论多高的分辨率,在转换过程中也会存在一定的误差,只要每次信号变化小于分辨率时就可能会出现转换偏差,这种误差被称为量化误差。在选择器件时并不是选择分辨率越高越好,而是应根据需要合理考虑。因为分辨率越高,通常意味着更大的数据处理量和更高的器件价格。

(4)待转换信号类型问题

待转换的信号可以分为两类:一类是仅有正电压的单极性信号,其电压范围在0~5V或0~10V之间;另一类是具有正负电压的双极性信号,其电压范围在-5~+5V或-10~+10V之间。对于这两类不同信号,需要选择合适的转换器件和转换电路。

3.5 输出技术及常用器件

输出设备是计算机系统中用于反映计算结果、体现计算功能、实现人机交互的重要手段,离开输出设备,人们几乎无法使用计算机。在PC机中最常用的输出设备就是显示器、打印机、绘图仪、音箱等。在嵌入式系统中,输出设备通常是以模拟量、开关量、数值等方式表达。随着半导体集成技术的发展,现在越来越多的嵌入式系统中使用LCD作为输出方式,用以提高输出的信息量及提供更友好的用户界面。

3.5.1 LED显示及驱动方法

LED是最简单直观的一种输出器件。常用的LED显示包括单管LED显示、LED组合模块显示、大型LED屏幕显示等方式。

图3-28 LED基本工作电路

1.单管LED显示

单个LED显示是最简单的一种显示方式,最适合于开关信号的表达,并可以利用不同的颜色来反映不同的工作状态。其基本电路如图3-28所示。

LED不同于电阻,它是非线性的电压敏感器件,电压变化会引起较大的电流变化,而且一旦电流过大将导致其烧毁。因此,所有LED在接入电源时都需要加一个限流电阻,以防止电压波动产生的损坏。LED的基本导通电压通常为1.8V,也就是说,只有当LED两端的电压差超过1.8V时LED才会工作,否则将处于截止状态。其正常工作电压一般为2~2.2V,工作电流为10~20m A,超高亮度的LED其工作电流可能会大一些。用于照明的超高亮度LED,需要专用的恒流源来控制其工作。根据以上的分析可以得出LED上限流电阻的大小计算公式为:

对于单管双色LED来说,只需要增加一个控制脚,就可以实现一只LED管用两种不同颜色显示不同状态的功能。

2.LED组合模块显示

LED组合模块方式在很多嵌入式系统中都得到广泛使用。通过LED的组合可以显示数字、图形、符号、形式化信号强度等各类信息。最常用的LED组合模块就是LED8段数码管。这种数码管通过组合8只或更多LED,形成具有特定显示笔画的一个模块,通过控制各笔画的亮灭完成对不同数字的显示。8段数码管的基本结构如图3-29所示。

图3-29 八段数码管的结构示意图

每一段都是一个LED,控制不同LED的显示将得到不同的显示符号。8段数码管最适合显示的就是0~9的数据符号,在共阳极方式下由低电平控制点亮LED,在共阴极方式下由高电平控制点亮LED。通常用8位二进制数来表示对8段数码管的控制,8位二进制数的最高位对应LED的dp,最低位对应LED中的a。于是可以容易地推导出0~9这10个符号对应的十六进制值,详见表3-9所示。

表3-9 八段数码管数值显示码表

另外,8段数码管也可以表示常用的一些英文字母,读者可依此类推。

8段数码管的电路和单LED电路相似,只不过8段数码管需要用8根线来控制8个LED的亮灭。因此8段数码管在电路中也需要使用限流电阻,电阻的计算方法与上一节相同。需要注意的事,并不是所有8段数码管都只使用一个LED来显示一个笔划,在显示尺寸较大的8段数码管上,有可能每一段笔划都是由多个LED串联或并联而来。如图3-30所示为一个5寸大小的LED8段数码显示部件。

图3-30 5寸8段数码管的内部电路

可见,每个发光段使用了14个LED,两组并联,因此每一段的工作电压不低于12.6V,工作电流为20~40m A,在此基础上才能计算出其各段的限流电阻和驱动电流的大小。

3.8段数码管的驱动

当8段数码管的工作电压、工作电流较小时,可以直接用CPU的引脚来驱动,通常单片机是有能力驱动小的8段数码管的。其连接电路如图3-31所示。

图3-31 单片机直接驱动八段数码管

可见,每个8段数码管需要使用8个I/O来控制,如果使用的8段数码管较多,显然采用这种方式连接单片机的引脚将难以满足需要。而且这样的电路对单片机的功耗也会产生很大影响,进而对单片机工作稳定性产生影响。在实际应用中,需要使用多个8段数码管时,如果不打算增加额外的器件,则可以采用简单的扫描驱动方式来实现多个8段数码管的驱动和显示。其基本电路如图3-32所示。

图3-32 扫描方式下多个8段数码连接

扫描方式下的多个8段数码管电路中,单片机要想在不同的位置上显示不同的内容,需要用位控制线控制哪一位8段数码管可以工作,用控制线决定显示的符号是什么。很显然,如果采用这种方式,则单片机需要反复不停地轮流显示每一位上的符号,这将产生很大的系统开销。除非单片机什么都不做,只用于显示,编程工作才会比较方便,否则编程难度将会变大,而且难以保证显示效果。

为了减少对单片机的端口占用和运算资源的开销,常常使用74LS164、74LS595等移位寄存器来完成对多位8段数码管的控制。其基本电路如图3-33所示。

使用移位寄存器后,只需要使用简单的3个信号就可以控制多位8段数码管的显示,既不占用过多的单片机I/O资源,显示时也只需要输出一次就可以一直保持各显示内容不变。在改变显示内容时,重新输出显示的各位段值即可,对单片机资源的占用极少。图中三极主要起的作用是在更新显示内容或不需要显示时,可以由单片机控制将8段数码管的电源切断。

图3-33 带移位寄存器的多位8段数码管电路

如果使用的8段数码管所需要的工作电流、工作电压等参数发生变化时,需要对以上电路进行调整。当工作电流需要加大时,每一段码都需要有相应的驱动电路,否则可能导致达不到额定的亮度。当工作电压加大时,需要考虑单片机的5V控制电压能否控制三极管正确地切断供电。按照上面的电路,如果VCC的电压达到10V甚至更高,则单片机的ALE无论输出1还是0都无法控制三极管,也就无法控制是否显示或在更新数据时的消隐。

4.大型LED显示屏

随着超高亮度LED技术的成熟,现在越来越多的地方开始使用LED大型显示屏。这种显示屏以超高亮度的LED作为显示的基本单元,通过控制电路控制显示屏上每个点的亮灭来实现对图像、文字等信息的显示。这种显示屏采用的是基于扫描方式的显示控制,其基本结构如图3-34所示。

图3-34 LED显示屏的基本结构示意图

但是显示屏上的LED点数以万计,很显然,不能通过单片机的I/O口来实现控制,这需要一系列硬件电路的支持。为了使显示的内容可以变化,单片机还承担着接收显示数据的任务。对显示屏扫描的任务除了可以用单片机编程来完成以外,还可以通过特定的硬件电路来完成,如在FPGA上开发的专用扫描电路。而且通过硬件方式来进行扫描其效率更高,速度更快,稳定性更好。所以大型的LED显示屏通常采用专用的硬件电路来进行显示扫描,而单片机只负责接收显示数据和将显示的点阵放到指定位置工作。大型LED显示屏的控制是一个专业性较强的话题,这里限于篇幅不作进一步讨论,有兴趣的读者可以查阅相关文献和资料。

3.5.2 LCD显示及驱动方法

1.LCD(Liquid Crystal Display)原理

LCD液晶显示器是Liquid Crystal Display的简称,其构造就是上下两片平行的玻璃当中放置液态的晶体,类似于夹心饼干的三层结构。两片玻璃上都附有偏振片,只允许一个方向振动的光波通过,并且两片偏振片呈垂直安放。如果没有液晶,这两个偏振片将滤掉所有的光线。而一旦在玻璃片间加入了液晶,由于液晶体对光线的传导作用,使得光线会跟随液晶体发生扭转,并能够通过玻璃片。如果在液晶体两端加上电压,液晶体将失去扭转的排列方式,光线就无法通过两层偏振片,于是就会呈现黑色。因此,如果在两片玻璃中间加入许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将可以通过光线透射来产生画面。因此,LCD的驱动控制归于对每个液晶单元的通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使光线不通过。其基本工作原理示意图如图3-35所示。

图3-35 LCD工作原理

由于LCD本身并不发光,只能控制光线的通过与否。因此,所有的LCD都需要借助外来光源才能显现出画面。光源可以有两种方式提供:透射式和反射式。如图3-36所示。

通常为了保证显示的效果,在对显示质量要求较高的场合都是使用透射式LCD,这个光源被称为LCD背光。传统的LCD背光是采用高压屏光管的方式提供,而现在随着LED照明技术的提高,很多LCD背光开始使用LED光源。如笔记本电脑的LCD显示屏即为透射式,屏后面有一个光源,因此外界环境可以完全是黑的。而一些廉价小电子产品、小型仪表等以电池供电的装置如电子手表、数字万用表等,则更多地使用反射式LCD。这类LCD不需要外界提供光源,靠反射光来工作,既可以节约成本又可以减少耗电,延长电池的使用寿命。当然,其显示效果会因外界光线的变化而受到影响。

图3-36 LCD光源的提供方式

2.LCD的分类

LCD从液晶驱动方式上可以分为三类,即扭曲向列TN(Twisted Nematic)型、超扭向列STN(Super Twisted Nematic)型和薄膜晶体管TFT(Thin Film Transistor)型。目前,彩色显示屏以TFT为主,而黑白显示屏由以TN及STN屏为主。

这三种LCD显示屏的比较如表3-10所示。

3.LCD的接口及使用

(1)总线接口方式

带有接口部件的LCD屏一般都使用总线接口方式,这种LCD可以方便地与各种低档单片机进行接口,如8051系列单片机。这时接口上传递的只是显示的相对位置与显示值等数字信息。由于LCD已经带有驱动硬件电路,因此模块给出的是总线接口,便于与单片机的总线进行接口。驱动模块具有8位数据总线,外加一些电源接口和控制信号,而且还自带显示缓存,只需将要显示的内容送到显示缓存中就可以实现内容的显

表3-10 LCD不同驱动方式比较

示。由于只有8条数据线,因此常常通过控制信号来实现地址与数据线的复用,以达到把相应数据送到相应显示缓存的目的。常用的小型液晶显示模块通常使用这种接口与MCU进行连接,带有这种接口的LCD在8位单片机系统应用较多。

(2)扫描器控制方式

还有一种LCD显示屏,没有驱动电路,屏上每个点的控制需要有外部扫描电路来扫描控制完成。这种LCD体积小,但需要额外的驱动芯片,通常使用带有LCD驱动能力的高档MCU驱动,如ARM系列的S3C44B0X、S3C2410等。具有内置的LCD控制器,它具有将显示缓存(在系统存储器中)中的图象数据传输到外部LCD驱动电路的逻辑功能。对于不同尺寸的LCD,具有不同数量的垂直和水平象素、数据接口的数据宽度、接口时间及刷新率,而LCD控制器可以进行编程控制相应的寄存器值,以适应不同的LCD显示板。这种LCD显示屏,通常是彩色显示屏,在32位高档单片机系统中应用较多。

4.LCD显示屏的技术参数

(1)分辨率

分辨率是反映LCD显示能力的一个重要指标,常由水平显示点数乘以垂直显示点数表示。320*240,表示可显示240行,每行320个点。

(2)色彩

色彩对于非彩色屏应表示为灰度,即可以由深至浅显示出多少不同层次的灰色。对于彩色屏则是指其表达的颜色的不同数目。STN屏可以通过抖动方式控制三基色的显示灰度来控制组合出多种色彩,而TFT屏则可以直接用电压控制基色的显示灰度来控制组合出色彩,因此更稳定而多样。所以STN屏被称为伪彩屏,而TFT屏则被称为真彩屏。

(3)点距

点距反映显示屏的颗粒度,对于同一显示分辨率的显示屏,当其点距不同时,其显示屏面积会不同,显示效果也就不相同。显示屏面积越大其点距越大,显示的图像就越粗糙;显示屏面积越小其点距越小,显示的图像就越细腻。因此,相同显示面积下点距越小,则分辨率越高,显示效果越细腻。

(4)可视角度

可视角度是指人眼与显示屏之间的观看形成的角度范围,反映显示屏的可视性。如果可视角度小,其可观看的范围窄,在使用时限制越大;可视角度大,其可观看范围大,在使用时限制就小。在特殊条件下,可能会使用可视角度很小的产品,如自动柜员机上显示屏的可视角度就很小,除了操作者外其他人几乎都看不见屏幕上显示的是什么。

(5)对比度

对比值是定义最大亮度值(全白)除以最小亮度值(全黑)的比值。为了要得到全黑画面,液晶模块必须完全把由背光源而来的光完全阻挡,但在物理特性上,这些元件并无法完全达到这样的要求,总是会有一些漏光发生。一般来说,人眼可以接受的对比值约为250∶1。

(6)亮度

液晶显示器的最大亮度通常由背光源来决定,亮度值一般都在200~250 cd/m2间。液晶显示器的亮度略低,屏幕就会发暗。虽然技术上可以达到更高亮度,但是这并不代表亮度值越高越好,因为太高亮度的显示器有可能使观看者眼睛受伤。

5.LCD模块接口电路

带有总线式接口的LCD显示模块与CPU之间的连接如图3-37所示(以分辨率为128*64的点阵式单色显示屏为例)。

图3-37 LCD模块与单片机之间的连接

LCD模块的引脚功能详见表3-11。

表3-11 LCD模块引脚功能

彩色液晶显示屏,从接口上看要比单色的LCD模块复杂得多,而且为了提高数据传送速度和控制的灵活性,往往不包括控制器,需要由单片机自带或另接控制器。其接口主要分四个部分:数据接口,通常8位数据线;控制接口,通常为片选、数据和指令使能控制线;同步接口,通常为同步时钟、行同步信号和帧同步信号;其他信号或引脚,包括电源线、外接器件引脚等。不同的屏和不同的单片机,其接口方式也有差别,需要根据其资料确定。如果对显示速度要求不高,甚至可以利用普通单片机的I/O通过软件方式来控制显示。

6.LCD显示模块指令

LCD显示模块是通过指令的方式来实现对其的控制。点阵式LCD的指令为为两类,一类是基本指令,另一类是扩展指令。基本指令是用于进行字符显示,而扩展指令则是用于支持图形显示。这两类指令格式详见表3-12所示(以12864LCD显示屏为例,不同主控芯片,指令稍有出入)。

表3-12 12864LCD模块基本指令及扩展指令(后6条为扩展指令)

在12864LCD显示模块中,有三种可以操作的内存地址,其中DDRAM和CGRAM是在字符显示方式下,通过基本指令访问的内存,用于在指令位置上显示字符。DDRAM用于存放待显示字符的编码,CGRAM则是一组由用户定义的字符的显示码,在标准字库中指不到某个字符时,可以使用CGRAM来定制。可定制的汉字有两个,分别对应CGRAM的00H~0FH地址范围和10H~1FH地址范围。CGRAM与DDRAM中数据之间的关系如图3-38所示。

图3-38 DDRAM内容与CGRAM的地址及其内容的关系示意

GDRAM是在图形显示的方式下,通过扩展指令访问的内存。12864LCD显示模块,可以支持4行8列的汉字显示,或者128*64的点阵位图显示。通过对显示内存的操作,就可以直接对该内存对应的显示点进行控制。需要注意的是,12864的显示内存地址与显示位置之间的关系并不是如我们看到的那样顺序相关,显示位置与显示内存之间的实际关系如图3-39所示。

由图中可以看出,虽然显示器具有128列、64行,共可显示汉字4行8列。但是其显示内容在内存中却不是由第1行到第64行排列的。实际排列状态是256列、32行(两行16列汉字)。也就是说,第1行的内容后面紧跟着的是第33行、第1列的内容(第3行、第1个位置)。

当使用标准指令时,在12864上显示只需要在DDRAM的对应地址输入汉字的编码值或ASCII的编码值,显示屏内置有汉字库和ASCII码符号库,可将相应内容调入显示。DDRAM地址与显示位置之间的关系见表3-13。

图3-39 12864显示位与显示存关系图

表3-13  DDRAM地址与显示位置之间关系图

例如要在第1行第2个位置写入一个汉字,LCD的端口地址为LCD,则需要向显示屏口发送命令字为81H,并在指令后送出该汉字的两字节汉字码。

当使用扩展指令打开图形显示方式时,需要给出显示点所在的行号和列号,列号同样按0H~FH,行号则为0~1FH,在先送行号再送列号,送出地址后,紧接着送出两字节共16位显示值。这16位显示值与给出地址的行和列位置处的16个显示点一一对应,当该位为1时显示其对应点,该位为0时对应点不显示。编程实例可以参考第四章或第五章相关内容。

对于彩色LCD显示屏,不同公司的产品会有一定出入,指令格式也相对复杂。因此本书不再做介绍,有兴趣的读者可以查阅相关产品说明书获得。

3.6 执行部件及接口方法

在控制领域,嵌入式系统除了要获取外部信息进行处理外,还需要有一定的执行能力去完成控制任务,这些执行部件有的是通过间接方式完成的,有的则可以直接完成。所谓间接是指通过指令的方式控制受控对象,所谓直接是指通过一定的电信号控制一定器件来完成一定的动作。这一节以最常用的小型直流电机控制和小型步进电机控制为例,介绍了执行部件的设计和接口方法。

3.6.1 直流电机驱动和接口

直流电机在很多小型装置上是典型的执行装置。由于这种执行装置简单,容易控制,因此在很多低压装置上得到广泛使用,如遥控车、遥控飞机、智能赛车、光驱进盘结构等。

1.直流电机驱动方式

直流电机驱动可以采用两种方式进行控制,一种方式是使用机械式开关;另一种则是使用电子式开关。对其速度的控制可以采用电压直接控制,也可以采用PWM波占空比控制。

机械式开关通常是通过控制继电器来完成的,其基本电路如图3-40所示。

电路中只需要MCU的I/O口P1.1为高电平,则三极管Q将导通,并驱动继电器J闭合,使电机接通电源运转。如果使用电子式开关,则可以使用功率较大的晶体管来进行控制,或使用专用控制芯片进行控制。常用控制电路如图3-41所示。

图3-40 采用继电器的直流电机控制电路

图3-41 采用晶体管控制的电机驱动电路

在以上两个驱动电路中都只能控制电机是否工作,而不能控制电机的转动方向和转动速度。因此,在实际应用中用得并不多。考虑到使用继电器的灵活性和寿命问题,一般电机驱动更多地使用H桥式的晶体管驱动电路或专用驱动芯片,这样就可以很方便地实现电机的速度控制和方向控制。专用驱动芯片的结构简单、使用方便,被广泛使用。常用的驱动电路有SGS公司出品的L298N,L293D,摩托罗拉公司的MC33886等。不同芯片的连接方式和工作电压、电流范围有很大差异,在选择时需要认真查看其数据手册,以便正确使用。使用驱动芯片的直流电机控制电路示意图详见图3-42。

图3-42 使用驱动芯片的直流电机控制电路示意图

2.直流电机速度控制

控制直流电机的速度,最基本的方式就是调整其工作电压,电压低则速度慢。但是如何来调整其两端电压呢?最简单的思路就是采用串联电路,在电机上串联一定的负载,利用调整负载的分压来完成对电机上电压的控制。这种方式虽然简单,但是效率太低。另一种思路就是采用调整电压的方式来控制,目前最常使用的调整方式就是利用PWM作为控制信号,通过改变其占空比,来调整电路中平均电压。采用这种方式只是相当于在电机电路中加入了一个可开关,通过调整开关的接通和断开时间来控制加在电机上的电压,控制器几乎不消耗能量,因此是一种非常高效的控制手段。在电路中只需要将驱动电路的控制端连接到PWM发生器的输出端就可以了。有一部分驱动芯片(如SA60)甚至自带振荡电路,可以通过设置占空比独立控制直流电机的运转速度。

脉宽调制(PWM)是利用微处理器,以数字量输出的方式实现对模拟电路控制的一种技术,被广泛应用于测量、通信、功率控制、转速控制等许多领域。PWM的一个优点是从处理器到被控系统,其信号都是数字式的,无需进行数模转换。信号以数字形式传递可将噪声对系统的影响降到最小,噪声信号只有强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,才能对数字信号产生影响。

PWM是通过对模拟信号电平进行数字编码的方法来实现控制的一种技术方法。将模拟信号用数字方式进行编码,如果需要输出一定的模拟量,则以一个数字值来表示,该数字值可以控制计数器按一定占空比开关电路,让电流以通、断、通、断的形式输出,从而达到调整输出模拟信号的目的。PWM控制输出的是一个方波形式,任何时刻,其满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。其基本形式如图3-43所示。

图3-43 不同占空比的PWM示意图

上图显示了三种不同占空比的PWM信号。一个占空比为10%的PWM,即在信号周期中,10%的时间通,其余90%的时间断。另外两个显示的分别是占空比为50%和70%的PWM输出。这三种PWM输出编码分别是强度为满度值的10%、50%和70%的三种不同模拟信号值。例如,假设供电电源为9V,占空比为10%,则对应的是一个幅度为0.9V的模拟信号。

大多数负载(无论是电感性负载还是电容性负载)需要的调制频率高于10Hz。设想一下,如果电机先接通5秒再断开5秒,然后再接通、再断开……显然,这只会让人感觉到电机一会儿转了,一会儿停了,而不会感觉到电机因为电压的变化而发生转速的变化。要让电机取得电压变化的供电效果,通断循环周期与负载对开关状态变化的响应相比,时间必须足够短。这也是PWM波选择时需要考虑的一个问题,一般来说,在嵌入式应用中使用的PWM工作频率为1k Hz~200k Hz之间。可以根据需要,通过对单片机的设置来完成工作频率和占空比的调整。PWM波的控制在单片机中通常是通过对定时器的设置完成的,不同单片机在PWM波发生方面有较大区别,需根据芯片资料确定。有一些单片机不具备PWM波的发生能力,在选择单片机时要根据设计需要作出合理的选择。

3.6.2 步进电机驱动和接口

步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的,同时,也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

虽然步进电机已被广泛地应用,但步进电机并不能像普通的直流电机、交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统后方可使用。因此用好步进电机并非易事,它涉及到机械、电机、电子及计算机等许多专业知识。

步进电机分三种:永磁式(PM)、反应式(VR)和混合式(HB)。永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度。反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。混合式步进混合了永磁式和反应式的优点,它又分为两相和五相。两相步进角一般为1.8度,而五相步进角一般为0.72度。这种步进电机的应用最为广泛。一般来说,两相电机步距角大,高速特性好,但是存在低速振动区。而五相电机步距角小,低速运行平稳。所以,在对电机的运转精度要求较高,且主要在中低速段(一般低于600转/分)运行的场合应选用五相电机;反之,若追求电机的高速性能,对精度及平稳性无太多要求的场合应选用成本较低的两相电机。另外,五相电机的力矩通常在2NM以上。对于小力矩的应用,一般采用两相电机,而低速平稳性的问题可以通过采用细分驱动器的方式解决。

步进电机通常都使用专用驱动电路进行控制,其连接方式如图3-44所示。

在使用中需要注意以下几个问题:

(1)步进电机控制器在未接电机时不要上电,否则可能损坏控制器;

(2)不要带电插拔控制器上的引线;

(3)在单片机输出脉冲时,需要确认脉冲电平不超过控制器说明上额定的电压,否则需要串联一定大小的电阻以限流保护接口;

(4)如果要求较高转速,应逐步提高控制脉冲的频率,否则可能因失步而导致步进电机停转;

(5)不可以使用超过控制器最高工作电压的电源;

(6)应确保电源具有足够的负载能力。

图3-44 步进电机控制器与单片机连接

如果在使用中两相电机无法满足转角要求时,步进电机控制器通常还可以提供更多的细分,一般可以分为2细分、8细分、64细分等。这样可以使电机单步转动角度非常小,达到极高的控制精度,但须注意电机过小的控制转角容易产生失步。两相步进电机每步的转角一般为1.8度(200步/圈),如果采用2细分则可以达到0.9度,也就是每一圈400步;如果采用8细分则可以达到1600步/圈;如果使用64细分则可以达到12800步/圈。但实际使用的电机可能达不到这一精度。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈