PIC与计算机接口设计_第1页
PIC与计算机接口设计_第2页
PIC与计算机接口设计_第3页
PIC与计算机接口设计_第4页
PIC与计算机接口设计_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PIC与计算机接口设计

本章主要对PIC单片机系统的有关数据传输和数据通信的基本方

法及相关的器件芯片做较为详细的介绍,围绕PIC单片机在实际应用

中与计算机通信时的接口设计。根据通信的不同方式介绍PIC单片机

与计算机的各种通信方式和数据传输方式。

本章内容主要包括:PIC与计算机的串行通信、PIC的USART使用

及PIC的USB接口设计等。

PIC单片机(或者计算机)与外界进行的信息交换经常被人们称

为数据通信,通信的基本方式分为并行通信和串行通信两种。

并行通信是指一次就可以同时传送一个数据字的传输方式(其中

包括8位、16位,甚至更长位的数据)。其优点是传输速度快;缺点

是需要同时连接的线数多,尤其在通信距离较长时,传输线的成本会

急剧增加。对于单片机而言,还需要占用多个宝贵的弓脚资源。40引

脚的PIC16F87X内有一个并行通信模块PSP,它就是利用RD和RE端口的

11个引脚(8根数据线+3根控制线),来实现与其他处理器(如计算

机)之间的并行通信。

串行通信是指把一个数据字逐位顺序分时进行的传输方式。其缺

点是指传送速度较低,假设并行传送n位数据所需要的时间是T,那么

串行传送同样数据的时间至少nT,实际工程上往往总是大于nT,原因

是时间上还需要额外的开销。而串行通信的突出的优点是仅仅需要数量很少

的传输线,特别适合远距离传输。此外,对于PIC单片机而言,串行通信的另

一个优点就是,需要占用的引脚的资源较少。

PIC16F87X单片机内部集成了两个类型不同的串行通信模块,即通用同步

/异步收发器USART(UniversalSynchronous/AsynchronousReceiver

Transmitter)模块和主控同步串行端口MSSP(MasterSynchronousSerial

Port)模块。前者的主要应用目标是系统之间的远距离串行通信,此项技术

的应用历史比较久远。而后者的主要应用目标是系统内部近距离的串行扩展。

串行通信的实现,在制式、种类、形式、规范、标准、编码、检错、纠错、

帧结构、组网方式、调制方式等方面,存在着多种类型、变化、选择和解决

方案。例如,Philips公司发明的12c总线,Intel等公司提出的SMBUS总线,

Freescale公司首先应用的SPI接口,美国国家半导体公司(NSC)公司首先应

用的MicroWire接口,达拉斯公司推出的l-Wire总线,美国电子工业协会推荐

标准RS-232、RS433、RS-485接口,Intel等公司提出的USB总线,苹果公司提

出的IEEE-1394总线,博世公司提出的CAN总线,现场总线基金推出的FF总线,

Motorola公司联合东芝公司共同开发的LONworks总线等,都是用来实现与串

行通信功能相关的技术和规范。

8.1标准串行接口RS-232C接续

串行通信是指单片机或者计算机和外设之间使用一根数据信号线,

数据在一个数据信号线上一位一位地进行传输,每一位数据都占据一

个固定地时间长度,串行通信的特点是使用的数据线少,其传输的速

度比较慢。串行通信的优点也正体现在远程通信和上下位机通信中,

随着新的串行数据协议的诞生,速度和距离都有了较大提高。

一个完整的串行通信系统如图8.1所示,该通信系统包括数据终

端设备(DTE)和数据通信设备(DCE)。

1.数据通信设备DTE:DTE是产生二进制信号的数据源,也是

接收信息的目的,是由数据发送器或接收器或兼具两者组成的设备,

它可以是一台计算机。

2.数据通信设备DCE:DCE是一个使传输信号符合线路要求,

或者满足DTE要求的信号匹配器,它是提供数据终端设备与通信线路

之间通信的建立、维持和终止连接等功能的设备,同时执行信号变换

与编码,它可以是一个MODEM。

山井

图8.1串行通信系统

在数据通信、计算机网络以及分布式工业控制系统中,经常采用串行通

信来交换数据和信息。1969年,美国电子工业协会(EIA)公布了RS-232c作

为串行通信接口的电气标准,该标准定义了数据终端设备(DTE)和数据通信

设备(DCE)间按位串行传输的接口信息,合理安排了接口的电气信号和机械

要求,在世界范围内得到了广泛的应用。但它采用单端驱动非差分接收电路,

因而存在着传输距离不太远(最大传输距离15m)和传送速率不太高(最大位

速率为20Kb/s)的问题。远距离串行通信必须使用Modem,增加了成本。在分

布式控制系统和工业局部网络中,传输距离常介于近距离(<20m)和远距

离(>2km)之间的情况,这时RS-232c(25脚连接器)不能采用,用Modem又

不经济,因而需要制定新的串行通信接口标准。

1977年EIA缶U定了RS-449。它除了保留与RS-232c兼容的特点外,还

在提高传输速率,增加传输距离及改进电气特性等方面作了很大努力,并增

加了10个控制信号。与RS-449同时推出的还有RS-422和RS-423,它们是

RS-449的标准子集。另外,还有RS-485,它是RS-422的变形。RS-422、

RS-423是全双工的,而RS-485是半双工的。

RS-422标准规定采用平衡驱动差分接收电路,提高了数据传输速率(最

大位速率为10Mb/s),增加了传输距离(最大传输距离1200m)。

RS-423标准规定采用单端驱动差分接收电路,其电气性能与RS-232c

几乎相同,并设计成可连接RS-232c和RS-422。它一端可与RS-422连接,

另一端则可与RS-232c连接,提供了一种从旧技术到新技术过渡的手段。同

时又提高位速率(最大为300Kb/s)和传输距离(最大为600m)。

RS-485为半双工的,当用于多站互连时可节省信号线,便于高速、远距

