F280049C学习笔记之SCI
参考附件
DSP TMF320F2803x 串行通信接口 SCI(Serial Communication Interface)-CSDN博客
DSP28335笔记--SCI篇_sci中断和fifo有什么区别-CSDN博客
DSP28335的SCI的FIFO中断使用心得 - 代码先锋网
【复盘】F280049串口通信SCI实验过程中钻的牛角尖points_280049sci-CSDN博客
TMS320F280049C 学习笔记18 串行通信接口 Serial Communications Interface (SCI)_f280039串口-CSDN博客
DSP F28335的SCI模块_f28335片上集成3个独立sci模块-CSDN博客
SCI模块手册解析
SCI模块介绍
SCI 是两线异步串行端口,通常称为 UART。 SCI 模块支持 CPU 与其他使用标准非归零(NRZ)格式的异步外围设备之间的数字通信。 SCI 接收器和发送器均具有 4 级深度 FIFO,以减少服务开销,并且各自具有自己的独立使能和中断位。 两者都可以独立运行以进行半双工通信,也可以同时运行以进行全双工通信。
为了确保数据完整性, SCI 在中断检测、 奇偶校验、 超载、 和组帧错误方面对接收到的数据进行检查。可通过 16 位波特选择寄存器将位速率编程为不同的速度。
SCI模块框图
位于手册第2344页“Figure 23-2. Serial Communications Interface (SCI) Module Block Diagram”

多处理器和异步通信模式
SCI 具有两种多处理器协议:空闲线多处理器模式和地址位多处理器模式。这些协议允许在多个处理器之间高效传输数据。
SCI 提供通用异步收发器(UART)通信模式,用于与许多流行外设接口。异步模式需要两条线路来与使用 RS-232-C 格式的标准设备(如终端和打印机)进行接口。数据传输特性包括:
• 一个起始位
• 一到八个数据位
• 偶校验位或奇校验位,或无校验位
• 一个或两个停止位
SCI 可编程数据格式
SCI 数据(包括接收和发送)采用 NRZ(非归零)格式。如图 23-3 所示,NRZ 数据格式由以下部分组成:
• 一个起始位
• 一到八个数据位
• 一个奇偶校验位(可选)
• 一个或两个停止位
• 一个额外位用于区分地址和数据(仅限地址位模式)
数据的基本单位称为字符,其长度为1至8位。每个数据字符由起始位、1或2个停止位以及可选的奇偶校验位和地址位组成。包含格式信息的数据字符称为帧。SCI数据帧格式,如图23-3所示。

(位于手册第2346页“Figure 23-3. Typical SCI Data Frame Formats”)
使用 通信控制寄存器 SCICCR 编程数据格式,用于编程数据格式的位如 表23-2所示。

(位于手册第2346页“Figure 23-3. Typical SCI Data Frame Formats”)
SCI Multiprocessor Communication(多处理器通信)
多处理器通信格式允许一个处理器高效地将数据块发送给同一串行链路上的其他处理器。在同一串行链路上,同一时间只能进行一次传输。换句话说,同一时间串行链路上只能有一个发送方。
发送方先传 “地址字节”,接收方仅当地址匹配时响应后续数据(通过SLEEP位控制)。
Idle-Line Multiprocessor Mode(空闲线多处理器模式)
在空闲行多处理器协议(ADDR/IDLE MODE 位=0)中,块之间通过在块之间设置比块内帧之间更长的空闲时间来分隔。在帧后出现十个或更多高电平位时,表示新块的开始。单个位的时间直接从波特值(每秒位数)计算得出。
Address-Bit Multiprocessor Mode(地址位多处理器模式)
在地址位协议(ADDR/IDLE MODE 位=1)中,帧有一个额外的地址位,该地址位紧跟在最后一个数据位之后。在块的第一个帧中,地址位设置为1,而在其他所有帧中设置为0。
SCI的FIFO介绍
SCI接收器和发送器各有一个16级深度的先进先出(FIFO)缓冲区,用于减少服务开销,并且各有独立的使能位和中断位。两者可以独立运行以实现半双工通信,也可以同时运行以实现全双工通信。
SCI FIFO发送流程
-
将内存数据放置发送缓存当中
-
ScibRegs.SCITXBUF=’A’;
-
-
发送缓存中的数据自动存到FIFO当中
-
ScibRegs.SCITXBUF中的数据会放入到发送FIFO中,最多16字节数据如果连续发送的字节数量大于16需要等待,否则发送的数据将会被覆盖
-
-
发送FIFO将数据转到发送移位寄存器TXSHF当中
-
FIFO会自动将数据发送到移位寄存器TXSHF中最终到TXD引脚
-
SCI FIFO接收流程
-
数据到达RXD引脚之后,检测启动位
-
TXSHF移位到接收FIFO当中
-
当FIFO接收字节数量等于设置的接收FIFO深度ScibRegs.SCIFFRX.bit.RXFFIL = 8时产生一个中断
-
-
如果使能了接收中断将会产生一个中断
FIFO 队列的作用
-
数据缓存:SCI 的 FIFO 队列可对接收或发送的数据进行缓存。如在接收数据时,若不使用 FIFO,当数据从移位寄存器到接收缓冲器时会产生一次中断,若此时 CPU 未及时处理,后续数据可能会覆盖前面未处理的数据,导致数据丢失。而使用 FIFO 后,数据可先存入 FIFO 中,避免数据丢失。
-
减少 CPU 中断次数:在标准 SCI 模式下,每接收或发送一个字符就会产生一次中断,若数据量较大,CPU 会频繁响应中断,开销较大。FIFO 模式下,接收时可将多个数据先存入 FIFO,当 FIFO 中的数据个数等于预设的 FIFO 中断级位时才产生一次中断,CPU 可一次性读取多个数据;发送时,CPU 可将多个字符写入发送 FIFO,由发送模块自动从 FIFO 中取出数据发送,无需 CPU 频繁干预,从而减少 CPU 中断次数,提高效率。
SCI标准模式与FIFO模式的对比总结
FIFO模式下相比标准模式下,主要区别在于可以减少中断响应的次数,提高效率,标准模式下每接收一个字节数据都要产生中断,但是FIFO模式下,相当于一次中断可以等多个字节数据凑齐,一次性处理,效率更高。减少中断进入的频率可以大大提升cpu处理其他任务时的效率。
