第13章 串行通信接口模块(SCI)
- 格式:pdf
- 大小:1.78 MB
- 文档页数:50
TMS320F280x串行通信接口(SCI)参考手册0 概述 (2)1.1 增强SCI模块概述 (2)1.2 SCI结构特点 (5)1.2.1 SCI相关信号 (6)1.2.2 多处理器异步通信模式 (6)1.2.3 SCI可编程数据格式 (6)1.2.4 SCI多处理器通信 (7)1.2.5 空闲线多处理器模式 (8)1.2.5.1 空闲线模式操作步骤 (9)1.2.5.2 块起始信号 (9)1.2.5.3 唤醒暂时(WUT)标志 (9)1.2.5.4 块的发送开始信号 (10)1.2.5.5 接收器操作 (10)1.2.6 地址位多处理器模式 (10)1.2.7 SCI通信格式 (11)1.2.7.1 通信模式中的接收器信号 (12)1.2.7.2 通信模式中的发送器信号 (12)1.2.8 SCI中断 (13)1.2.9 SCI波特率计算 (14)1.2.10 SCI增强特征 (14)1.2.10.1 SCI FIFO描述 (14)1.2.10.2 SCI自动波特率 (16)2.1 SCI模块寄存器概述 (18)2.2 SCI通信控制寄存器(SCICCR) (18)2.3 SCI控制寄存器1(SCICTL1) (20)2.4 SCI波特率选择寄存器(SCIHBAUD,SCILBAUD) (22)2.5 SCI控制寄存器2(SCICTL2) (23)2.6 SCI接收器状态寄存器(SCIRXST) (24)2.7 接收数据缓冲寄存器(SCIRXEMU,SCIRXBUF) (26)2.7.1 仿真数据缓冲器(SCIRXEMU) (26)2.7.2 接收数据缓冲器(SCIRXBUF) (26)2.8 SCI发送数据缓冲寄存器(SCITXBUF) (27)2.9 SCI FIFO寄存器(SCIFFTX, SCIFFRX, SCIFFCT) (27)2.10 优先级控制寄存器(SCIPRI) (30)0 概述串行通信接口(SCI)是采用双线通信的异步串行通信接口,即通常所说的UART口。
串行通信分为同步通信和异步通信。
串行通信接口都具有发送引脚TXD和接收引脚RXD,它们是TTL平电。
如果要利用这两个引脚与外界实行异步通信,必须将TTL电平转化为RS-232电平。
SCI是一种全双工异步串行通信接口,主要用于MCU与其他计算机或设备之间的通信,几个独立的MCU也能通过SCI实现串行通信,形成网络。
从编程角度看,先设定好波特率,通信格式,是否校验,是否允许中断等。
接着发送数据时,先检查相应的标志位是否允许发送数据,如果可以,则把数据放入SCI数据寄存器即可,剩下的工作芯片自动完成:将数据从SCI数据寄存器送到发送移位寄存器,硬件驱动将发送移位寄存器里的数据按规定发送到发送引脚TXD,供对方接收。
接收时,数据逐位从接收引脚RXD进入到接收移位寄存器,当收到一个完整字节时,芯片会自动将数据送到SCI数据寄存器,并置相应的标志位,我们就可以根据标志位的情况来读取数据了。
SCIBDH:TNP[1:0]:发送窄脉冲位。
此位的设定与SCI传送的脉冲对应关系如下表:SCIBDL:SBR[12:0]:波特率设定位当IREN=0时,SCI波特率=SCI总线时钟/(16*SBR[12:0])当IREN=1时,SCI波特率=SCI总线时钟/(32*SBR[12:1])SCICR1:控制寄存器1(当AMAP=0时有效)LOOPS:循环模式选择位。
LOOPS=0时,为正常模式。
LOOPS=1时,为自发自收模式,在此模式下,RXD引脚与SCI内部断开,内部发送数据直接作为接收的输入,用于测试。
接收器的输入由RSRC位决定。
SCISWAI:当SCISWAI=0时,SCI可以在等待模式下工作。
当SCISWAI=1时,SCI 不可以在等待模式下工作。
RSRC:当LOOPS=1时,RSRC位决定接收移位寄存器接收数据的来源。
RSRC=1,RXD引脚与SCI模块断开,SCI用TXD引脚来发送及接收。
RSRC=0时,发送器的输出作为接收器的输入。
TMS320x280x, 2801x, 2804x Serial Communications Interface (SCI) Reference Guide.pdf串行通讯接口(SCI)两线异步串行接口,即UART。
支持半双工和全双工通讯。
发送或接收完成通过中断驱动或查询状态标志实现。
波特率自适应。
包含两个SCI模块:SCI-A、SCI-B。
Character——Frame中的数据位Frame——起始位+数据位+(地址位)+校验位+停止位Block——若干Frame多处理器通讯:同一时刻只能有一个处理器作为数据发送者占用串行总线。
在Block中包含一个Address字节,接收者通过鉴别该字节判断是否与自己通讯,如果不符,则后续字节不会触发中断。
直至下一Address字节到来(触发中断),方再次判断。
通过置位SLEEP可以实现只有Address字节可触发中断,当中断处理程序判别出符合的Address字节后,需手动复位SLEEP,以允许后续数据字节触发中断。
idle-line多处理器通讯机制以10位或更多位高电平作为idle time。
idle time用以区分Block。
Block内首个Frame是address。
实现步骤:1)idle time唤醒SCI模块;2)处理器将识别下一个SCI中断;3)中断处理程序对收到的address和程序预知的地址进行比较;4)如果比较结果一致,中断服务程序应使SLEEP复位,并且接收剩余的数据Frame;如果不一致,则SLEEP保持置位。
idle time的生成方法:1)制造延时。
2)将TXWAKE置位,再向SCITXBUF写入一个字节,将发送长度为11位的idle time。
address bit多处理器通讯机制每一Frame额外包含一个address位。
Block内首个Frame 的address位为1,其余Frame的address位为0。
实现步骤:1)将TXWAKE置位,向SCITXBUF写入地址字节;2)TXWAKE复位以发送剩余非地址Frame。
第7章串行通信接口(SCI)目前几乎所有的台式电脑都带有9芯的异步串行通信口,简称串行口或COM口。
有的台式电脑带有两个串行口,分别称为COM1、COM2口。
大部分的笔记本电脑也带有串行口。
随着USB接口的普及,串行口的地位逐渐变低了。
但是,作为设备间的一种简便的通信方式,在相当长的时间内,串行口还不会消失。
因为简单且常用的串行通信只需要三根线(发送线、接收线和地线),所以,串行通信可以作为MCU与外界通信的简便方式之一。
大部分嵌入式MCU都具有串行通信接口(Serial Communication Interface,SCI),掌握SCI的编程是学习MCU的重要内容之一。
本章从掌握规范的SCI基本编程角度讨论串行通信编程,把与芯片型号相关内容和与芯片型号无关内容区别开来,便于读者融会贯通与实际应用。
本章7.1、7.2节是与芯片无关的有关串行通信的通用基础知识,只有理解这些基础知识,才能进行串行通信的应用。
7.3、7.4节阐述GP32芯片的SCI模块的编程方法,在此基础上,重点掌握7.5节给出的编程实例。
注意,在汇编程序中,只有初始化子程序与GP32相关,收发程序在整个08系列中是通用的,在C程序中,只有初始化子程序与GP32相关,收发程序对任何芯片是通用的。
当然,要注意头文件SCI.h相关位的定义。
关于串口程序的测试,最好利用教学资料中提供的PC机方的高级语言源程序进行。
根据自己对高级语言的熟悉程度选用VB、C#、VC或其他高级语言。
实际上,掌握一门PC机方的高级语言编程对嵌入式系统开发是必要的。
7.1异步串行通信的基础知识本节简要概括了串行通信中的通常使用的相关基本概念,为学习MCU的串行接口编程做准备。
对于已经了解这方面知识的读者,可以略读本节。
7.1.1基本概念“位”(bit)是单个二进制数字的简称,是可以拥有两种状态的最小二进制值,分别用“0”和“1”表示。
在计算机中,通常一个信息单位用8位二进制表示,称为一个“字节”(byte)。
SCI(serial communication interface)串行通信接口SCI 是一个双线的异步接口,即具有接受和发送两根信号线的异步接口,一般可以看着UART(通用异步接收/发送装置),SCI可以工作在查询和中断的方式实例:设计时使用MAX3232芯片将SCI 设计成串口RS232,那么X2812就可以和其他使用RS232接口的设备进行通信,当然也可设计成其他电平形式的串口,如RS485。
2812具有2个相同的SCI 模块,SCIA,SCIB 。
每个模块都有一个接收器和发送器,发送器和接收器都具有一个16级深度的FIFO 队列。
它们都自己独立的使能位和中断位。
工作模式:一.SCI 模块的特点1. 有两个引脚,发送SCITXD 和接收SCIRXD ,分别对应FPIOF 模块的第4位和第5位。
在编程初始化时,需要将GPIOFMUX 寄存器的第4位和第5位置1,否则这两个引脚就是通用数字I/O 口。
2. 外部晶振通过PLL 模块倍频之后产生了CPU 的系统时钟SYSCLKOUT ,经低速时钟预定标器之后输出低速外设时钟LSPCLK 提供给SCI 模块,要保证SCI 正常运行,系统控制模块必须使能SCI 时钟,只有使能了,LSPCLK 才能供给SCI 。
也就是在系统初始化函数中需要将外设时钟控制寄存器PCLKCR 的SCIAENCLK 位置1.3. SCI 具有4种错误检测标志:极性错误,超时错误,帧错误,间断检测A A ABB B单工,A 只发,B 只接半双工,A,B 都可发,同一时刻只能接收或发送全双工,任何时刻,都可发4.具有双缓冲接收和发送功能,接收缓冲寄存器位SCIRXBUF,发送缓冲寄存器为SCITXBUF。
独立的发送器和接收器使得SCI可以工作于半双工或全双工5.可以产生两个中断:SCIRXINT和SCITXINT,即接收中断和发送中断,SCI模块具有独立的发送中断使能位和接收中断使能位,发送和接收可以通过中断方式实现,也可以查询中断方式是实现6.在多处理器模式下,SCI模块具有两种唤醒方式:空闲线方式和地址位方式。
SCI模块SCI即一种通用异步通信接口UART,SCI采用异步通信方式,只需要发送和接收两根线,通信双方微处理器使用各自的时钟,适用于对另外的设备长距离的低速率通信。
在DSP中,SCI就是UART 通信。
一位一位的按顺序传送带通信方式。
F28335处理器共提供了3个SCI接口,在原有功能基础上增加了通信速率自动检测和FIFO缓冲等新功能,为了减少串口通信时CPU的开销,F28335的串口支持16级接收和发送FIFO。
SCI的接收器和发送器可以使用双级缓冲传送数据,并且SCI接收器和发送器有各自独立的中断和使能位。
为了保证数据的完整,SCI模块对接收到的数据进行间断,极性,超限和帧错误的检测。
SCI采用硬件对通信数据进行极性和数据格式检查,通过对16位的波特率控制寄存器进行编程,可以配置不同的SCI通信速率。
SCI的数据格式:ADD DAIA:仅在地址模式下使用。
作为区分数据和地址的附加位。
可以使用SCI通信控制寄存器(SCICCR)配置SCI通信采用的数据格式。
因为接收器使用帧同步,外部发送和接收器不需要使用串行同步时钟,时钟由器件本身提供。
SCI接收器的缓冲器有SCIRXBUF和SCIRXEMU两个。
这两个寄存器的内容相同,读SCIRXEMU寄存器不会对RXRDY清零,而读SCIRXBUF寄存器将对RXRDY清零。
1.普通模式信号接收。
●标志位RXENA(SCICTL1,位0)变高,使能接收器接收数据。
●数据到达SCIRXD引脚后,检测起始位。
●数据从RXSHF寄存器移位到接收缓冲器(SCIRXBUF),产生一个中断申请,标志位RXRDY(SCIRXST,位6)变高表示已接收一个新字符。
●程序读SCIRXBUF寄存器,标志位RXRDY自动被清除。
●数据的下一个字节达到SCIRXD引脚时检测启动位,然后清除。
●位RXENA变低,禁止接收器接收数据。
继续向RXSHF转载数据,但不移入到接收缓冲寄存器。