离传送。许多智能仪器设备均配有RS-485总线接口,将它们联网也十分方便。

串行通信由于接线少、成本低,在数据采集和控制系统中得到了广泛的应用,

产品也多种多样。

8.1.1RS・232C接口规格

RS-232c其中RS是RecommendedStandard的缩写,代表标准,232是标

识符,C代表RS-232的最新一次修改(1969年),在这之前,有过RS-232A、

RS-232B标准,它规定连接电缆和机械、电气特性、信号功能及传送过程。

现在,计算机上的串行通信端口(RS-232)是标准配置端口,已经得到广泛

应用,目前计算机上一般都1〜2个标准RS-232c串口,即通道COM1和COM2。

1.RS-232c标准的电气特性

EIA-RS-232c对电器特性、逻辑电平和各种信号线功能都作了明确规定。在TXD和RXD

引脚上电平定义:逻辑1(MARK)=-3V-15V;逻辑0(SPACE)=+3〜+15V

在RTS、CTS、DSR、DTR和DCD等控制线上电平定义:信号有效(接通,ON状态,正

电压)=+3V〜+15V;信号无效(断开,OFF状态,负电压)=-3V〜T5V

对于数据(信息码):逻辑“1”的传输的电平为-3V〜-15V,逻辑“0”传输的电平

为+3V〜+15V;对于控制信号;接通状态(0N)即信号有效的电平为+3V〜+15V,断开状

态(OFF)即信号无效的电平为-3V〜-15V,也就是当传输电平的绝对值大于3V时,电路

可以有效地检查出来;而介于-3〜+3V之间的电压即处于模糊区电位,此部分电压将使得

计算机无法准确判断传输信号的意义,可能会得到0,也可能会得到1,如此得到的结果

是不可信的,在通信时候体现的是会出现大量误码,造成通信失败。因此,实际工作时,

应保证传输的电平在±(3〜15)V之间。

目前,大部分计算机的RS-232c通信接口都使用了DB9连接器,主板的接口连接器有9

根针输出,也有些比较旧的计算机使用DB25连接器输出,表8.1为RS-232c串口引脚定义菜

9针RS-232串口(DB9)325针RS-232串口(DB25)*

引孙倚耳小功能说明引孙简写p

载波侦测(Carrier载波侦测(Carrier

CD/82CD?

Detect)~Detect)产

2~RXDr接收数据(Receive)~33RXD^接收数据(Receive)

32TXD^发送数据(Transmit)一2PTXD^发送数据(Transmit)

数据终端准备(Data数据终端准备(Data

42DIR+3207DTR~

TerminalReady)♦TerminalRead/)r

5〃GND-地线(Ground)一72GNDc地线(Ground)一

数据准备好(DataSet数据准备好〔DataSet

62DSfB62DSR^

Reacfy)2Readjr)一

请求发送(RequestTo请求发送(RequestTo

RTS/43RTS卡

Send)3Send)一

清除发送(ClearTo清除发送(ClearTo

CTS-5~CTS一

Send)小Send)卡

振铃指示(Ring振铃指示(Ring

9~RIP223RIP

Indicator)小Indicator)一

表8.1RS-232c串口引脚定义表

RS-232c规定的逻辑电平与一般微处理器、单片机的逻辑电平是不同的,例如

RS-232的逻辑“1”是以-3〜-15V来表示的,而单片机的逻辑“1”是以+5V来表示的,

两者完全不同。因此,单片机系统要和电脑的RS-232接口进行通信,就必须把单片

机的信号电平(TTL电平)转换成计算机的RS-232c电平,或者把计算机的RS-232c

电平转换成单片机的TTL电平,通信时必须对两种电平进行转换。实现这种转换的方法

可以使用分立元件,也可以使用专用RS-232电平转换芯片。目前较为广泛地使用专用

电平转换芯片,如MC1488、MC1489、MAX232等电平转换芯片来实现EIA到TTL电

平的转换。下面介绍MAXIM公司的单电源电平转换芯片MAX232及接口电路。

如图8.2中所示,MAX232是单电源双RS-232发送/接收芯片,采用单电源(+5V)

供电,外接只需4个电容,便可以构成标准的RS-232通信接口,硬件接口简单,所以被

广泛采用。

,^7

MAX220

