第14章 串行通信接口SCI
- 格式:ppt
- 大小:431.00 KB
- 文档页数:18
串行通信分为同步通信和异步通信。
串行通信接口都具有发送引脚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。
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)名词解释:IR: InfraRed(红外)LSB: Least Significant Bit (最低有效位)MSB: Most Significant Bit(最高有效位)特征:八个中断标志位:(1)、传送区为空(2)、传送完成(3)、接收区已满(4)、空闲接收输入(5)、接收器超出(6)、噪音错误(7)、架构错误(8)、奇偶校验错误(9)、接收唤醒(10)、发送冲突(11)、SCI寄存器:注意:SCIBDH、SCIBDL、SCICR1这3个寄存器只能在SCISR2的AMAP=0时才能进入而SCIASR1、SCIACR1、SCIACR2这3个寄存器则只能在SCISR 的AMAP=1时才能进入1、SCI Baud Rate Registers (SCIBDH, SCIBDL)在AMAP=0的时候可写在AMAP=0的情况下,如果只有SCIBDH被写入,读取SCIBDH 不会返回当前值,直到SCIBDL也被写入(在写入SCIBDH之后) 注意:这两个寄存器只有在AMAP=0的情况下才能在memory map下可见IREN:0红外调制/解调不使能;1红外调制解调使能TNP[1:0]:此位控制是否使能narrow pluse(不知道是什么)SBR[12:0]:SCI 波特率设置位。
当IREN=0时,SCI baud rate = SCI bus clock / (16 x SBR[12:0])当IREN= 1时,SCI baud rate = SCI bus clock / (32 x SBR[12:1])注意:波特率发生器在reset之后被禁止且直至TE、RE位被置一。
而且,波特率发生器在(SBR[12:0]=0和IREN=0)||(SBR[12:0]=0和IREN=1)的情况下被禁止。
注意:只写入SCIBDH不写入SCIBDL是无效的,因为在未写入SCIBDL之前写入SCIBDH,会将SCIBDH的值放入一个短暂储存的空间。