DSP TMF320F2803x 串行通信接口 SCI(Serial Communication Interface)

一、概览

SCI 是两线异步串行端口,通常称为 UART。 SCI 模块支持 CPU 与其他使用标准非归零(NRZ)格式的异步外围设备之间的数字通信。 SCI 接收器和发送器均具有 4 级深度 FIFO,以减少服务开销,并且各自具有自己的独立使能和中断位两者都可以独立运行以进行半双工通信,也可以同时运行以进行全双工通信

为了确保数据完整性, SCI 在中断检测奇偶校验超载、 和组帧错误方面对接收到的数据进行检查。可通过 16 位波特选择寄存器将位速率编程为不同的速度。

1、模块特性

DSP TMF320F2803x 串行通信接口 SCI(Serial Communication Interface)_第1张图片 SCI CPU接口

SCI 模块特性

  • 两个外部引脚
    ——SCITXD
    ——SCIRXD;
  • 波特率可编程为 64K 个不同速率

    DSP TMF320F2803x 串行通信接口 SCI(Serial Communication Interface)_第2张图片

  • 数字-字格式:
    —— 1 个开始位
    —— 数字-字长度可编程为 1 到 8 位
    —— 可选 奇/偶/无 校验位
    —— 一个或两个停止位
    —— 一个额外的位来区分地址和数据(仅地址位模式);
  • 4 个错误检测标志:奇偶、超载、组帧 和 中断 检测;
  • 2 个唤醒多处理器模式: 空闲线路 和 地址位;
  • 全双工 或 半双工 运行;
  • 双缓冲接收和发送功能;
  • 可通过带有状态标志的中断驱动或者轮询算法来完成发射器和接收器操作;
  • 用于发射器和接收器中断的独立使能位(除了 BRKDT);
  • NRZ(非归零码) 格式

增强型特性:

  • 自动波特率检测硬件逻辑电路;
  • 4 级发送/接收 FIFO;

 

DSP TMF320F2803x 串行通信接口 SCI(Serial Communication Interface)_第3张图片

二、结构

DSP TMF320F2803x 串行通信接口 SCI(Serial Communication Interface)_第4张图片 模块方框图

三、SCI 可编程数据格式

DSP TMF320F2803x 串行通信接口 SCI(Serial Communication Interface)_第5张图片 典型的 SCI 数据帧格式

使用 通信控制寄存器 SCICCR 编程数据格式:

DSP TMF320F2803x 串行通信接口 SCI(Serial Communication Interface)_第6张图片

 四、SCI 多处理器通信

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

4.1 地址字节

发送节点(Talker) 发送的信息块的第一个字节是一个地址字节,该地址字节被所有接收节点(Listener)读取。 只有接收数据的地址字节与接收节点的地址字节相符时,才能中断接收节点。如果接收节点的地址和接收的地址不符合,接收节点将不会被中断,等待接收下一个地址字节。

4.2  SLEEP 位

串行链路上的所有处理器都将 SCI SLEEP 位(SCICTL1 的位 2)设置为 1,以便仅在检测到地址字节时才将其中断。 当处理器读取与应用软件所设置的CPU设备地址相对应的块地址时,程序必须清除 SLEEP 位,以使 SCI 在接收到每个数据字节时产生中断。

尽管当 SLEEP 位为 1 时接收器仍可工作,除非检测到地址字节且接收帧中的地址位为 1(适用于地址位模式),否则不会将RXRDY,RXINT 或任何接收器错误状态位设置为 1。 SCI 本身并不会更改 SLEEP 位,必须由用户软件改变。

4.2.1 识别地址字节

处理器根据使用的多处理器模式(空闲线模式或地址位模式),采用不同的方式识别地址字节。 例如:

  • 空闲线模式在地址字节预留一个静态空间, 此模式没有额外的地址/数据位,并且此模式在处理包含 10 个以上字节的数据块传输方面比地址位模式效率高。空闲线模式一般用于非处理器的 SCI 通信。

  • 地址位模式在每个字节中增加了一个额外的位(即地址位)以区分地址和数据。 此模式在处理许多小数据块时效率更高,因为与空闲模式不同,它不必在数据块之间等待。 但是,在高传输速度下,程序速度不够快,无法避免传输流中的 10 位空闲。

4.2.2 控制 SCI TX 和 RX 的特性

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

4.2.3 接收步骤

在两种多处理器模式中,接收步骤如下:

  1. 收到地址块后,SCI端口将唤醒并请求中断(必须使能 SCICTL2 的位 1 RX / BK INT ENA 位才能请求中断)。 它读取该块的第一帧,其中包含目的处理器的地址。
  2. 通过中断检测接收的地址启动软件例程,然后比较存储在内存中的器件地址字节和接收到数据的地址字节。
  3. 如果检查表明该块已寻址到设备CPU,则CPU清除SLEEP位并读取其余块。 如果不是,软件例程将退出,并且SLEEP位仍然置1,并且直到下一个块开始才接收中断。

