F2837xD串行通信接口模块SCI

Serial Communications Interface (SCI)

本章介绍了串行通信接口(SCI)模块的特点和操作情况。SCI是一个双线异步串行端口,通常被称为UART。SCI模块支持CPU和其他使用标准的非归零(NRZ)格式的异步外设之间的数字通信。SCI接收机和发射机每个都有一个16级深FIFO,以减少维修开销,每个都有自己单独的启用和中断位。两者都可以独立操作用于半双工通信,也可以同时用于全双工通信。为了指定数据的完整性,SCI会检查接收到的数据是否存在中断检测、奇偶校验、溢出和帧错误。通过一个16位波特选择寄存器可编程到不同的传输比特率。

19.1 Enhanced SCI Module Overview增强型SCI模块概述

在这里插入图片描述

SCI模块的特点包括:
两个外部引脚:
-SCITXD:SCI传输输出引脚
-SCIRXD:SCI接收输入引脚
如果不用于SCI,这两个引脚都可以用作GPIO。
•波特率可编程到64K不同速率
•数据字格式
-一个开始位
-数据字长度可编程从1到8位
-可选偶/奇/无校验位
-一个或两个停止位
-额外位区分地址和数据(仅限地址位模式)

•四个错误检测标志:奇偶校验、溢出、帧和中断检测
•两种唤醒多处理器模式:空闲线和地址位
•半或全双工操作
•双缓冲接收和发射功能
•发射器和接收机操作可以通过带有状态标志的中断驱动或轮询算法来完成。
•单独启用发射器和接收器中断(BRKDT除外)NRZ(非归零)格式

增强的功能包括:自动波特检测硬件逻辑和16级发射/接收FIFO

图19-2显示了SCI模块的方框图。SCI端口操作由本章第19.14节中列出的寄存器进行配置和控制
在这里插入图片描述
在这里插入图片描述

19.2 Architecture架构

全双工操作中使用的主要元素如图19-2所示,其中包括:
一个发射机(TX)及其主要寄存器(图19-2的上半部分)
-SCITXBUF-发射机数据缓冲区寄存器。包含要传输的数据(由CPU加载)
-TXSHF寄存器-发射器移位寄存器。接受SCITXBUF寄存器的数据,并将数据移到SCITXD引脚,一次传输1bit
一个接收器(RX)及其主要寄存器(图19-2的下半部分)
-RXSHF寄存器-接收器移位寄存器。将数据从SCIRXD引脚转移进来,一次一位
-SCIRXD-接收器数据缓冲区寄存器。包含要由CPU读取的数据。来自远程处理器的数据被加载到寄存器RXSHF,然后加载到寄存器中。可编程波特发生器控制和状态寄存器SCI接收机和发射机可以独立或同时操作。

19.3 SCI Module Signal Summary SCI模块信号汇总

每个SCI信号名称的总结描述见表19-1
在这里插入图片描述

19.4 Configuring Device Pins 配置设备引脚

必须配置GPIO mux寄存器以将此外围设备连接到设备引脚。为了避免引脚上的故障,必须首先配置GPyGMUX位(同时保持相应的GPyMUX位默认为零),然后将GPyMUX寄存器写入所需的值。某些IO功能可由独立于此外设的GPIO寄存器设置来定义。对于输入信号,通过将适当的GPxQSELn寄存器位设置为11b,应将GPIO输入限定位设置为异步模式。内部脉冲可以在GPyPUD寄存器中配置。有关GPIO mux和设置的更多细节,请参阅GPIO章节。

19.5 Multiprocessor and Asynchronous Communication Modes 多处理器和异步通信模式

SCI有两种多处理器协议,空闲线多处理器模式(参见第19.8节)和地址位多处理器模式(参见第19.9节)。这些协议允许在多个处理器之间进行有效的数据传输。
SCI提供了通用异步接收/发射机(UART)通信模式与许多流行的外设接口。异步模式(参见第19.10节)需要两行线路来与许多标准设备进行接口,如使用RS-232-C格式的终端和打印机。
数据传输特性包括:
一个起始位
1到8个数据位
偶数/奇偶位或无奇偶位
一个或两个停止位