\W(232

MAX必

DIP/SO

图8.2MAX232实物及芯片引脚排列

8.1.2接续方法

单片机和计算机RS-232接口电路如图8.3所示,图中的Cl、C2、C3、C4是

电荷泵升压及电压反转部分电路,产生V+、V-电源供EIA电平转换使用,C5是

VCC对地去耦电容,其值为0.1UF,电容C1〜C5安装时必须尽量靠近MAX232芯

片引脚,以提高抗干扰能力。

VCC

~~C5

vccMAX232CPEn.

IC10.1UF=

ClCN

C1+C2+

r5nC21

1UFC1C2-1UFT

片T111114R:工,2

XDTlinTloutO

机-7

R2outR2in-o

10T3

RloutRlinTo

T2inT2out-o

4o

V-9

V+-5

C4

1UF二1UFDBPMale

VCC

图8.3采用MAX232CPE芯片的PC机与单片机串行通信接口电路

图8.4是一个采用分立元件构成的简易RS-232串行通信接口电路,使用三极管

进行电平转换,由于简单的通信,对于通信稳定性要求较高的应用,不建议使用分立

元件,因为分立元件电路的稳定性,误码率较高,不能完全满足RS-232c的全部技术

指标。分立元件组成的电路优点是成本低廉,部分网站上介绍的产品就分立元件构成。

图8.4采用分立元件的简易RS-232c通信接口电路

8.1.3PIC串行通信设计实例

当PIC单片机不具备片上硬件USART或者USART不够用时,可以利用软件模拟实

现异步串行通信。Microchip公司推出的PIC系列单片机PIC16c711具有运行速度快、

低功耗、价格低、体积小等优点。因为,不具备硬件USART时需要用一般I/O口来模拟

串行口。

1.串行接口硬件电路

如图8.5所示,RB0为接收脚,RB5为发送脚。RB0除作为一般I/O引脚外,还可

以作为外部中断输入引脚,引起中断的方式分为上跳沿和下跳沿两种方式。设置下跳沿

引起中断。当起始位到来时,RB0上出现下跳沿,引起中断,如果不是干扰信号则开始

接收数据。

RS-485标准的特点是抗干扰能力强,传输速率高、传送距离远。它规定了双端(平

衡式)电气接口特性。当单片机与具有RS-485接口的PC机通信时,需要进行信号形式

的转换。从单片机发送到PC机的信号首先转换成平衡信号,再送往PC机。从PC机发送

到单片机的信号先转换成非平衡信号,再输入单片机。信号形式的转换工作由RS-485接

口芯片SN75176完成。SN75176差分总线收发器工作在半双工方式,当工作于发送方

式时,发送使能引脚DE为高电平,接收使能引脚RE也为高电平。当工作于接收方式时,

发送使能引脚DE为低电平,接收使能引脚RE也为低电平。这样,可以将DE与RE连接

在一起,由RB6引脚输出控制信号,控制SN75176的发送和接收使能。为了减少线路

上信号的反射,需要匹配线路的特性阻抗。由于通信载体是双绞线,它的特性阻抗为

120c左右,所以线路设计时,在RS-485网络传输线的始端和末端各应接1只120c

的匹配电阻,R1为单片机一侧的匹配电阻。由于RS485芯片的特性,接收器的灵敏度

为±200mV,即差分输入端VA-VB2200mV时,输出逻辑“V;VA-VBW-200mV4

输出逻辑“0”。当IVA-VB|<200mV时,输出不确定。因此,当A、B无信号输入时,

可能造成接收引脚R上出现低电平,这会误认为通信帧起始位到来而引起工作不正常。

为了避免这种情况发生,可以人工的让A端电位高于B端电位,使R引脚在RS485总线

不发送期间呈现唯一的高电平,单片机不会被误中断而接收到乱字符。通过在A、B接上

拉、下拉电阻R3、R2可解决这个问题。

图8.5PIC16c711与PC机之间的接口电路

2.单片机通信程序框图

PIC单片机与PC机之间的通信方式为半双工方式。一帧数据包括一位起始位、8位数

据位、一位停止位和无奇偶校验位。设发送和接收数据的波特率为9600b/s,则每一位

占用的时间td为19600s,约为104|JS。单片机晶振频率为4MHz,单片机执行一条指

令耗费时间Ips。

•单片机接收数据程序框图

PIC16c711单片机的RB0引脚具备外部引脚跳变沿中断功能,向RB0引脚送一个上

跳沿或下跳沿信号,则INTCON寄存器的外部引脚跳变沿中断标志位INTF被置1。如果

总中断和外部引脚跳变沿中断都使能,并且此时单片机没有执行其他中断服务子程序,程

序进入INT中断服务子程序。根据异步串行通信的特点,通信线路空闲时单片机接收的是

高电平,起始位到来时单片机接收到低电平,因此空闲位和起始位之间是一个下跳沿。单

片机接收到下跳沿即起始位后,马上进入中断服务子程序,准备接收一帧数据。因此在主

程序中设置由下跳沿引起外部引脚跳变沿中断。下面将主要分析接收子程序即中断服务子

程序。单片机接收数据程序框图如图8.6所示。

进入中断服务子程序后,首先保护中断现场,然后检测起始位是否是“真的”。由于百

能存在的各种干扰,PIC单片机有可能接收到的干扰信号正好是一个下跳沿,而实际上此正

根本没有数据到来,从而造成误接收数据。因此检测起始位的真实性是有必要的。采取的

方法是在52ps(起始位的中点)后,检测一次RBO上的信号。程序框图中是延时472

后检测RBO上的信号,原因是保护中断现场的几条指令要耗费几个四。如果是低电平,

则起始位是“真的”,否则为干扰信号,单片机清INTF标志位,然后退出中断服务子程月

回到主程序。若起始位是“真的”,则准备接收数据。设计规定数据位为8位,故首先设于

接收计数器R_CNT内容为8o然后将STATUS寄存器中的C位清零,并右移接收数据寄

存器RCV_R。C的内容即。移入RCV_R最高位,接下来接收数据位。为尽量保证数据的

准确性,应该在每位数据的中点检测该位数据。因此,检测第一位数据的时刻距离检测起

始位的时刻应该是一位数据所占的时间即104ps,此后的每一位数据检测时刻之间也是

如此。此时又要用到延时程序。因为每两次检测时刻之间除了延时之外,指令(C清零、

右移等指令)还要占用时间,这些指令占用5〜6加,因此,为了尽量保证在每一位的中

心位置检测数据,延时时间定为98.。如果检测得到的数据位为1,则置RCV_R最高位.

lo如果数据位为0,则不必改变最高位,因为C为0且已经移入RCV_R的最高位。

然后,将接收计数器内容减1。8位数据接收完毕后,清INTF标志。薪,退出中断服务

子程序。至此,8位数据接收全部存放于RCV_R中。

•单片机发送数据程序框图

用RB5引脚作为发送引脚,单片机发送数据程序框图如图8.7所示。当有数据

要从单片机发往PC机时,单片机调用发送子程序。在发送子程序中,首先设置发送

计数器内容为8,然后发送起始位,起始位应持续104|JSo因此要调用延时子程序,

延时子程序执行完后,RB5上的信号并未立刻变成第一位数据的值,这是因为还要

执行几条指令,如右移TRS_R、置位等RB5上的信号才会变化。假设延时1042,

那么加上几条指令的执行时而,起始位就比1042宽了。因此,延时子程序少于

104|JS,根据具体的程序定为97ps。然后,右移发送数据寄存器TRS_R,将其

最低位即要发送的数据位移入C中,再根据C中的内容将RB5清零或置1,然后将

发送计数器内容减1,并判断其是否为0。若为1,则说明未发送完毕,继续发送;

否则,发送停止位。最后,退出发送子程序。

开始

图8.6单片机接收数据程序框图8.7单片机发送数据程序框图

8.2PIC的USART应用

8.2.1PIC16F877非同步通信功能(USART接口)

通用同步/异步接收发送模块(USART)是两个串行通信接口之一,

USART又称为SCI(SerialCommunicationInterface)。USART可

以设置为全双工异步串行通信系统,这种方式可以与个人计算机PC或串行

接口CRT等外围设备进行串行通信。也可以设置为半双工异步串行通信系

统,与串行接口的A/D或D/A集成电路、串行EEPROM等器件连接。

USART是二线制串行通信接口,它可以被定义如下三种工作方式:

全双工异步方式、半双工同步主控方式、半双工同步从动方式。为了把

RC6和RC7分别设置成串行通信接口的发送/时钟(TX/CK)线和接收/数

据(TX/DT)线,必须首先把SPEN位(TCSTAT的RD7)和方向寄存器

TRISCWD7:D6置1。

USART功能模块含有两个8位可读/写的状态/控制寄存器,它们是发

送状态/控制寄存器TXSTA和接收状态/控制寄存器。

USART带有一个8位波特率发生器BRG(BaudRatoGenerator),BRG支持

USART的同步和异步工作方式。用SPBRG寄存器控制一个独立的8位定时器的周期。

在异步方式下,发送状态/控制寄存器TXSTA的BRGH位(即D2)也被用来控制波特

率(在同步方式下忽略BRGH位)。

向波特率寄存器SPBRG写入一个新的初值时,都会使BRG定时器复位清零,由此

可以保证BRG不需要等到定时器溢出后就可以输出新的波特率。

对USART方式进行初始化的程序如下:

BSFSTATUS,RP0;将指针指向数据存储器的第1页

MOVLW0x19

MOVWFSPBRG;设置波特率为9600

BCFSTATUS,RP0;将指针指向数据存储器的第。页

CLRFRCSTA;将接收控制和状态寄存器清零

BSFRCSTA,SPEN;串口允许

CLRFPIR1;清除中断标志

BSFSTATUS,RP0;将指针指向数据存储器的第1页

CLRFTXSTA;将发送控制和状态寄存器清零

BSFTXSTA,BRGH;设置为异步、高速波特率

BSFTXSTA,TXEN;允许发送

BCFSTATUS,RP0;将指针指向数据存储器的第0页

BSFRCSTA,CREN;允许接收

初始化完成后,即可发送或接收数据。在发送或接收数据时'通过查询发送/接收中

断标志位即可判断是否发送完一个数据/接收到一个数据。

送/接收中断标地不需要也不有用软件复位。

在异步串行发送的过程中,只要TXREG寄存器为空,中断标志TXIF就置位。因此,

TXIF为1并不是发送完毕的标志,但仍可以用TXIF标志来判断。因此当TXREG为空时,

将数据送入后,数据会保留在TXREG寄存器中,直到前一个数据从发送移位寄存器中移

出,即前一个数据发送。

8.2.2串行接口芯片8251A

8251的管脚和内部结构如图8.8所示。

1.同CPU的连接信号

•RESET:当这个引脚上出现一个6倍时钟宽的高电平信号时,芯片被复位,使芯片

处于空闲状态。这个空闲状态将一直保持到由编程确定了新状态才结束。在系统中

使用此芯片时,总是把复位端与系统的复位线相连,使它受到加电自动复位和人工

复位的控制。

・CLK:是为芯片内有关电路工作提供时钟的输入端。这个时钟的频率与数据速率并

无直接关系,但是,为了电路工作可靠,在同步方式下最好使这个频率比数据速率

大30倍以上。在异步方式下,大4.5倍。

•、:是CPU对8251A中的寄存器读、写时的控制信号输入端。

•C/:是一个决定CPU对芯片读写内容的控制输入端。如果输入为高电平,CPU

对芯片就是写控制字或读状态字;反之,读写的内容就是数据。通常,将该端与地址

线的最低位相接。于是,8251A就占有两个端口地址,偶地址为数据口地址,而奇

地址为控制口地址。

:片选输入端。该引脚输入低电平时,芯片可以与CPU之间传输数据;反之,

芯片的8个数据引脚处于悬空状态。

D21

D3228D1

R327DO

GXD426VCC

25RxC

DN4D5

D5624DTR

D67823RTS

D7822DSR

9)21RESET