五、空闲线多处理器模式

DSP TMF320F2803x 串行通信接口 SCI(Serial Communication Interface)_第7张图片 空闲线多处理器通信格式

5.1 空闲线模式操作步骤

  1. 接收到块起始信号后,SCI 被唤醒;
  2. 处理器识别下一个 SCI 中断;
  3. 中断服务子程序将收到的地址与接收节点的地址进行比较。
  4. 如果 CPU 的地址与接收到的地址相符,则中断服务子程序清除 SLEEP 位,并接收块中剩余的数据;
  5. 如果 CPU 的地址与接收到的地址不符,则 SLEEP 位仍保持在置位状态,直到检测到下一个数据块的开始,否则 CPU 都不会被 SCI 端口中断,继续执行主程序。

5.2 块起始信号

两种方式来发送块起始信号

  • 法1:特意在前后两个数据块之间增加 10 位或更多的空闲时间
  • 法2:在写入 SCITXBUF 寄存器之前,SCI 端口首先将 TXWAKE 位(SCICTL1,位3)设置为 1。 这将自动发送 11 位的空闲时间。 在这种方法中,除非必要,串行通信线路不会空闲。 (在设置TXWAKE之后发送地址之前,要向 SCITXBUF 写入一个无关的数据,以保证能够发送空闲时间。)

5.3 唤醒临时(Wake-Up Temporary,WUT)标志

与 TXWAKE 位相关的是唤醒临时标志位(WUT),这是一个内部标志,与 TXWAKE 构成双缓冲。当从 SCITXBUF 装在 TXSHF 时, WUT 从 TXWAKE 装入,TXWAKE 清 0,如下图所示:

DSP TMF320F2803x 串行通信接口 SCI(Serial Communication Interface)_第8张图片 双缓冲的 WUT 和 TXSHF

5.3.1 发送块开始信号

在块传送过程中需要采用下列步骤发送块起始信号:

  1. 写 1 到 TXWAKE;
  2. 写一个数据字(内容不重要)到 SCITXBUF 寄存器(发送数据缓冲寄存器)来发送一个块起始信号。(当快起始信号被发送时,写入的数据字被禁止,且在块起始信号发送后被忽略)。当 TXSFH(发送移位寄存器)再次空闲时,SCITXBUF 寄存器中的内容被转移到 TXSHF,TXWAKE 的值被转移到 WUT,然后 TXWAKE 位被清除。由于 TXWAKE 置 1,在前一帧发送完停止位后,起始位、数据位和奇偶校验位被发送的 11 位空闲位取代。
  3. 写入一个新地址到 SCITXBUF 寄存器。在传送开始信号时,必须先将一个无关的数据写入 SCITXBUF 寄存器,从而使 TXWAKE 位的值能被转移到 WUT 中。由于 TXSHF 和 WUT 都是双缓冲,在无关数据字被转移到 TXSHT 寄存器后,才能再次将数据写入 SCITXBUF。

5.4 接收操作

接收器的操作和 SLEEP 位无关,然而在检测到一个地址帧之前,接收器并不对 RXRDY 位和错误状态位置位,也不申请接收中断。

六、地址位多处理器模式

DSP TMF320F2803x 串行通信接口 SCI(Serial Communication Interface)_第9张图片 地址位多处理器模式通信格式

在地址位协议(ADDR/IDLE MODE位= 1)中,所有帧的最后一个数据位后具有一个额外的位,称为地址位,用以区分地址帧和数据帧。 地址位在该块的第一帧中设置为1,在所有其他帧中设置为0。地址位多处理器模式的数据传输和数据块之间的空闲周期无关。

6.1 发送一个地址

TXWAKE 位的值被放在地址位。在发送过程中,当 SCITXBUF 寄存器和 TXWAKE 分别转载到 TXSHF 寄存器和 WUT 中时, TXWAKE 位清 0,且 WUT 的值位当前帧的地址位的值。因此,发送一个地址需要完成如下操作:

  1. TXWAKE 置 1,且将合适的地址值写入 SCITXBUF 寄存器。当该地址值被转移到 TXSHT 寄存器后又被移出时,它的地址位被作为 1 发送。这样串行总线上其他处理器就读取这个地址
  2. 当 TXSHT 和 WUT 加载后,向 SCITXBUF 和 TXWAKE 写入新值(由于 TXSHT 和 WUT 是双缓冲,所以能被立即写入)
  3. TXWAKE 位保持 0,发送块中无地址的数据帧

一般情况下,地址位格式应用于 11 个或更少字节的数据帧传输。这种格式在所有发送的数据字节中增加了 1 位(1 代表地址帧,0 代表数据帧);通常 12 个或更多字节的数据帧传输使用空闲线格式。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(DSP,F28035笔记,DSP,SCI,28035)