19.6 SCI Programmable Data Format SCI可编程数据格式

SCI数据的接收和传输,都是NRZ(非归零)格式。NRZ数据格式,图19-3所示,包括:
一个开始位
1到8个数据位
一个偶数/奇数奇偶校验位(可选)
一个或两个停止位
一个用来区分地址和数据的额外位(仅地址位模式)
数据的基本单位称为字符,长度为1到8位。数据的每个字符都用一个起始位、一个或两个停止位以及可选的奇偶校验位和地址位进行格式化。具有格式化信息的数据字符称为帧,如图19-3所示。
在这里插入图片描述

要编程的数据格式,请使用SCICCR寄存器。用于编程数据格式的位如表19-2所示。
在这里插入图片描述

19.7 SCI Multiprocessor CommunicationSCI多处理器通信

多处理器通信格式允许一个处理器有效地将数据块发送到同一串行链路上的其他处理器。在一个串行行上,一次应该只有一个传输。换句话说,一次在一个串行行上只能有一个说话者。

地址字节
说话者发送的信息块的第一个字节包含一个由所有侦听器读取的地址字节。只有具有正确地址的侦听器才能被地址字节后面的数据字节中断。地址不正确的侦听器将保持不间断,直到下一个地址字节。
睡眠位
串行链路上的所有处理器将SCI睡眠位(SCICTL1的第2位)设置为1,这样只有在检测到地址字节时才会中断。当处理器读取与您的应用软件设置的CPU设备地址对应的块地址时,您的程序必须清除睡眠位,以使SCI在接收到每个数据字节时生成一个中断。尽管接收机在睡眠位为1时仍然工作,但除非检测到接收帧中的地址位为1,否则地址字节不将RXRDY、RXINT或任何接收机错误状态位设置为1(适用于地址位模式)。SCI不会改变睡眠位;必须软件改变睡眠位。
19.7.1 Recognizing the Address Byte识别地址字节
处理器识别地址字节的方式不同,这取决于所使用的多处理器模式。例如:
•空闲线模式(第19.8节)在地址字节之前留下一个空闲的空间。此模式没有额外的地址/数据位,并且在处理包含超过10个字节的数据的块时比地址位模式更有效。空闲线模式应用于典型的非多处理器SCI处理通信。
•地址位模式(第19.9节)在每个字节中添加一个额外的位(即,一个地址位),以区分地址和数据。这种模式在处理许多小的数据块时更有效,因为与空闲模式不同,它不必在数据块之间等待。然而,在高传输速度下,程序不够快,以避免传输流中的10位空闲。
19.7.2 Controlling the SCI TX and RX Features 控制SCI的TX和RX特性
多处理器模式可通过ADDR/IDLE模式位(SCICCR,第3位)进行软件选择。这两种模式都使用TXWAKE标志位(SCICTL1,第3位)、RXWAKE标志位(SCIRXST,第1位)和睡眠标志位(SCICTL1,第2位)来控制这些模式的SCI发射器和接收器特性。
19.7.3 Receipt Sequence接收顺序
在两种多处理器模式下,接收顺序如下:
1.在接收到地址块时,SCI端口唤醒并请求中断(必须启用SCICTL2的位号1 RX/BK INT ENA-来请求中断)。它读取块的第一帧,其中包含目标地址。
2.通过中断输入一个软件例程,并检查传入的地址。此地址字节与存储在内存中的设备地址字节进行检查。
3.如果检查显示块被定向到设备CPU,CPU将清除休眠位并读取块的其余部分。如果没有,软件例程在休眠位仍然设置时退出,并且直到下一个块开始时才接收中断。

19.8 Idle-Line Multiprocessor Mode 空闲线多处理器模式

在空闲线多处理器协议(ADDR/IDLE MODE位=0)中,块之间的空闲时间比块中的帧之间的空闲时间更长。在一帧之后的10个或更多高级别位的空闲时间表示一个新块的开始。单个比特的时间是直接根据波特值(每秒比特)计算出来的。空闲线多处理器通信格式如图19-4所示(ADDR/IDLE MODE位为SCICCR的第3位)。
在这里插入图片描述

