一、概览
SCI 是两线异步串行端口,通常称为 UART。 SCI 模块支持 CPU 与其他使用标准非归零(NRZ)格式的异步外围设备之间的数字通信。 SCI 接收器和发送器均具有 4 级深度 FIFO,以减少服务开销,并且各自具有自己的独立使能和中断位。 两者都可以独立运行以进行半双工通信,也可以同时运行以进行全双工通信。
为了确保数据完整性, SCI 在中断检测、 奇偶校验、 超载、 和组帧错误方面对接收到的数据进行检查。可通过 16 位波特选择寄存器将位速率编程为不同的速度。
1、模块特性
SCI 模块特性:
- 两个外部引脚
——SCITXD
——SCIRXD; - 波特率可编程为 64K 个不同速率
- 数字-字格式:
—— 1 个开始位;
—— 数字-字长度可编程为 1 到 8 位;
—— 可选 奇/偶/无 校验位;
—— 一个或两个停止位;
—— 一个额外的位来区分地址和数据(仅地址位模式); - 4 个错误检测标志:奇偶、超载、组帧 和 中断 检测;
- 2 个唤醒多处理器模式: 空闲线路 和 地址位;
- 全双工 或 半双工 运行;
- 双缓冲接收和发送功能;
- 可通过带有状态标志的中断驱动或者轮询算法来完成发射器和接收器操作;
- 用于发射器和接收器中断的独立使能位(除了 BRKDT);
- NRZ(非归零码) 格式
增强型特性:
- 自动波特率检测硬件逻辑电路;
- 4 级发送/接收 FIFO;
二、结构
三、SCI 可编程数据格式
使用 通信控制寄存器 SCICCR 编程数据格式:
四、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 接收步骤
在两种多处理器模式中,接收步骤如下:
- 收到地址块后,SCI端口将唤醒并请求中断(必须使能 SCICTL2 的位 1 RX / BK INT ENA 位才能请求中断)。 它读取该块的第一帧,其中包含目的处理器的地址。
- 通过中断检测接收的地址启动软件例程,然后比较存储在内存中的器件地址字节和接收到数据的地址字节。
- 如果检查表明该块已寻址到设备CPU,则CPU清除SLEEP位并读取其余块。 如果不是,软件例程将退出,并且SLEEP位仍然置1,并且直到下一个块开始才接收中断。
五、空闲线多处理器模式