电气与信息工程学院第15讲281x串行通信接口SCI2电气与信息工程学院DSP技术及应用281x串行通信接口SCI15.1SCI概述•SCI是SerialCommunicationInterface的简称,即串行通信接口。•SCI是一个双线的异步串口,换句话说,是具有接收和发送两根信号线的异步串口,一般可以看作是UART(UniversalAsynchronousReceiver/Transmitter,通用异步接收/发送装置)。•X281X的内部具有两个相同的SCI模块,SCIA和SCIB。2电气与信息工程学院DSP技术及应用281x串行通信接口SCI15.1SCI概述•在控制系统中,串行通讯是各控制单元或上、下位机之间实现数据共享的重要途径SCI模块与CPU模块关系示意图2电气与信息工程学院DSP技术及应用281x串行通信接口SCISCI模块相关信号数据存储器映射的控制和状态寄存器SCI信号描述信号名称描述外部信号RXDSCI异步串行数据接收信号TXDSCI异步串行数据发送信号控制信号通信速率时钟低速外设LSPCLK定标时钟中断信号TXINT发送中断RXINT接收中断2电气与信息工程学院DSP技术及应用281x串行通信接口SCI15.2SCI模块特点•两个外部引脚:•SCITXD:SCI输出引脚。•SCIRXD:SCI输入引脚。•如果不用SCI功能时,这两个引脚可以设置成通用I/O。•64K种可编程的通讯速率。•数据格式:•一位起始位;•1~8位数据长度位,可编程;•可以选择奇校验、偶校验或者无校验;•一位或两位停止位。•四种错误检测标志:奇偶校验错误、超时错误、帧错误和间断检测错误。2电气与信息工程学院DSP技术及应用281x串行通信接口SCISCI模块特点•两种多处理器唤醒模式:空闲线模式和地址位模式。•全/半双工通讯模式。•双缓冲接收和发送功能。•发送和接收可以采用中断或状态标志位查询两种方式。•独立的发送和接收中断使能位(BRKDT除外)。•起始地址从7050H开始的13个SCI模块控制寄存器。•SCI模块的所有控制寄存器都是8位的,对这些寄存器的操作仅对低8位(0~7)有效;对高8位(8~15)读操作返回零,写操作无效。•增强的功能包括:自动波特率检测和16级发送/接收FIFO。2电气与信息工程学院DSP技术及应用281x串行通信接口SCI15.3SCI模块结构•一个发送器(TX)及其主要的寄存器;•SCITXBUF:发送数据缓冲寄存器,存放要发送的数据(由CPU加载)。•TXSHF:发送移位寄存器,从SCITXBUF接收数据再将数据移位送到SCITXD引脚上,每次移动一位。•一个接收器(RX)及其主要的寄存器:•RXSHF:接收移位寄存器,从SCIRXD引脚接收数据并移位存储,每次移动一位。•SCIRXBUF:接收数据缓冲寄存器,存放CPU要读取的数据。来自远程处理器的数据先被移位存放在RXSHF中,再载入SCIRXBUF和SCIRCEMU中。•一个可编程的波特率发生器。•映射于数据存储器空间的控制和状态寄存器。•SCI模块的发送器和接收器可以单独工作,也可以同时工作。2电气与信息工程学院DSP技术及应用281x串行通信接口SCISCI模块的工作原理帧格式和模式校验偶/奇使能SCICCR.6SCICCR.5SCICTL1.3TXWAKEWUT1SCITX中断选择逻辑SCICTL2.6SCICTL2.7TXEMPTYTXRDYTX中断逻辑自动波特率检测逻辑TXSHF寄存器发送器数据缓冲寄存器TXFIFO_0TXFIFO_1…...TXFIFO_15SCITX5UF.7~0TXFIFO寄存器SCIFFTX.1SCIFFENATXFIFO中断88SCITXDTXINT至CPUSCICTL2.0TXINTENATXENASCITXDSCICTL1.1SCIHBAUD.15~5波特率寄存器(高8位)SCILBAUD.7~0波特率寄存器(低8位)LSPCLKRX错误RX错误FEOEPESCIRXST.7SCIRXST.4~2RXERRINTENASCICTL1.5RXSHF寄存器SCIRX中断选择逻辑SCIRXST.6RXRDYSCIRXST.5SRXDTSCICTL2.1RX/SKINTENARX中断逻辑接收器数据缓冲寄存器RXFIFO_15RXFIFO_1…...RXFIFO_2SCIRX5UF.7~0RXFIFO寄存器SCIFFRX.15RXFFOVF8RXFIFO中断RXINT至CPUSCIRXDSCIRXD8SCIRXST.1RXWAKERXENASCICTL1.0发送接收SCIPinConnectionsTransmitter-databufferregisterTransmittershiftregisterSCIDevice#1SCIRXDSCITXDSCITXDSCIRXDSCIDevice#28Receiver-databufferregisterReceivershiftregister8Transmitter-databufferregisterTransmittershiftregister8Receiver-databufferregisterReceivershiftregister8(FullDuplexShown)RXFIFO_0RXFIFO_15RXFIFO_0RXFIFO_15TXFIFO_0TXFIFO_15TXFIFO_0TXFIFO_152电气与信息工程学院DSP技术及应用281x串行通信接口SCI15.4SCI多处理器通信•SCI模块有两种多处理器通讯协议:空闲线多处理器模式和地址位多处理器模式。•SCI模块提供通用异步接收/发送(UART)通讯模式,可以方便地和很多常用外设接口。•异步通讯模式需要两根信号线就可以和很多使用RS-232-C格式的标准设备(例如终端或打印机)接口;•SCI模块的发送和接收数据都采用NRZ(非归零)格式:•一个起始位;•1~8个数据位;•一个奇/偶校验位或者没有校验位;•一个或两个停止位。•这样带有格式信息的一个数据字符称为一帧,它的基本结构如下图。SCI-AProgrammableDataFormatStartLSB23457MSBParityStop1Addr/Data6ThisbitpresentonlyinAddress-bitmodeStop2NRZ(nonreturntozero)formatStartBitLSBofDataMajorityVoteFallingEdgeDetectedSCIRXDSCICLK(Internal)123456781234567812SCICLKperiodsperdatabitSCI异步通信模式多数表决2电气与信息工程学院DSP技术及应用281x串行通信接口SCISCI工作方式•SCI异步通信格式使用单线(单路,即半双工)或双线(双路,即全双工)通信。在这种模式下,帧包括一个起始位、1到8个数据位、一个可选的奇偶校验位和1个或2个停止位。每个数据位占8个SCICLK周期。•接收器在接收到一个有效的起始位后开始工作。一个有效的起始位由4个连续的内部SCICLK周期的0位来识别。如果任何一位不为0,则处理器重新启动并开始寻找另一个起始位。•对于起始位后的位,处理器通过在该位中间进行三次采样判定该位的值。这种采样发生在第4、5、6个SCICLK周期,位值判定是基于多数原则(三次采样2次为某值,则判定为该值)。上图描述了有起始位的异步通信格式,显示了如何发现信号沿以及在何处进行多数表决。•因为接收器使自己与帧同步,所以外部的发送和接收设备不必使用同步串行时钟,时钟可以在本地产生。2电气与信息工程学院DSP技术及应用281x串行通信接口SCISCI多处理器通信模式•多处理器通信,顾名思义,就是多个处理器之间进行数据通信。一个简单的多处理器通信拓扑示意图如下图所示。图中的实线表示处理器A和处理器B、C、D之间的通信。在同一个时刻,处理器A只能和处理器B、C、D之中的一个实现数据传输。当处理器A给处理器B、C、D中的某一个处理器发送数据时,A-B、A-C、A-D这3条通路上都会出现相同的数据,那如何来确保这些数据被正确的处理器接收呢?2电气与信息工程学院DSP技术及应用281x串行通信接口SCISCI多处理器通信操作•多处理器通信格式使处理器通过一条串行总线就可以有效地和其它多个处理器相互通信,但在同一条串行总线上一次只允许一个节点发送数据。•地址字节发送节点(talker)发送的信息块第一个字节是地址字节,所有的接收节点(listener)都可以读取这个地址,但只有地址相同的接收节点才能接收地址字节后面的数据;地址不同的接收节点不会响应,而是等待下一个地址字节。•SLEEP位串行总线上的所有处理器都把自己的SCI模块的SLEEP位(SCICTRL1寄存器的第2位)设置成1,这样只有检测到地址字节后才会产生中断。当处理器接收到的数据块地址和用户用软件设置的处理器地址相符时,用户必须手动清除SLEEP位使SCI模块产生中断来接收数据。2电气与信息工程学院DSP技术及应用281x串行通信接口SCISCI地址字节识别处理器根据不同的多处理器模式(空闲线模式和地址位模式),采取不同的方法来识别地址字节:•空闲线模式•在地址字节前预留一个静态的空间,该模式没有额外的地址/数据位,因此它在处理包含10个以上字节的数据块时比地址位模式的效率高些。空闲线模式一般用于典型的非多处理器的SCI通信中。•地址位模式•在每个字节里面加入一位额外的地址/数据位用来区别地址和数据。由于在这种模式下数据块之间不需要等待,因此在处理小块数据时比空闲线模式的效率高。但是,当传输速度较高时,由于程序的速度有限,不可避免要在数据流中加入10位的空闲时间。2电气与信息工程学院DSP技术及应用281x串行通信接口SCI空闲线多处理器模式的数据格式2电气与信息工程学院DSP技术及应用281x串行通信接口SCI地址位多处理器模式的数据格式2电气与信息工程学院DSP技术及应用281x串行通信接口SCISCI模块的TX和RX的控制特点•用户软件通过控制ADDR/IDLEMODE位(SCICCR的位3)来选择不同的多处理器模式。•两种模式都使用发送唤醒标志位TXWAKE(SCICTL1位3)、接受唤醒标志位RXWAKE(SCIXST位1)和休眠标志位SLEEP(SCICTL1位2)来控制SCI模块的发送器和接收器的工作状态。•在两种多处理器模式下,接收的步骤如下:•1)接收地址块时,SCI端口唤醒并申请中断(必须使能SCICTL2的RX/BKINTENA位以便可以申请中断),读取数据块的第一帧,它包含目标处理器的地址。•2)通过中断进入一个子程序,检查接收的地址,比较存储器中的地址字节和接收的地址字节。•3)如果上述的地址相符,则CPU清除SLEEP位并读取数据块中的剩余数据;否则退出软件子程序并保持SLEEP位,直到下一个地址块开始再接收中断。2电气与信息工程学院DSP技术及应用281x串行通信接口SCI15.5SCI中断SCI模块有独立的发送和接收外围中断向量,当RX和TX的优先级相同时,接收器总是比发送器有更高的优先级,这样可以减少接收超时错误。如果RX/BKINTENA位(SCICTL2位1)被置1,当发生下列情况之一时就会产生一个接收中断请求。•SCI模块接收到一个完整的帧,并把RXSHF寄存器中的数据传送到SCIRXBUF寄存器。该操作将RXRDY标志位(SCIRXST位6)置1,并产生一个中断。•间断检测条件发生(在丢失一个停止位后,SCIRXD保持10个周期的低电平)。该操作将BRKDT标志位(SCIRXST位5)置1,并产生一个中断。如果TXINTENA位(SCICTL2位0)被置1,只要将SCITXBUF寄存器中的数据传送到TXSHF寄存器就会产生发送器中断请求,表示CPU可以向SCITXBUF写入数据。该操作将T