19.8.1 Idle-Line Mode Steps 空闲线路模式步骤
空闲线模式之后的步骤:
步骤1.SCI在收到块启动信号后醒来。
步骤2.处理器可以识别下一个SCI中断。
步骤3.中断服务例程将接收到的地址(由远程发送器发送)与它自己的地址进行比较。
步骤4.如果CPU正在被寻址,则服务例程将清除休眠位并接收数据块的其余部分。
步骤5.如果CPU没有被寻址,则休眠位保持设置。这使得CPU继续执行它的主程序而不被SCI端口中断,直到下一次检测到块启动。
19.8.2 Block Start Signal 块启动信号
有两种方式可以发送一个块启动信号:
1.方法1:通过延迟上一个块中最后一帧数据的传输与新块的地址帧的传输之间的时间,故意留下10位或以上的空闲时间。
2.方法2:SCI端口首先将TXWAKE位(SCICTL1,位3)在写入SCITXBUF寄存器之前设置为1.这将发送一个恰好为11位的空闲时间。在这种方法中,串行通信线的空闲时间不超过必要的时间。(在设置TXWAKE之后,在发送地址之前,必须写入SCITXBUF,以便传输空闲时间。)

19.8.3 Wake-UP Temporary (WUT) Flag 唤醒临时(WUT)标志
与TXWAKE位相关联的是唤醒临时(WUT)标志。WUT是一个内部标志,用TXWAKE进行双缓冲。当从SCITXBUF加载TXSHF时,WUT将从TXWAKE加载,并且TXWAKE位将被清除为0。这种安排如图19-5所示。
在这里插入图片描述

19.8.3.1 Sending a Block Start Signal发送一个块开始信号
在一系列块传输过程中,发送恰好一帧时间的块启动信号:
1.向TXWAKE位写入一个1.
2.将数据字(内容不重要:a不在乎)写入SCITXBUF寄存器(传输数据缓冲区)以发送块启动信号。(写入的第一个数据字被抑制,而块启动信号被发送并忽略。)当TXSHF(传输移位寄存器)再次空闲时,SCITXBUF内容移到TXSHF,TXWAKE值移到WUT,然后清除TXWAKE。因为TXWAKE被设置为1,所以开始位、数据位和奇偶校验位被在上一帧的最后一个停止位之后传输的11位的空闲周期所取代。
3.写入一个新的地址值必须首先写入一个数据字来注册TXWAKE buf,以便TXWAKE位值可以移到WUT。在不小心数据字移到TXSHF寄存器后,可以将TXSHF buf(如果需要,还有TXWAKE)再次写入,因为TXSHF和WUT都是双缓冲的。
19.8.4 Receiver Operation接收机操作
接收器操作不管睡眠位。然而,接收器既不设置RXRDY,也不设置错误状态位,也不请求接收中断,直到检测到地址帧。

19.9 Address-Bit Multiprocessor Mode地址位多处理器模式