020CLK

1C1119TxD

1218TxEMPT

1317CTS

^

Y416

—15TxRDY

图8・88251A芯片引脚

•DO〜D7:双向8位数据线,同片内数据总线缓冲器相连,CPU通过DO〜D7向8251A

写数据和控制字,以及读数据和状态字。

2.MODEM控制信号

8251A还提供了四个与MODEM相连的控制信号,信号的含义与RS232c标准相同。

•(DataTerminalReady):数据终端准备好(输出,低电平有效)。这是

一个通用的输出信号,可由命令字的位1置“1”,而变为有效,用以表示CPU准备就绪

DSR(DataTerminalReady):数据终端准备好(输出,低电平有效)。这是

一个通用的输出信号,可由命令字的位1置“1”,而变为有效,用以表示CPU准备就空

•(RequestToSend):请求发送(输出,低电平有效)。此信号用于通知

调制器,CPU已准备好发送。它可由命令字的位5置“1”而变为有效(低电平有效)。

•醛(ClearToSend):清除发送信号(输入,低电平有效)。这是调制解凋器

或其它外设送到8251A中的调制解调器控制器的信号。当其有效时,表示允许USAR

发送数据。

上述四不信号在使用时应按规定引脚连接。信号在传输过程中,由MODEM输入

后存放在8251A的状态字节中,芯片内对此并不作处理,只有当CPU读状态后才可能

