1/95增强型8051单片机实用开发技术第8章串行通信8.1通信的有关概念8.2STC12C5A60S2单片机的串行接口8.3STC12C5A60S2单片机的SPI接口2/95增强型8051单片机实用开发技术8.1通信的有关概念实际应用中,计算机的CPU与外部设备之间常常要进行信息的交换,计算机之间也需要交换信息,所有这些信息的交换均称为“通信”。3/95增强型8051单片机实用开发技术并行通信与串行通信通信的基本方式可分为并行通信和串行通信两种。并行通信,是指数据的各位同时进行传送的方式。其特点是传输速度快,但当距离较远,位数又多时导致了通信线路复杂且成本高。串行通信,是指数据一位一位的顺序传送的通信方式。其特点是通信线路简单,只要一对传输线就可以实现通信,从而大大的降低了成本,特别适用于远距离通信,但传送速度慢。D1D2D3D4D5D6D7D01控制(选通)状态1011111000000000T计算机计算机或外设8T计算机计算机或外设a)b)4/95增强型8051单片机实用开发技术1.按照串行数据的同步方式分类按照串行数据的同步方式,串行通信本身又分为异步传送和同步传送两种基本方式。(1)异步传送在异步传送中,每一个字符要用起始位和停止位作为字符开始和结束的标志,它是以字符为单位一个个的发送和接收的。异步传送时,每个字符的组成格式如下:首先是一个起始位表示字符的开始;后面紧跟着的是字符的数据字,数据字可以是5,6,7或8位数据,在数据字中可根据需要加入奇偶校验位;最后是停止位,其长度可以是一位,一位半或两位。所以,串行传送的数据字节加上成帧信号起始位和停止位就形成一个字符串行传送的帧。起始位用逻辑“0”低电平表示,停止位用逻辑“1”高电平表示。图(a)所示为数据字为7位的ASCII码,第8位是奇偶校验位。加上起始位、停止位,一个字符由10位组成。这样形成帧信号后,字符便可以一个接一个的传送了。在异步传送中,字符间隔不固定,在停止位后可以加空闲位,空闲位用高电平表示,用于等待发送。这样,接收和发送可以随时的或间断的进行,而不受时间的限制。图(b)为有空闲位的情况。8.1.1串行通信的分类5/95增强型8051单片机实用开发技术……0/10/1100/110/10/10/10/10/10/10/10/10/10/10/10低位高位第n个字符第n-1个字符第n+1个字符7位数据停止位奇偶校验起始位奇偶校验停止位起始位7位数据下降沿指出下一个字符的开始a)00/10/10/10/10/10/10/10/10/10/101111第n个字符起始位低位高位奇偶校验停止位空闲位下降沿指出下一个字符的开始第n+1个字符位的时间长度取决于波特率b)起始位6/95增强型8051单片机实用开发技术(2)同步传送所谓同步传送就是去掉异步传送时每个字符的起始位和停止位的成帧标志信号,仅在数据块开始处用同步字符来指示。如下图所示。同步传送的有效数据位传送速率高于异步传送,可达50千波特。其缺点是硬件设备较为复杂,因为它要求要有时钟来实现发送端和接收端之间的严格同步,而且对时钟脉冲信号的相位一致性还要求非常严格,为此通常还要采用“锁相器”等措施来保证。SYN字符#1SYN字符#2数据在异步数据传送中,CPU与外设之间事先必须约好两项事宜:第一、字符格式。双方要约好字符的编码形式、奇偶校验形式、以及起始位和停止位的规定。第二、波特率(Baudrate)。波特率是衡量数据传送速率的指标,它要求发送站和接收站都要以相同的数据传送速率工作。7/95增强型8051单片机实用开发技术2.按照数据的传送方向分类1)点对点传输一般情况下,串行数据传送是在两个通信端之间进行的。其数据传送的方式有如图所示的几种情况。图(a)为单工通信方式。A端为发送站,B端为接收站,数据仅能从A站发至B站。图(b)为半双工通信方式。数据可以从A发送到B,也可以由B发送到A。不过同一时间只能作一个方向的传送,其传送方式由收发控制开关K来控制。图(c)为全双工通信方式。每个站(A、B)既可同时发送,又可同时接收。ABKKABABa)b)c)8/95增强型8051单片机实用开发技术2)主从多终端通信方式A站可以向多个终端(B、C、D…)发出信息。在A站允许的条件下,可以控制管理B、C、D…等站在不同的时间向A站发出信息。根据数据传送的方向又可分为多终端半双工通信和多终端全双工通信。这种多终端通信方式常用于主――从计算机系统通信中。ADCBADCBa)b)9/95增强型8051单片机实用开发技术8.1.2通用的异步接收器/发送器UART在串行传送中,数据是一位一位按顺序进行的,而计算机内部的数据是并行的。因此当计算机向外发送数据时,必须将并行的数据转换为串行的数据再行传送。反之,又必须将串行数据转换为并行数据输入计算机中。上述并→串或串→并的转换既可以用通用的异步接收器/发送器实现。通用的异步接收器/发送器,简称UART(UniversalAsynchronousReceiver/Transmitter),是串行接口的核心部件,其结构如图所示,它既能发送,由并行→串行输出;又能接收,由串行→并行输入。对每一方来说都是一个双缓冲器结构。当UART接收数据时,串行数据先经RXD端(ReceiverData)进入移位寄存器,再经移位寄存器输出并行数据到缓冲器,最后通过数据总线送到CPU;当UART发送信息时,先由CPU经数据总线将并行数据送给缓冲器,再由并行缓冲器送给一位寄存器,最后逐位由TXD(TransmitterData)端输出。所有这些工作都是在时钟信号和其他控制信号作用下完成的。10/95增强型8051单片机实用开发技术WRRESETCONTROLTXC奇偶错溢出错帧错RXCTBEDATABusRXDTXDRDCSINOUTPEOEFE接收移位寄存器接收数据缓冲器发送缓冲器空发送移位寄存器发送数据缓冲器INT11/95增强型8051单片机实用开发技术8.2STC12C5A60S2单片机的串行口STC12C5A60S2单片机具有2个采用UART工作方式的全双工串行通信接口(串口1和串口2)。每个串口由2个数据缓冲器、1个移位寄存器、1个串行控制寄存器和一个波特率发生器等组成。每个串口的数据缓冲器由串行接收缓冲器和发送缓冲器构成,它们在物理上是独立的,既可以接收数据也可以发送数据,还可以同时发送和接收数据。接收缓冲器只能读出,不能写入,而发送缓冲器则只能写入,不能读出。它们共用一个地址号。STC12C5A60S2的串行口既可以用于串行异步通信,也可以构成同步移位寄存器。如果在串行口的输入/输出引脚上加上电平转换器,可以方便地构成标准的RS-232接口。串口1与传统8051单片机的串口完全兼容。串口2的结构、工作原理与串口1类似。12/95增强型8051单片机实用开发技术8.2.1串行接口的寄存器与串行接口1相关的寄存器有SCON、PCON、AUXR、SBUF、TMOD、TL1、TH1、TCON、IE、IP、IPH、SADEN和SADDR。与串行接口2相关的寄存器有:S2CON、S2BUF、BRT、AUXR、IE2、IP2、IPH2和AUXR1。D7D6D5D4D3D2D1D0SM0/FESM1SM2RENTB8RB8TIRISM0/FE:PCON寄存器中的SMOD0位为1时,该位用于帧错误检测,当检测到一个无效停止位时,通过UART接收器设置该位。它必须由软件清零。PCON寄存器中的SMOD0为0时,该位和SM1一起指定串行通信的工作方式1.串口1控制寄存器SCONSCON(地址为98H,复位值为00H)用于确定串行通道的操作方式和控制串行通道的某些功能。也可用于发送和接收第九个数据位(TB8、RB8),并设有接收和发送中断标志(RI及TI)位。SCON各位的意义如下:13/95增强型8051单片机实用开发技术SM0/FESM1方式说明波特率000移位寄存器工作方式fOSC/120118位数据位的UART工作方式可变1029位数据位的UART工作方式fOSC/64,fOSC/321139位数据位的UART工作方式可变SM2:在方式2和方式3时,如SM2=1,只有在接收数据第9位为1时才能激发中断标志(RI=1)。在方式1时,如SM2=1,则只有在接收到有效停止位时才能激发中断标志(RI=1)。在方式0时,SM2应为0。REN:允许串行I/O口接收控制位。用软件置REN=1时为允许接收状态,可启动串行口的接收器RXD,开始接收数据。用软件复位(REN=0)时,为禁止接收状态。TB8:在方式2和方式3时,它是要发生的第九个数据位,按需要由软件进行置位或清零。例如可用作数据的奇偶校验位,或在多机通信中表示是地址帧/数据帧标志位(TB8=1/0)。RB8:在方式2和方式3时,它是接收到的第九位数据,作为奇偶位或地址帧/数据帧标志位。在方式1时,若SM2=0,则RB8是接收到的停止位,在方式0时,不使用RB8。14/95增强型8051单片机实用开发技术TI:发生中断标志位。在方式0时,当串行发送数据字第八位结束时,由内部硬件置位(TI=1),向CPU申请发生中断。CPU响应中断后,必须用软件清零,取消此中断标志。在其他方式时,它在停止位开始发送时由硬件置位。同样,必须用软件使其复位。RI:接收中断标志位。在方式0时,串行接收到第八位结束时由内部硬件置位。在其他方式中,它在接收到停止位的中间时刻由硬件置位,也必须用软件来复位。当一帧数据发送完成时,发送中断标志TI被置位,接着发生串口中断,进入串口中断服务程序。但CPU事先并不能分辨是TI还是RI的中断请求,因此,必须在中断服务程序中用位测试指令加以判别。两个中断标志位TI及RI均不能自动复位,必须在中断服务程序中使用清中断标志位指令,撤销中断请求状态,否则原先的中断标志位状态又将表示有中断请求。15/95增强型8051单片机实用开发技术2.串口2控制寄存器S2CON寄存器S2CON(地址为9AH,复位值为00H)用于确定串口2的操作方式和控制串口2的某些功能,也可用于发送和接收第9个数据位(S2TB8、S2RB8),并设有接收和发送中断标志(S2RI及S2TI)位。S2CON各位的意义如下:位号D7D6D5D4D3D2D1D0位名称S2SM0S2SM1S2SM2S2RENS2TB8S2RB8S2TIS2RI寄存器S2CON的各个位与寄存器SCON的各个位含义和功能都类似,读者可以进行对比学习,在此,不再赘述。16/95增强型8051单片机实用开发技术3.掉电控制寄存器PCONPCON(地址为87H,复位值为30H)中的SMOD用于设置方式1、方式2和方式3的波特率是否加倍。各位的定义如下:位号D7D6D5D4D3D2D1D0位名称SMODSMOD0LVDFPOFGF1GF0PDIDL其中,与串行通信相关的位是SMOD和SMOD0。SMOD:串行口波特率系数控制位。复位时,SMOD=0。1:使方式1、方式2和方式3的波特率加倍。0:各工作方式的波特率不加倍。SMOD0:帧错误检测有效控制。复位时,SMOD0=0。1:SCON寄存器中的SM0/FE位用于FE(帧错误检测)功能。0:SCON寄存器中的SM0/FE位用于SM0功能,和SM1一起指定串行通信的工作方式。17/95增强型8051单片机实用开发技术4.辅助寄存器AUXR辅助寄存器AUXR(地址为8EH,复位值为00H)各位的定义如下:T0x12和T1x12用于设置定时器0和定时器1的速度。详见“第8章定时/计数器与可编程计数器阵列”一章。EXTRAM用于设置是否允许使用内部扩展的1024字节扩展RAM。1)UART_M0x6:串行口模式0的通信速度设置位。0:UART串口模式0的速度是传统12T的8051速度,12分频。1:UART串口模式0的速度是传统12T的8051的6倍,2分频。2)BRTR:独立波特率发生器运行控制位。0:不允许独立波特率发生器运行。1:允许独立波特率发生器运行。