在地址位协议(ADDR/IDLE MODE位=1)中,帧有一个额外的位,称为紧邻最后一个数据位的地址位。地址位在块的第一帧中设置为1,在所有其他帧中设置为0。空闲时段时间无关(参见图19-6)。
19.9.1 Sending an Address发送地址
TXWAKE位值被放置在地址位中。在传输过程中,当SCITXBUF寄存器和TXWAKE分别加载到TXSHF寄存器和WUT中时,TXWAKE被重置为0,WUT成为当前帧的地址位的值。因此,要发送一个地址:
1.将TXWAKE位设置为1,并将适当的地址值写入TXWAKE buf寄存器。当这个地址值被转移到TXSHF寄存器并被移出时,它的地址位将以1的形式发送。这将标记串行链接上的其他处理器,以读取该地址。
2.在加载TXSHF和WUT后写入SCITXBUF和TXWAKE。(可以立即写入,因为TXSHF和WUT都是双缓冲的。
3.将TXWAKE位设置为0,以便在块中传输非地址帧

注意:作为一般规则,地址位格式通常用于11字节或更少的数据帧。此格式会为已传输的所有数据字节添加一个位值(地址帧为1,数据帧为0)。空闲线格式通常用于12字节或更多的数据帧。
在这里插入图片描述

19.10 SCI Communication Format SCI通信格式

SCI异步通信格式使用单线(单向)或两行(双向)通信。在此模式下,帧包括一个起始位、1到8个数据位、一个可选的偶/奇偶校验位和一个或两个停止位(如图19-7所示)。每个数据位有8个SCICLK周期。接收方在收到一个有效的起始位后就开始操作。有效的起始位由四个连续的内部SCICLK周期识别,如图19-7所示。如果任何位不是零,则处理器将重新开始并开始寻找另一个起始位。对于开始位之后的位,处理器通过在位的中间做三个样本来确定位值。这些样本出现在第4、第五和第六个SCICLK周期,位值的确定是基于大多数(三分之二)的基础。图19-7说明了其中的异步通信格式,开始位显示了多数投票的位置。由于接收机自身同步到帧,外部发射和接收设备不必使用同步串行时钟。该时钟可以在本地生成。
在这里插入图片描述

19.10.1 Receiver Signals in Communication Modes 通信模式中的接收机信号
图19-8说明了假设以下条件的接收机信号定时的示例:
地址位唤醒模式(地址位不出现在空闲线模式中)
每个字符6位
在这里插入图片描述

(1)数据到达SCIRXD引脚,检测到起始位。
(2)位RXENA被降低以禁用接收机。数据继续在RXSHF中组装,但不传输到接收器缓冲区寄存器。
备注:1.标志位RXENA(SCICTL1,位0)变高以启用接收机。 2.数据到达SCIRXD引脚上,检测到起始位。 3.数据从RXSHF移到接收器缓冲区寄存器(SCIRXBUF);请求中断。标志位RXRDY(SCIRXST,第6位)变高,表示已接收到一个新字符。 4.程序读取SCIRXBUF;标志RXRDY被自动清除。 5.数据的下一个字节到达SCIRXD引脚;检测到起始位,然后清除。 6.位RXENA被用来禁用接收机。数据继续在RXSHF中组装,但不传输到接收器缓冲区寄存器。
19.10.2 Transmitter Signals in Communication Modes通信模式中的发射机信号
图19-9说明了假设以下条件的发射机信号定时示例:
地址位唤醒模式(地址位不出现在空闲线模式中)
每个字符3位
在这里插入图片描述

备注:
1.位TXENA(SCICTL1,第1位)变高,使发射机能够发送数据。
2.SCITXBUF被写入;因此,(1)发射机不再为空,并且(2) TXRDY变低。
3.SCI将数据传输到移位寄存器(TXSHF)。发射器准备使用第二个字符(TXRDY高),它请求中断(要启用中断,必须设置TX INT ENA-SCICTL2,0位)。
4.该程序在TXRDY变高(项目3)后向SCITXBUF写入第二个字符。(在第二个字符被写入scitxbuf后,TXRDY再次变低。)
5.第一个字符的传输已完成。开始将第二个字符转移到移位寄存器TXSHF。
6.位TXENA低到禁用发射机;SCI完成传输当前字符。
7.第二个字符的传输已完成;发射机为空,并准备使用新字符。

19.11 SCI Port Interrupts端口中断

SCI接收机和发射机可以被中断控制。SCICTL2寄存器有一个表示活动中断条件的标志位(TXRDY),而SCIRXST寄存器有两个中断标志位(RXRDY和BRKDT),再加上RX错误中断标志,它是FE、OE、BRKDT和PE情况的逻辑错误。发射机和接收机有单独的中断启用位。未启用时,不产生中断;但是,条件标志仍处于活动状态,反映传输和接收状态。
SCI的接收机和发送机有独立的外围中断向量。外围设备中断请求可以是高优先级或低优先级。这是由从外围设备输出到PIE控制器的优先级位表示。当RX和TX中断请求在同一优先级级别上发出时,接收机总是比发射机具有更高的优先级,从而减少了接收机溢出的可能性。外围中断的操作在外部外围接口(ePIE)章节的外围中断扩展控制器部分中被描述。
•如果设置了TX INT ENA位(SCICTL2.0),则当发生以下事件之一时,接收方外设中断请求将生效:
-SCI接收到一个完整的帧,并将RXSHF寄存器中的数据传输到SCIRXBUF寄存器。此操作设置RXRDY标志(SCIRXST,第6位)并启动一个中断。
–发生中断检测条件(在缺少停止位之后的10位期间SCIRXD较低)。此操作设置BRKDT标志位(SCIRXST,第5位)并启动一个中断。
如果设置了TX INT ENA位(SCICTL2.0),则当TXRDY寄存器中的数据传输到TXSHF寄存器时,主张发送器外围中断请求,表明CPU可以写入TXRDY buf;此动作设置TXRDY标志位(SCICTL2,第7位)并启动中断。
注意:由于RXRDY和BRKDT位而导致的中断生成由RX/BK INT ENA位(SCICTL2,位1)控制。由于RX错误位而导致的中断生成由RX ERR INT ENA位(SCICTL1,第6位)控制。

19.12 SCI Baud Rate Calculations SCI波特率计算

内部生成的串行时钟由低速外围时钟LSPCLK)和波特选择寄存器决定。SCI使用波特选择寄存器的16位值来为一个给定的LSPCLK选择64K个不同的串行时钟速率中的一个。请参见波特选择寄存器中的位描述,以了解在计算SCI异步波特时使用的公式。表19-3显示了普通SCI比特率的波特选择值。
在这里插入图片描述