给出响应。CTS也是从MODEM送来的信号,如果为低电平。且8251A中已经设置了

允许发送命令,芯片就可以向MODEM送出串行数据。如果在数据传送中,出现了某

个条件不满足的情况,那么,在传输完当前的字节后,即行停止。和都是由CPU写命

令时给8251A设置的,为使两个引脚有效(低电平),对寄存器中这两位应写入“1”。

3.发送器有关信号

•TxD:发送数据。发送缓冲器从数据总线上接收数据,转换成串行数据、并按要求

插入附加字符或附加位后,在时钟的下降沿按位从TxD上发送出去。

•xRDY:发送器准备好信号。如果该信号有效,就表示发送缓冲器已空,CPU可以向

芯片送入新的数据。这个信号的状态要受到命令字中TxEN位(允许发送)的控制。

如果把TxRDY信号作为向CPU请求数据的中断信号,TxEN位就可以看作是中断控

制的屏蔽位。在8251A的状态字中有一位TxRDY,CPU也可以用查询的方式判断

是否可以送数据。

・TxE:发送缓冲器空标志。不管发送时是处于等待还是发送状态,只要发送缓冲器

中没有再要发送的字符,这个标志就变高。当从CPU送入一个数据字符时,该位标

志就被复位。这个标志可以用来表示一段数据传输的结束。如果是半双工工作,

这个标志可以用作从发到收的转换。同步工作时,如果临时出现TxE,就意味着数据

发送出现空缺,芯片会自动插补同步字符。

•:输人控制发送器数据速率的时钟。每个数据的移位输出,是在TxC的下降

沿实现的。异步方式下龌薄的频率可以是数据速率的1、16或64倍。同步方式时,

的频率与数据速率相同。一

4.接收器有关信号

•RxD:接收数据。用来接收外设送来的串行数据,按规定检查有关字符或有关位后,

经串一并转换送入数据总线缓冲器,RxD在时钟上升沿采样输入。

•RxRDY:接收器准备好标志。如果该位为高电乎,接收缓冲器中就已经有组装好了

的一个数据字符,可通知CPU将它取走。与TxRDY相似,RxRDY也可用作中断请

求信号,也可以通过读状态字了解接收器状态。一旦CPU读走这个数据字符,RxRDY

被复位。要是CPU没有及时取走数据,新接收数据将覆盖数据,使一个数据丢失,

出现溢出错误,并反映在状态字中。

•:接收时钟输入端。当时钟处在上升沿时,才可能把数据取样输入。时钟速率

的规定与相同。实际上,和往往连接在一起,用同一个时钟源。

•SYNDET/BRKDET:同步和间断检测。芯片在同步方式工作时,用作同步检测端;

异步时则用作间断检测输出。芯片可以由编程确定是内同步还是外同步。如果是内

同步,就由芯片内电路搜索同步字符,一旦找到,就由该端输出一个高电平。

如果是外同步,当片外检测电路找到同步字符后,就可以从该引脚输入一个高电平

信号,使8251A正式开始接收。一旦开始正常接收数据,同步检测端恢复低电平输

出O

点步方式工作中,通常在线路上无数据时以高电平表示。在8251A中也可以由程序

控制,使无数据的间断时间内线路上呈现低电平,即发送一个字符长度的全“0”码。接收

端具有对这种间断码检测的能力,如果检测到间断码,将从该端输出一个高电平。为了

避免接收器对尚未正式开始工作的线路低电平误认为间断状态,8251A在复位后总是要

在检测到一次高电平输入后,才开始对间断状态的检测。

对于8251A它有三个字,一个方式指令字、命令指令字、状态字,其中方式指令字

和命令字都是要写入到控制口里的,而状态字是从控制口读出来的,如果读和写能够区

别,也就是状态字和指令字这两个可以区别,但指示字里是方式指示字还是命令指示字,

这个关系必须要注意,它们的关系应是在开机时、在复位时以及完成后,先给的字认为

是方式指示字。给完了方式指示字后再给的自动认为是命令指令字,就不会把后面给的

当作方式字进行保存,而当作命令控制操作。

8.2.3USART应用通信编程实例

1.概述

要在PIC16F877与PC机间进行数据交换,这里可应用USART来实现。在编写程序

时首先要设置好USART异步通讯模块工作模式及相关寄存器,PIC16F877的USART与

其他具有USART的PIC单片机一样,可以被设置成为与PC机进行全双工异步通讯,

它是利用PORTC口的RC6和RC7两个引脚作为通讯的2线制串行通讯接口。为了把

PORTC口的RC6和RC7两个引脚分别设置成串行通讯接口的发送(TX)脚和接收(RX)

脚,必须要把USART的接收状态和控制寄存器RCSTA的bit7(SPEN)位和TRISC寄

存器的bit7置“1”,把TRISC寄存器的bit6置“0”。为了使USART分别工作于接收或发这

状态,就必须设置相应的状态寄存器和控制寄存器。在设置接收器时,要注意接收脚对

接收信号的采样。接收脚RX上的数据被采样3次,通过一个三中取二逻辑检测电路来判

断RX脚上的电平是高还是低,以作为采样取值。另外,要使USART工作在异步通讯方

式,就必须要设置通讯的传送、接收速率即波特率,USART的波特率设置是通过控制独

立的一个8位波特率发生器BRG实现的。

在异步工作方式下,串行通讯接口USART采用标准的不归0(NRZ)格式(即1位

起始位、8位或9位数据位及1位停止位),最常用的数据格式是8位。PIC16F877片内

的8位波特率发生器BRG可以用来驱动振荡器的时钟,产生标准的波特率频率。

PIC16F877的USART发送和接收顺序是从最低位(LSB)开始。USART发送器和接收

器在功能上是完全独立的,但是它们所用的数据格式和波特率必须是相同的。波特率发生

器可以根据发送状态和控制寄存器TXSTA的bit2(BRGH)位设置产生2种不同的移位

