TI DSP TMS320F280025 Note10:串行通信接口(SCI)模块

TMS320F280025 串行通信接口(SCI)模块


`


异步通信格式
65000 +不同的可编程波特率
两个唤醒多处理器模式
空闲线唤醒和地址位唤醒
可编程数据字格式
1到8位数据字长
1或2个停止位
/奇数/无奇偶校验
错误检测标志
奇偶校验错误;
结构错误;
溢出错误;
中断检测发送FIFO和接收FIFO发送和接收的单独中断

本章介绍了串行通信接口(SCI)模块的特点和工作原理。SCI是一种双线异步串行端口,通常称为UART。SCI模块支持CPU和其他使用标准非归零(NRZ)格式的异步外设之间的数字通信。SCI接收器和发射器都有一个16级的深度FIFO来减少服务开销,并且每个都有一个单独的使能和中断位。两者都可以独立运行半双工通信,或同时进行全双工通信。
为了指定数据的完整性,SCI检查接收到的数据的中断检测、奇偶校验、超限和帧错误。
波特率可通过16位波特选择寄存器编程为不同的速度。

介绍

SCI接口如图

在这里插入图片描述

特点

SCI模块的功能包括:
SCI模块的功能包括:
•两个外部针(针都可以用作GPIO,如果不是用于SCI):

  • SCITXD: SCI transmit-output销-
    –SCIRXD: SCI接收输入销
    •波特率可编程64 k不同利率
    •数据字格式-一个起始位数据字长度可编程从一到八个比特—
    —可选的偶数/奇数/不校验位
    -一个或两个停止位区分地址和一个额外的数据(地址模式)
    •四个错误检测标志:
    •两种唤醒多处理器模式:空闲线和地址位
    •半双工或全双工操作
    •双缓冲接收和发送功能
    •发送和接收操作可以通过中断驱动或轮询算法与状态标志来完成
    •发送和接收中断的单独启用位(BRKDT除外)
    •NRZ(非归零)格式增强功能包括:
    •16级发送/接收FIFO

结构

全双工操作中使用的主要元件如图26-2所示,包括:
•发送器(TX)和主寄存器(图26-2的上半部分):
—SCITXBUF—发送器数据缓冲寄存器。包含要传输的数据(由CPU加载)
– TXSHF寄存器-发送器移位寄存器。接收来自寄存器SCITXBUF的数据,并将数据移位到SCITXD引脚上,一次一个位。
•接收器(RX)和主寄存器(图26-2的下半部分):

  • RXSHF寄存器-接收器移位寄存器。从SCIRXD引脚移入数据,每次一个位
  • SCIRXBUF -接收器数据缓冲寄存器。包含CPU要读取的数据。来自远程处理器的数据被加载到寄存器RXSHF,然后加载到寄存器SCIRXBUF和SCIRXEMU
    •可编程波特发生器
    •控制和状态寄存器SCI接收和发送可以独立或同时工作。

SCI模块信号摘要

各SCI信号名称的汇总描述如表

在这里插入图片描述

在这里插入图片描述

配置设备引脚

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

多处理器和异步通信模式

SCI有两种多处理器协议,空闲行多处理器模式(见第26.8节)和地址位多处理器模式(见第26.9节)。这些协议允许在多个处理器之间进行有效的数据传输。
SCI提供通用异步接收/发送器(UART)通信模式,用于与许多流行的外设接口。异步模式(参见第26.10节)需要两行来连接许多标准设备,如使用RS-232-C格式的终端和打印机。数据传输特性包括:
•一个起始位
•一到八个数据位
•偶/奇偶校验位或无奇偶校验位
•一个或两个停止位
可编程数据格式
SCI数据的接收和发送都采用NRZ (non-return-to-zero)格式。如图26-3所示,NRZ数据格式包括:
•1个起始位
•1 ~ 8个数据位
•一个奇偶校验位(可选)
•一个或两个停止位
•一个用来区分数据和地址的额外位(仅限地址位模式)
数据的基本单位称为字符,长度为1 ~ 8位。数据的每个字符都用一个起始位、一个或两个停止位以及可选的奇偶校验位和地址位进行格式化。带格式化信息的数据字符称为帧,如图26-3所示。
在这里插入图片描述

要对数据格式进行编程,请使用SCICCR寄存器。用于编程数据格式的位如表26-2所示

在这里插入图片描述

多处理机通信

多处理器通信格式允许一个处理器有效地将数据块发送到同一串行链路上的其他处理器。在一条串行线上,一次只能有一次传输。换句话说,同一时间串行线路上只能有一个通话者。
地址字节
通话者发送的信息块的第一个字节包含一个地址字节,所有监听者都会读取这个地址字节。
只有具有正确地址的侦听器才能被地址字节后面的数据字节中断。地址不正确的监听器直到下一个地址字节才会中断。
Sleep Bit
串行链路上的所有处理器都将SCI Sleep位(SCICTL1的第2位)设置为1,这样处理器只有在检测到地址字节时才会中断。当处理器读取与应用软件设置的CPU设备地址相对应的块地址时,程序必须清除SLEEP位,以使SCI在接收每个数据字节时产生中断。
虽然接收端在SLEEP位为1时仍然运行,但接收端不会将RXRDY、RXINT或任何接收端错误状态位设置为1,除非检测到地址字节并且接收帧中的地址位为1(适用于地址位模式)。SCI不会改变SLEEP位;您的软件必须更改SLEEP位。

识别地址字节

处理器识别地址字节的方式不同,这取决于所使用的多处理器模式。
•idle-line模式(章节26.8)在地址字节之前留下一个安静的空间。此模式没有额外的地址/数据位,并且在处理包含超过10字节数据的块时比地址-位模式更有效。典型的非多处理器SCI通信必须使用空闲线路模式。
•地址位模式(章节26.9)在每个字节中增加一个额外的位(即地址位)来区分地址和数据。此模式在处理许多小数据块时效率更高,因为与空闲模式不同,此模式不会在数据块之间等待。然而,在高传输速度下,该程序不够快,无法避免传输流中的10位空闲。

控制SCI的TX和RX功能

多处理器模式是软件可选择使用ADDR/IDLE mode位(SCICCR,位3)。两种模式都使用TXWAKE标志位(SCICTL1,位3),RXWAKE标志位(SCIRXST,位1)和SLEEP标志位(SCICTL1,位2)来控制这些模式的SCI发送和接收功能。

收据序列

在两种多处理器模式下,接收顺序如下:

  1. 在收到地址块时,SCI端口唤醒并请求中断(比特数1 RX/BK INT - na -of SCICTL2必须使能以非fifo操作模式请求中断)。在FIFO模式下,RXFFINT服务于此目的,为了使能此功能,必须使能SCIFFRX寄存器中的RXFFINTEN,并将同一寄存器中的RXFFIL设为1)。SCI读取包含目的地址的块的第一帧。
  2. 一个软件程序通过中断进入并检查进入地址。将此地址字节与存储在内存中的设备地址字节进行核对。
  3. 如果检查显示该块是给设备CPU的地址,则CPU清除SLEEP位并读取块的其余部分。如果没有,软件例程退出时仍然设置SLEEP位,并且在下一个块开始之前不接收中断。

空闲行多处理器模式

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

空闲线路模式步骤

空转模式的后续步骤:
1.单击“确定”。接收到block-start信号后,SCI被唤醒。
2. 处理器识别下一个SCI中断。
3. 中断服务程序将接收到的地址(由远程发送器发送)与ISR地址进行比较。
4. 如果CPU正在寻址,则服务例程清除SLEEP位并接收数据块的其余部分。
5. 如果CPU没有被寻址,SLEEP位保持设置。这让CPU继续执行主程序,而不被SCI端口中断,直到下一次检测到一个块启动。

在IDLE模式下,如果SCI从FIFO读取所有RXDATA的时间大于10位,则SCI可能会错过要检测的立即块开始。
RXWAKE逻辑只在SCI识别到10位IDLE周期时断言一次。如果读取RXBUF(这清除了WAKE条件),即使在读取RXBUF后该行仍然空闲,SCI也不会再次断言。
因此,如果ISR使用RXBUF从FIFO读取所有RXDATA的时间超过10位,SCI可能会错过检测下一个块的开始。这适用于FIFO和Non-FIFO模式,当CPU需要大于10位的SCI时钟从RXBUF/
FIFO读取数据时。 为避免这种情况,建议使用以下两种方式:•设置SCICTL1。在ISR结束时读取所有RX数据后执行SWRESET。
•在读取RXBUF寄存器之前,读取并检查RXWAKE状态位。如果设置了RXWAKE,则不要在ISR结束时为RX设置SLEEP位。

块启动信号

发送块开始信号有两种方式:
•方法1: 故意留出10位或更多的空闲时间,通过延迟传输前一个块中的最后一帧数据和传输新块的地址帧之间的时间。
•方法2: SCI端口在写SCITXBUF寄存器之前,先将TXWAKE位(SCICTL1, bit 3)置为1。这将发送恰好11位的空闲时间。在这种方法中,串行通信线路的空闲时间不会超过必要的时间。(在设置TXWAKE之后,在发送地址之前,一个不关心的字节必须写入SCITXBUF,以便传输空闲时间。)

唤醒临时(WUT)标志

与TXWAKE位相关联的是唤醒临时(WUT)标志。WUT是一个内部标志,用TXWAKE双缓冲。当从SCITXBUF加载TXSHF时,从TXWAKE加载WUT,并将TXWAKE位清零。这种排列如图26-5所示。
在这里插入图片描述

发送块开始信号

在一组块传输序列中,发出恰好一帧时间的块开始信号:

  1. 在TXWAKE位上写1。
  2. 向SCITXBUF寄存器(传输数据缓冲区)写入一个数据字(内容不重要:不关心)以发送一个块启动信号。(写入的第一个数据字在发送块启动信号时被抑制,之后被忽略。)当TXSHF(传输移位寄存器)再次空闲时,SCITXBUF的内容被转移到TXSHF, TXWAKE的值被转移到WUT,然后TXWAKE被清除。
    由于TXWAKE被设置为1,开始位、数据位和奇偶校验位被前一帧的最后一个停止位之后传输的11位空闲周期所取代。
  3. 向SCITXBUF写入一个新的地址值。
    必须首先写入一个不关心的数据字以注册SCITXBUF,以便TXWAKE位值可以转移到WUT。在不关心的数据字被移到TXSHF寄存器之后,由于TXSHF和WUT都是双缓冲的,所以可以再次写入SCITXBUF(如果需要的话还有TXWAKE)。

接收操作

不管SLEEP位是多少,接收器都在工作。然而,接收器既不设置RXRDY也不设置错误状态位,也不请求接收中断,直到检测到地址帧。

地址位多处理器模式

在地址位协议(ADDR/IDLE MODE位=1)中,帧有一个额外的位,称为地址位,紧跟在最后一个数据位之后。地址位在块的第一帧设置为1,在所有其他帧中设置为0。空闲时间段的定时无关(如图26-6所示)。

发送地址

TXWAKE位值放在地址位中。在传输过程中,当SCITXBUF寄存器和TXWAKE分别被加载到TXSHF寄存器和WUT中时,TXWAKE被重置为0,WUT成为当前帧的地址位值。因此,要发送一个地址:将TXWAKE位设置为1,并将相应的地址值写入SCITXBUF寄存器。
当这个地址值被转移到TXSHF寄存器并移出时,地址位作为1发送。
这标志着串行链路上的其他处理器读取该地址。
2. TXSHF和WUT加载完成后,写入SCITXBUF和TXWAKE。(可以立即写入,因为TXSHF和WUT都是双缓冲的。
3. 将TXWAKE位设置为0以发送块中的非地址帧。

作为一般规则,地址位格式通常用于11字节或更少的数据帧。这种格式为所有传输的数据字节增加一个比特值(地址帧为1,数据帧为0)。
空闲行格式通常用于12字节或更多的数据帧。
在这里插入图片描述

SCI通讯格式

SCI异步通信格式采用单线(单向)或双线(双向)通信。在这种模式下,帧由1个起始位、1 ~ 8个数据位、可选的奇偶校验位和1 ~ 2个停止位组成,如图26-7所示。每个数据位有8个SCICLK周期。
接收方在收到有效的起始位后开始操作。有效的起始位由四个连续的SCICLK内部零周期标识,如图26-7所示。如果任何位不为零,则处理器重新开始并开始寻找另一个起始位。
对于起始位之后的比特,处理器通过在比特中间进行三个采样来确定比特值。这些采样发生在第四、第五和第六个SCICLK周期,位值的确定基于多数(三分之二)。图26-7演示了异步通信格式,其中有一个起始位显示了多数投票的位置。
由于接收器同步到帧,外部发送和接收设备不使用同步串行时钟。时钟可以在本地生成。
在这里插入图片描述

通信模式中的接收机信号

图26-8给出了一个接收机信号时序的示例,它假设了以下条件:
•地址位唤醒模式(地址位在空闲线路模式下不会出现)
•每个字符6位
在这里插入图片描述

注:

  1. 标志位RXENA (SCICTL1, 0位)走高,使能接收器。
  2. 数据到达SCIRXD引脚,检测到起始位。
  3. 数据从RXSHF转移到接收缓冲区寄存器(SCIRXBUF);请求中断。标志位RXRDY (SCIRXST,位6)变高表示接收到一个新字符。
  4. 程序读取SCIRXBUF;flag RXRDY自动清除。
  5. 下一个字节的数据到达SCIRXD引脚;检测起始位,然后清除。
  6. 将RXENA位调低以禁用接收器。数据继续在RXSHF中组装,但不传输到接收器缓冲区寄存器

通信模式中的发射机信号

图26-9给出了一个发射机信号时序的示例,它假设了以下条件:
•地址位唤醒模式(地址位在空闲线路模式下不会出现)
•每个字符3位
在这里插入图片描述

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

SCI端口中断

SCI接收和发送可以中断控制。SCICTL2寄存器有一个标志位(TXRDY),它表示活动的中断条件,SCIRXST寄存器有两个中断标志位(RXRDY和BRKDT),加上RX ERROR中断标志,它是FE、OE、BRKDT和PE条件的逻辑或。发送器和接收器具有单独的中断启用位。如果不启用,则不会断言中断;但是,条件标志保持活动状态,反映传输和接收状态。
SCI对于接收端和发送端具有独立的外围中断向量。外围中断请求可以是高优先级的,也可以是低优先级的。这是由外设输出到PIE控制器的优先级位表示的。当RX和TX中断请求处于相同的优先级时,接收端总是比发送端具有更高的优先级,从而减少了接收端溢出的可能性。
外围中断的操作在系统控制和中断一章的外围中断一节中描述。

•如果RX/BK INT ENA位(SCICTL2, bit
1)被设置,当发生以下事件之一时,接收方外设中断请求被断言:—SCI接收到一个完整的帧,并将RXSHF寄存器中的数据传输到SCIRXBUF寄存器中。这个动作设置RXRDY标志(SCIRXST,位6)并启动中断。
-发生中断检测条件(SCIRXD在缺少停止位后的9.625位周期内处于低电平)。这个动作设置BRKDT标志位(SCIRXST,第5位)并启动中断。
•如果设置了TX INT
ENA位(SCICTL2.0),当SCITXBUF寄存器中的数据被转移到TXSHF寄存器时,发送器外设中断请求被断言,表明CPU可以写SCITXBUF;这个动作设置TXRDY标志位(SCICTL2,位7)并启动中断。
SCI模块中断反应时间-如果在应用程序中发生紧时序,可能会发生偶尔的BRKDT或其他错误,如FE/PE被触发。
中断不会被触发,直到大约7/8的停止位被检测到(大约0.875位时间)。ISR表项前的实际延迟值为:((7BAUD_CLK_PERIOD)/
8+3
SYSCLK_PERIOD)。 在RX
ISR完成之前,SCI不会开始读取额外的位/字符,所以在下一个字节的起始位开始之前完成ISR。不管中断原因是什么,这留下了大约1/8比特时间(大约0.125比特时间)来完成整个ISR。
如果ISR在下一个起始位开始之前没有完成(在RX线再次变低之前),SCI模块在错误的位置开始读取起始位,因此可能会错误地读取所有位,直到下一个正确对齐的起始位(当ISR有足够的时间在再次开始位之前处理)。
避免错误的推荐方法(以适应ISR开始所需的0.875位时间):保持RX ISR短。RX
ISR必须仅用于将FIFO/缓冲区中的数据移动到内存中,在内存中数据可以在另一个时间要求较低的函数中进行处理。
2. 避免在SCI RX ISR中过多地嵌套其他中断。不要允许嵌套延迟SCI RX ISR完井超过大约0.125位的时间窗口。
3. 如果需要额外的时间(超过大约0.125比特的时间),在将额外的数据传输到C2000设备的SCI RX引脚之前,可以在其他设备的固件中添加延迟。 其他设备可以通过以下方式增加延迟:a.向C2000设备发送带有2个停止位的字节,为C2000
RX ISR完成提供大约1.125位的处理时间。 b.在发送一个字节后,在发送到C2000设备的另一个设备的固件中增加手动延迟,为C2000
RX ISR完成提供(延迟+大约0.125比特时间)处理时间。 c.在每次C2000
RX中断发生后,在发送到C2000设备的另一个设备的固件中增加手动延迟,为C2000 RX
ISR完成提供(延迟+大约0.125比特时间)处理时间。这很难实现,因为需要另一个设备来预测传输的数据何时触发C2000设备上的RX中断。触发RX中断的例子有:到达RX-
fifo水平、发送BRKDT、发生RXERROR等。

RXRDY和BRKDT位的中断产生由RX/BK INT ENA位(SCICTL2,位1)控制。RX ERROR位的中断产生由RX ERR INT ENA位(SCICTL1,位6)控制。

打破检测

可以将“中断”信号(也称为“中断检测”或“中断序列”)发送到模块以向总线发出特定条件的信号。这种中断信号被定义为一定时间的低脉冲,通常至少为1个包宽(包括丢失的停止位)。上证综指有两种主要的检测“中断”信号的方法,每种方法都有一定的局限性。
第一个for中断检测方法涉及读取SCIRXST。BRKDT。当SCI接收器数据线(SCIRXD)连续保持低电平至少9.625位时,从丢失第一个停止位开始,触发BRKDT位的断开条件就会发生。如果SCIRX线在9.625位期间的任何一点走高,那么SCI不会标记中断检测。触发第一个停止位错过,典型的方法是保持RX低行:•1起始位•8位数据位•(可选)1地址位••1停止位奇偶校验位(可选)1×9.625的额外的时间保持在低水平,这是一个总为19.625(系统使用没有奇偶校验或地址位),20.625(系统使用奇偶校验或解决一些但不是两个),或21.625(系统使用奇偶校验和地址位)位乘以持有低。
检测中断的第二种方法是使用SCIRXST。铁、SCIRXST。PE和SCIRXBUF。SAR位检测断信号的10位或11位低。ISR代码可以使用以下标志和接收数据的组合来确定中断检测是否发生:•中断信号= 11位低(需要启用奇偶校验)- FE1 -奇数奇偶校验PE1,偶数奇偶校验PE==0 - SCIRXBUF。SAR(接收字符)0x00•中断信号= 10位低(需要禁用奇偶校验)- FE1 - SCIRXBUF。SAR(接收字符)==0x00

SCI波特率计算

内部生成的串行时钟由低速外设时钟(LSPCLK)和波特选择寄存器决定。SCI使用波特选择寄存器的16位值来选择给定LSPCLK可能的64K不同串行时钟速率之一。
请参阅波特选择寄存器中的位描述,以获得计算SCI异步波特率时使用的公式。常用SCI比特率的波特选择值如表26-3所示。LSPCLK/16为最大波特率。例如,LSPCLK为100MHz,则最大波特率为6.25Mbps。AAAAAA
在这里插入图片描述

SCI增强功能

C28x SCI具有自动波特检测和收发FIFO功能。下面的部分解释FIFO操作

SCI FIFO描述

下面的步骤解释先进先出的特点,并帮助编程SCI与先进先出。

  1. 重置。在复位时,SCI以标准SCI模式上电,FIFO功能被禁用。FIFO寄存器SCIFFTX、SCIFFRX和SCIFFCT保持不活动状态。
  2. 标准的科学。标准SCI模式通常使用TXINT/RXINT中断作为模块的中断源。
  3. FIFO实现。FIFO模式通过在SCIFFTX寄存器中设置SCIFFEN位来启用。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的一字发送缓冲区(SCITXBUF)在发送FIFO和移位寄存器之前起转换缓冲区的作用。
    SCITXBUF被加载到FIFO(当启用FIFO时)或TXSHF(当禁用FIFO时)。
    当启用FIFO时,只有在移位寄存器的最后一位被移出之后,SCITXBUF才会加载到FIFO中,因此SCITXBUF不能被视为额外的缓冲区级别。启用FIFO后,在可选延迟值(SCIFFCT)之后直接从FIFO(而不是TXBUF)加载TXSHF。当SCI启用FIFO模式时,写入SCI- txfifo的字符将排队进入SCI- txfifo, SCI- rxfifo接收的字符可以使用SCIRXBUF读取。
  7. 延迟转移。FIFO中的字被转移到发送移位寄存器的速率是可编程的。SCIFFCT寄存器位(7−0)FFTXDLY7−FFTXDLY0定义字传输之间的延时。延迟定义为SCI波特时钟周期数。8位寄存器可以定义0波特时钟周期的最小延迟和256波特时钟周期的最大延迟。在零延迟的情况下,SCI模块可以在FIFO字前后移位的情况下以连续模式传输数据。在256时钟延迟下,SCI模块可以以最大延迟模式传输数据,FIFO字在每个字之间以256波特时钟延迟移出。可编程延迟便于与慢速SCI/UARTs通信,CPU干预少。
  8. FIFO状态位。发送和接收fifo都有状态位TXFFST或RXFFST(位12−8),定义在任何时候fifo中可用的字数。当这些位被清除为0时,发送FIFO复位位TXFIFO和接收复位位RXFIFO将FIFO指针重置为零。一旦这些位被设置为1,fifo就从开始恢复操作。
  9. 可编程中断级别。发送和接收FIFO都可以产生CPU中断。当发送FIFO状态位TXFFST(位12−8)匹配(小于或等于)中断触发电平位TXFFIL(位4−0)时,就会产生中断触发器。这为SCI的发送和接收部分提供了一个可编程中断触发器。接收FIFO的缺省值为0x11111,发送FIFO的缺省值为0x00000。
    图26-10和表26-4说明了非fifo /FFO模式下SCI中断的操作/配置
    在这里插入图片描述

在这里插入图片描述

SCI Auto-Baud

大多数SCI模块没有内置硬件的自动波特检测逻辑。这些SCI模块集成了嵌入式控制器,其时钟速率取决于锁相环复位值。嵌入式控制器时钟通常在最终设计后更改。在增强的特性集中,该模块支持硬件中的自动波特检测逻辑。下一节解释autobaud-detect特性的启用顺序。

Autobaud-Detect序列

SCIFFCT中的ABD位和CDC位控制自动发送逻辑。可以使能SCIRST位,使自动波特逻辑工作。
如果在CDC为1时设置ABD,表示自波特对齐,则发生SCI传输FIFO中断(TXINT)。
中断服务结束后,必须通过软件清除CDC位。如果在中断服务后CDC仍然保持设置,则不会有重复中断。

  1. 通过在SCIFFCT中设置CDC位(第13位),并通过将1写入ABDCLR位(第14位)来清除ABD位(第15位),从而启用SCI的自动波特检测模式。
  2. 将波特率寄存器初始化为1或小于500Kbps的波特率限制。
  3. 允许SCI以所需的波特率从主机接收字符“A”或“A”。如果第一个字符为“A”或“A”,则自动波特检测硬件检测传入波特率并设置ABD位。
  4. 自动检测硬件用等效的波特值十六进制更新波特率寄存器。这个逻辑也会对CPU产生一个中断。
  5. 通过向SCIFFCT寄存器的ABD CLR(第14位)写入1来响应中断清除ADB位,并通过写入0来清除CDC位来禁用进一步的自动锁定。
  6. 读取接收缓冲区字符“A”或“A”以清空缓冲区和缓冲区状态。
  7. 如果在CDC为1时设置ABD,表示自动波特对齐,则发生SCI发送FIFO中断(TXINT)。中断服务结束后,必须通过软件清除CDC位。

在较高的波特率下,输入数据位的转换率会受到收发器和连接器性能的影响。虽然正常的串行通信可以很好地工作,但这个转换率可能会限制在更高波特率(通常超过100k波特)下可靠的自动波特检测,并导致自动波特锁功能失败。
为了避免这种情况,建议如下:•使用较低的波特率实现主机和C28x SCI引导加载程序之间的波特锁。
•主机可以与加载的C28x应用程序握手,将SCI波特率寄存器设置为所需的更高波特率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值