LSPCLK/16是最大波特率。例如,如果LSPCLK为100MHz,则最大波特率为6.25Mbps。

19.13 SCI Enhanced Features SCI增强功能

28x SCI具有音频检测和发射/接收FIFO的功能。下面的部分解释了FIFO的操作。
19.13.1 SCI FIFO Description SCI FIFO描述
下面的步骤解释了FIFO的特性,并使用FIFO来编程SCI。
1.重置。在复位时,SCI在标准SCI模式下通电,FIFO功能被禁用。FIFO寄存器SCIFFTX、SCIFFRX和SCIFFCT保持不活动。
2.标准的SCI。标准的SCI模式将正常工作,以TXINT/RXINT中断作为模块的中断源。
3.FIFO启用。通过在SCIFFTX寄存器中设置SCIFFEN位来启用FIFO模式。SCIRST可以在其操作的任何阶段重置FIFO模式。
4.使能寄存器。所有的SCI寄存器和SCI FIFO寄存器(SCIFFTX、SCIFFRX和SCIFFCT)都是使能的。
5.中断。FIFO模式有两个中断;一个用于发送FIFO、TXINT,另一个用于接收FIFO、RXINT。RXINT是SCI FIFO接收、接收错误和接收FIFO溢出条件的常见中断。标准SCI的TXINT将被禁用,该中断将服务于SCI发送FIFO中断。
6.缓冲区。发射和接收缓冲区补充了两个16级fifo。发射FIFO寄存器为8位宽,接收FIFO寄存器为10位宽。标准SCI的单字传输缓冲区作为发送FIFO和移位寄存器之间的转换缓冲区。只有在移位寄存器的最后一位被移出后,才从发送FIFO加载一字到发送缓冲区。启用FIFO后,在一个可选的延迟值(SCIFFCT)后直接加载TXSHF,不使用TXBUF。当为SCI启用FIFO模式时,写入SCITXBUF的字符将排队进入SCI-TXFIFO,并且可以使用SCIRXBUF对Scix-RXFIFO中接收到的字符进行读取。
7.延迟的发送。从FIFO传输到发送移位寄存器的速率是可编程的。计算机寄存器位(7−0)FFTXDLY7−FFTXDLY0定义了字传输之间的延迟。延迟以SCI波特时钟周期数来定义。8位寄存器可以定义最小延迟为0波特时钟周期,最大延迟为256波特时钟周期。在零延迟的情况下,SCI模块可以以连续模式传输数据,FIFO的字一个接一个传输。通过256个时钟延迟,SCI模块可以以最大延迟模式传输数据,FIFO中被移出的每个字之间的延迟为256个波特时钟。可编程延迟促进了与慢的SCI/uart的通信,只需要很少的CPU干预。
8.FIFO状态位。发送和接收FIFO都具有状态位TXFFST或RXFFST(位12−8),它们在任何时候定义FIFO中可用的字数。当这些位被清除为0时,发送FIFO复位位TXFIFO和接收复位位RXFIFO将FIFO指针复位为0。一旦这些位设置为1,FIFO就从开始恢复操作。
9.可编程的中断级别。发送和接收FIFO都可以产生CPU中断。当发送FIFO状态位TXFFST(比特12−8)匹配(小于或等于)中断触发器水平位TXFFIL(比特4−0)时,就产生中断触发器。这为SCI的发送和接收部分提供了一个可编程的中断触发器。这些触发级别位的默认值分别为接收FIFO为0x11111,发送FIFO为0x00000。
图19-10和表19-4说明了非FIFO/IFFO模式下的SCI中断的操作/配置。
在这里插入图片描述
在这里插入图片描述