速度:对系统时钟16分频和64分频的波特率时钟,即设置该位在异步通讯模式为1时表

示通讯为高速,为0时表示通讯为低速。要使USART工作于异步通讯模式,可通过对发

送状态和控制寄存器TXSTA的bit4(SYNC)位设置清“0”。

由上可知,PIC16F877的USART异步工作设置主要包括对以下部件的设置:波特率

发生器BRG、采样电路、异步发送器、异步接收器等。这里关于PIC16F877的USART

异步工作有两点需要说明:一是USART硬件不支持奇偶效验,但可以用软件实现(并可

作为第9位数据传输);二是在CPU处于休眠工作方式时;USART不能工作在异步通讯

方式。

2.USART波特率发生器BRG设置

在异步通讯方式下,波特率发生器BRG需要设置一个初值,以使BRG输出一个合适

的波特率。在BRG设置时,其工作在高速还是低速是由发送状态寄存器和控制寄存器

TXSTA的bit2(BRCH)位进行设置的。在PIC16F877内部时钟工作模式下,设置

BRG波特率寄存器SPBRG在低速和高速初值的计算公式如下:

BRGH=O(低速)

异步波特率=FOSC/(64(X+1))

BRGH=1(高速)

波特率=FOSC/(16(X+1))

其中,X为SPBRG寄存器的值(0-255)o

实际应用中,上式用于高速方式(BRGH=1)下计算波特率可以减小误差。另外,

在向波特率寄存器SPBRG写入一个新值时会使BRG定时器复位(清零),由此就可保

证波特率发生器BRG不需要等到定时器溢出后就可输出新的波特率。

3.USART异步通讯的寄存器设置

实现USART异步通讯的寄存器主要有:发送状态寄存器和控制寄存器TXSTA、接

收状态和控制寄存器RCSTA、波特率发生器存器SPBRG、发送数据寄存器TXREG、接

收数据寄存器RCREG、外围接口中断使能寄存器PIE1和外围接口标志寄存器PIR1等。

・发送状态和控制寄存器(表8.2)

表8.2发送状态和控制寄存器

WW-0RZW-0R/WORZW-0U-0WW-0R-]RW-0

CSRCTX9TXENS\NC-BRCHTRMTTX9D

bit7bit0

bit7CSRC:异步方式未用。

bit6TX9:发送数据长度选择位。1=选择9位数据;0=选择8位数据。

bit5TXEN:发送允许位。1=允许发送;0二关闭发送。

bit4SYNC:USART同步/异步方式选择位。1=选择同步方式;0=选择异步方式。

bit3此位未用。

bit2BRGH:高速波特率使能位。1=高速;0=低速。

bitlTRMT:发送移位寄存器(TSR)“空”标志位。1=TSR空;0=TSR满。

bitOTX9D:发送数据的第9位。

・接收状态和控制寄存器(表8.3)

表8.3接收状态和控制寄存器

RW-0R/W-0R/W-0R/W-0R/W-0R-0R-0R-x

CPENIX)SRENCRENAIDENFERROERRRXJD

bit7bit0

bit7SPEN:串行口使能位。1=允许串行口工作(把RC7和RC6设置成串行口弓I脚;

0=禁止止串行工作;

bit6RX9:接收数据长度选择位。1=选择接收9位数据;0=选择接收8位数据。

bit5SREN:单字节接收允许位。异步方式此位未用。

Bit4CREN:连续接收选择位。1=允许连续接收;0=禁止连续接收。

bit3ADDEN:地址匹配检测使能位。1=允许地址匹配检测,允许中断并且当RSR

的D8被置1时读接收缓冲器数据;0=禁止地址匹配检测,接收所有字节,第9位被看作

奇偶效验位。

bit2FERR:帧格式错标志位。1=帧格式错(读RCREG寄存器可对该位刷新并且

准备接收下一个有效位);0=无帧格式错。

bitlOERR:越位溢出错标志位。1=有溢出错,清CREN位可将此位清零;0=无溢出

bitORX9D:接收数据的第9位,可作奇偶效验位。

•外围接口中断使能寄存器(表8.4)

表8.4外围接口中断使能寄存器

R/W-0RZW-0R/W-0RZW-0RW-0RW-0RW-0RZW-0

PSPIEADIEROE1X1ESSPIECCP1正!小3正jTVR1IE

bit7bit0

bit5RCIE:串行异步通讯接口接收中断使能位。1=允许USART接收中断;

0=禁止US2ART接收中断。

bit4TXIE:串行异步通讯接口发送中断使能位。1=允许USART发送中断;

0;禁止USART发送中断。

其余位在异步通讯中未用。

・外围接口中断标志寄存器(表8.5)

表8.5外围接口中断标志寄存器

R/W-0R/W-0R-0R-0R/W-()RW-0RW-1R/W-()

PSPIFADIFRCIFTXIFSSPIFCCP1IF1NR2IF1MR1IF

bit7bit0

bit5RCIF:异步串行通讯(USART)接口接收中断标志位;1=USART接收缓冲区

满;0=USART接收缓冲区空。

bit4TXIF:异步串行通讯(USART)接口发送中断标志位;1=USART发送缓冲区

空;0=USART发送缓冲区满。

其余位在异步通讯中未用。

•其他寄存器波特率

发生器存器SPBRG的设置可以参考USR2TA波特率发生器BRG的设置内容,在设

置该寄存器就是根据单片机工作时钟频率确定传输数据的波特率,只要将其初值写入

SPBRG寄存器即可。

发展数据寄存加TXREG是将单片机需要发送的数据存放的寄存器,在单片机未发

送之前就必须要将备发送的数据装入该寄存器。接收数据寄存器RCREG是将单片机接收

到外界数据后存放数据的寄存器,在单片机确定接收的数据无误后,将其数据存放到该

寄存器中。

4.PICI6F877单片机与PC机实现电平转换

PC机的串行接口是符合EIARS-232c规范的外部总线标准接口。RS-232C

采用的是负逻辑,即逻辑"1":-5〜-15V;逻辑”0":+5〜+15Vo而CMOS电平为

逻辑“1”:4.99V,逻辑“0”:0.01V;TTL电平的逻辑“1”和“0”则分别为2.4V和0.4

因此在用RS-232c总线进行串行通信时需外接电路实现电平转换。在发送端用驱动器将

7TL或CMOS电平转换为RS-232c电平,在接收端用接收器将RS-232c电平再转换为

TTL或CMOS电平。这里选用了MAXIM公司的MAX232来作电平转换。MAX232属于

MAXIM公司的通用串行接收/发送驱动器芯片。其外围电路简单,只需外接4个O.1|JF的

电容即可,其系统硬件电路如图8.9所示。图中MAX232将PIC16F877的TX输出的TTL

电平信号转换为RS-232c电平,输入到PC机,并将PC机输出的RS-232C电平转换为

TTL电平,输出到PIC16F877单片机的RX引脚。

5.PC机支持与PIC16F877

进行数据交换的PC机可与PIC16F877可以编程实现,其实现功能如下:PC机和单

片机均可发送和接收数据,由PC机决定是发送还是接收;程序设定当PC机键盘输入发

送指令时,PC机分别显示PC机发送的数据和单片机会送的数据;当PC机键盘输入接收

指令时,PC机将接收单片机发送过来的数据,并将其数据显示。在编程中,必须要注意

设置PC机与PIC16F877单片机在进行数据交换时的数据传输格式相同。通常采用的通

讯协议如下:波特率为9600bps,8位数据位,1位停止位,无奇偶效验位。PC机发

送命令给单片机,键盘输入发送命令时,控制单片机接收数据,当PC机键盘输入接收命

令时,控制单片机发送数据给PC机。PC机与PIC16F877单片机进行数据交换的程序编

制流程如图8.10所示。

DE9S-FRS

图8.9PIC16F877与PC接口原理图

源程序如下:

1)初始化设置部分

COUNTEQU0X20

TEMPEQU0X21

JOEQU0X22

ORGO

NOP

STARTGOTOMAIN

ORG0X05

MAIN

BANKSELTRISC

MOVLWB'IOOOOOOO)

MOVWFTRISC

MOVLW0X30/^RAM单元初始化

MOVWFFSRBCFSTATUS,RPO

MOVLWOX22

MOVWFCOUNT

BCFPIR1,RCIF

BSFPIR1,TXIF

INTRAMMOVFCOUNT,0

MOVWFINDF

INCFCOUNT,1

INCFFSR,1

BTFSSFSR,7

GOTOINTRAM图8.10数据交换程序流程框图

BANKSELTXSTA

MOVLWOX19

MOVWFSPBRG;波特率设置为9600bps

MOVLW0X04

MOVWFTXSTA;异步高速方式

BCFSTATUS,RPO

MOVLW0X80

MOVWFRCSTA;串行口使能

MOVLW0X30

MOVWFFSR

BSFRCSTA,CREN;接收允许

BSFSTATUS,RPO

BSFTXSTA,TXEN;发送允许

BCFSTATUS,RPO

2)接收并返回数据部分

WAITBTFSSPIR1,RCIF

GOTOWAIT;接收PC机命令

MOVFRCREG,0

MOVWFTEMP

MOVWFINDF

INCFFSR

DECFSZTEMP;接收到的数据为1,则接收

GOTOTXW;否则发送数据

MOVLW0X06

MOVWFTEMP

WAIT1BTFSSPIR1,RCIF

GOTOWAIT1;接收一个数据

MOVFRCREG,0

MOVWFCOUNT

MOVWFTXREG

LOOPTXBTFSSPIR1,TXIF;将接收到的数据送回PC机

GOTOLOOPTX

MOVFCOUNT,0

MOVWFINDF

INCFFSR

DECFSZTEMP

GOTOWAIT1

GOTOOVER;处理完毕

TXWMOVLW0X09;向PC机发送9个数据

MOVWFTEMP

MOVLWD,00,

MOVWFJO

3)发送数据部分

TXWOMOVFJO,0

MOVWFTXREG

INCFJO;单片机发送的数据为。〜8和一位存储数据

TXW1BTFSSPIR1,TXIF

GOTOTXW1

DECFSZTEMP

GOTOTXWO

OVERBCFRCSTA,CREN;通信任务完成,关接收和发送允许

要实现PIC单片机与PC机间的数据通讯,不仅是要连接硬件电路和对单片机进行

编程,同时还需要在PC上编写数据收发的程序。通常,对于单片机与PC机间的数据通

讯交换调试时,可以串口通讯调试工具,同时也可以自编调试程序。程序编写好后,

再与上述PIC16F877一起进行操作,即可实现简易通讯数据交换。

这里特别需要注意的是:当PC机与单片机系统通信时,单片机数据存储

区(RAM)内的数据是十六进制,在信号线上传输的是十六进制数的ASCH

码的二进制形式;而Windows系统下使用的是ANSI码,ANSI码仅在前126个

与ASCII码相同,即在Windows下接收到的是十六进制数的ASCH码的字符串,

可先转换为ANSI码后再在Windows下还原为十六进制数。

.3USB接口设计

USB的全称是通用串行总线(UniversalSerialBus),最多可连接

127台外设,USB其最大的特点是支持热插拔和即插即用。当设备插入时,

主机枚举此设备并加载所需的驱动程序,因此使用远比PCI和ISA总线方便。

USB速度比平行并联总线(ParellelBus,例如EPP、LPT)与串联总线

(SerialPort,例如RS-232)等传统电脑用标准总线快上许多。原标准中

USB1.1的最大传输带宽为12Mbps,USB2.0的最大传输带宽为

480MbpsUSB的设计为非对称式的,它由一个主机(host)控制器和若干