(1)在延迟值后直接加载FIFO模式TXSHF,不使用TXBUF。
(2)RXERR可以通过BRKDT、FE、OE、PE标志来设置。在FIFO模式下,BRKDT中断仅通过RXERR标志
19.13.2 SCI Auto-Baud SCI自动波特
大多数SCI模块没有自动波特检测逻辑内置硬件。这些SCI模块与嵌入式控制器集成,这些控制器的时钟速率依赖于PLL复位值。通常嵌入式控制器时钟在最终设计后会发生变化。在增强的特性集中,该模块支持硬件中的自动检测逻辑。下面的部分将介绍自动诱饵检测功能的启用顺序。
19.13.3 Autobaud-Detect Sequence 自动波特率检测序列
计算机中的ABD和CDC控制了自动机器人逻辑。应该启用SCIRST位,以使自动机器人逻辑正常工作。如果ABD设置为CDC为1,表示自动波特对齐,则会发生SCI发送FIFO中断(TXINT)。在中断服务后,CDC位必须被软件清除。如果CDC即使在中断服务之后仍保持设置,则不应该有重复的中断。
1.通过在SCIFFCT中设置CDC位(13位),通过写入1到ABDCLR位(14位)清除ABD位(15位),启用SCI的自动检测模式。
2.初始化波特寄存器为1或小于500 Kbps的波特率限制。
3.允许SCI以所需的波特率从主机上接收字符“A”或“A”。如果第一个字符是“a”或“a”,则自动输出检测硬件将检测传入的波特率并设置ABD位。
4.自动检测硬件将用等效的波特值十六进制更新波特率寄存器。该逻辑还将对CPU产生一个中断。
5.通过将SCIFFCT寄存器的ABDCLR(位14)写入1来响应中断清除ADB位,并通过写入0来清除CDC位来禁用进一步的自动机器人锁定。
6.读取字符“A”或“a”的接收缓冲区,以清空缓冲区和缓冲区状态。
7.如果ABD设置为CDC为1,表示音频对齐,则会发生SCI发送FIFO中断(TXINT)。中断服务后,CDC位必须由软件清除。
注意:在较高的波特率下,输入数据位的旋转率可能会受到收发器和连接器性能的影响。虽然正常的串行通信可能工作得很好,但这种旋转率可能会限制更高波特率(通常超过100k波特)的可靠的自动波检测,并导致自动锁定功能失败。为了避免这种情况,建议使用以下方法:使用较低的波特率在主机和28倍SCI引导加载器之间实现波特锁定。•然后,主机可以与加载的28倍应用程序握手,以将SCI波特率寄存器设置为所需的更高的波特率。

19.14 SCI Registers 寄存器

19.14.1 SCI Base Addresses SCI基础地址
在这里插入图片描述

19.14.2 SCI_REGS Registers SCI_REGS寄存器
表19-6列出了SCI_REGS寄存器的内存映射寄存器。表19-6中未列出的所有寄存器偏移地址均应视为保留位置,不得修改寄存器内容。
在这里插入图片描述

之后再总结
于 2023-06-14 第一次整理编写

学习时整理,不当之处烦请指正
码字不易,留个赞再走吧

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值