通过hub设备以树形连接的设备组成。一个控制器下最多可以有5级hub,包

括Hub在内,最多可以连接127个设备,而一台计算机可以同时有多个控制

器。和SPI-SCSI等标准不同,USBhub不需要终结器

USB可以连接的外设有鼠标、键盘、gamepad、游戏杆、扫描仪、数

码相机、打印机、硬盘和网络部件。对数码相机这样的多媒体外设USB已经

是缺省接口;由于大大简化了与计算机的连接,USB也逐步取代并口成为打

印机的主流连接方式。2004年已经有超过1亿台USB设备;到2005年显示

器和高清晰度数字视频外设是仅有的USB未能染指的外设类别,,因为他们

需要更高的传输速率。

由于USB支持热插拔,即插即用的优点,所以USB接口已经成为计算机的标准接口。

USB目前有两个版本,USB1.1的最高数据传输率为12Mbps,USB2.0则提高到

480Mbps。二者的物理接口完全一致,数据传输率上的差别完全由PC的USBhost

控制器以及USB设备决定。USB还可以通过连接线为设备提供最高5V,500mA的电力。

现标准中将UBS统一为USB2.0,分为:

(1)High-speed,传输速率25Mbps〜400Mbps(最大480Mbps)

(2)Full-speed,传输速率500Ktips〜10Mbps(最大12Mbps)

(3)Low-speed,传输速率10Kbps〜100Kbps(最大1.5Mbps)

USB的优点:

・USB具有真正的“即插即用”特性,用户可以很容易地对外设进行安装和拆卸,

主机可按外设的增删情况自动配置系统资源,同时用户可以在不关机的情况下

进行外设的更换,外设装置的驱动程序的安装删除将实现自动化。

・USB具有很强的连接能力。

•低成本。

・空间的节省。

・USB与ETDM特性可以支持诸如ISDN等高速数字电话信息通路接口。

・连接电缆轻巧,电源体积缩小。

・USB一种开放性的不具专利版权的理想工业标准。

8.3.1USB接口规范

目前USB支持3种数据信号速率,USB设备应该在其外壳或者有时是自身上正确

标明其使用的速率。USB-IF进行设备认证并为通过兼容测试并支付许可费用的设备

提供基本速率(低速和全速)和高速的特殊商标许可。

1.5Mbit/s(183KByte/s)的低速速率,主要用于人机接口设备(Human

InterfaceDevices,HID)而如键盘、鼠标、游戏杆。

12Mbit/s(1.4MByte/s)的全速速率,在USB2.0之前是曾经是最高速率,

后起的更高速率的高速接口应该兼容全速速率。多个全速设备间可以按照先到先得法

则划分带宽;使用多个等时设备时会超过带宽上限也并不罕见。所有的USBHub支持

全速速率。

480Mbit/s(57MByte/s)的高速速率,并非所有的USB2.0设备都是高速的。

高速设备插入全速hub时应该与全速兼容。而高速hub具有所谓TransactionTranslator

(事务翻译器)功能,能够隔离全速、低速设备与高速之间数据流,但是不会影响供电

和串联深度。

1.机械和电气标准

图8.11标准USB接口

标准USB接口如图8.11所示,其电气特性见表8.6。

USB信号使用分别标记为D+和D-的双绞线传输,各自使用半双工差分信号并协

同工作,以抵消长导线的电磁干扰。

USB的电缆有四根线,两根传送的是5V的电源,有一些直接和电源HUB相连的

设备可以直接利用它来供电。另外的两根是数据线,数据线是单工的,在整个的一个

系统中的数据速率是一定的,要么是高速,要么是低速,没有一个可以中间变速的设

备来实现数据码流的变速.在这一点上,USB和1394有明显的差别。

USB的总线可以在不使用的时候被挂起,这样一来就可以节约能源。

在有些时候的总线还有可能挡机(stall),比如说象数据传送的时候突然被打断,

这个时候通过host的重新配置可以实现总线的重新工作。

2.编码方式

USB标准采用NRZI方式(翻转不归零制)对数据进行编码。翻转不归零制(non­

returntozero,inverted),电平保持时传送逻辑1,电平翻转时传送逻辑0。

3.软件架构

一个USB主机通过hub链可以连接多个设备。由于理论上一个物理设备可以承担多

种功能,例如路由器同时也可以是一个SD卡读卡器,USB的术语中设备(device)指

的是功能(functions)。集线器(hub)由于作用特殊,按照正式的观点并不认为是

functiono直接连接到主机的hub是根(root)hub。

4.端点

"设京/功能(和集线器)与管道(pipe)(即逻辑通道)联系在一起,管道把主机控

制器和被称为端点的逻辑实体连接起来。管道和比特流(例如UNIX的pipeline)有着

相同的含义,而在USB词汇中术语端点经常和管道混用,甚至在正式文档中。

端点(和各自的管道)在每个方向上按照0-15编号,因此一个设备/功能最多有32

个活动管道,16个进,16个出。两个方向的端点0总是留给总线管理,占用了32个端

点中的2个。在管道中,数据使用不同长度的包传递,端点可以传递的包长度上限一般

是长度的2人n字节,所以USB包经常包含的数据量依次有8、16、32、64、128、

256、512或者1024字节。

一个端点只能单向(进/出)传输数据,自然管道也是单向的。每个USB设备至少有

两个端点/管道:它们分别是进出方向的,编号为0,用于控制总线上的设备。按照各自

的传输类型,管道被分为4类:

•控制传输一般用于短的、简单的对设备的命令和状态反馈,例如用于总线控制的0

号管道。

•等时传输——按照有保障的速度(可能但不必然是尽快地)传输,可能有数据丢失,

例如实时的音频、视频。

•中断传输——用于必须保证尽快反应的设备(有限延迟),例如鼠标、键盘。

•批量传输——使用余下的带宽大量地(但是没有对于延迟、连续性、带宽和速度的

保证)传

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论