SCI模块概要.docVIP

  • 23
  • 0
  • 约3.58千字
  • 约 8页
  • 2016-11-23 发布于湖北
  • 举报
SCI模块概要

SCI模块 SCI即一种通用异步通信接口UART,SCI采用异步通信方式,只需要发送和接收两根线,通信双方微处理器使用各自的时钟,适用于对另外的设备长距离的低速率通信。在DSP中,SCI就是UART通信。一位一位的按顺序传送带通信方式。 F28335处理器共提供了3个SCI接口,在原有功能基础上增加了通信速率自动检测和FIFO缓冲等新功能,为了减少串口通信时CPU的开销,F28335的串口支持16级接收和发送FIFO。SCI的接收器和发送器可以使用双级缓冲传送数据,并且SCI接收器和发送器有各自独立的中断和使能位。为了保证数据的完整,SCI模块对接收到的数据进行间断,极性,超限和帧错误的检测。SCI采用硬件对通信数据进行极性和数据格式检查,通过对16位的波特率控制寄存器进行编程,可以配置不同的SCI通信速率。 SCI的数据格式: Start LSB 2 3 4 5 6 7 MSB ADD DAIA Parity Stop1 Stop2 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转载数据,但不移入到接收缓冲寄存器。 2.普通模式发送信号 TXENA(SCICTL1,位1)置位,使能发送器工作; 写SCITXBUF寄存器,从而发送器不再为空,TXRDY变低; 发送器将数据装载到TXSHF中,此时TXRDY为高,发送器可接收第二个字节,并触发中断; 在TXRDY变高后,向SCITXBUF写入第二个字节,TXRDY将重新变低; 发送器完成第一帧数据的发送,SCITXBUF中第二个字节被装载到TXSHF中; TXENA置低,禁止发送器工作; 第二帧数据发送完毕。 SCI FIFO功能 所谓的FIFO就是先进先出的意思。SCI工作在FIFO模式下一般是因为所传输的信息并不是以一个帧为单位,而是以多个帧组成的一个包为信息单位的。在中断中,你读FIFO接收寄存器读到的数据是首先接收到的数据,再读一次的话读到的是接收到的第二个数据。而16深度的话就是最多能保存最近的16个接收数据,如果接收数据超过16个的话会产生相应的溢出。 普通模式发送数据即以查询等待的方式在发送一个字节的过程中会占用一个周期中的1ms时间(这是波特率为9600bps时候的情况),要等待一个字节完全的发送出去才能够进行其它模块的工作,这样的话是非常耗用时间和DSP的资源利用率的,而且其它模块的时间根本得不到保证。而FIFO模式中发送数据的方式则基本不占用系统的周期等待时间,直接往Buf里面写数据就会自动的往外发送。使用FIFO可以一次性写入多个数据,如果使用16级,要是发送160个数据只需要发送10次就可以发送完成。?对于FIFO堆栈深度的设定只影响中断产生事件的频率。 FIFO深度是指有多少数据存入到FIFO中时会产生中断请求事件,FIFO的深度设定时当然要大于所定义的数据格式的位数,数据位数一定的情况下,深度越大所发生的中断请求频率越低。 FIFO队列接收有一个缺点就是,接收的数据包格式的帧数不能改变,如果是5个字节就必须都是5个字节。如果一会是5个字节,一会是3个字节。那3个字节的数据包会和下一个数据包的前两个字节产生一次中断,由于不同数据包的信息不同这样软件不易处理。 空闲线方式多处理器通信?---?块与块之间有一段比较长的空闲时间,这段时间要明显长于快内帧与帧之间的空闲时间,在某一个数据块中,第一帧代表地址信息,后面的帧为数据信息。也就是说,地址信息还是数据信息是通过帧与帧之间的空闲间隔来判断的。当帧与帧之间的空闲间隔超过10个位的时候,就表示新的数据块开始,而且其第一帧为地址信息。空闲线模式中数据格式里没有额外的地址位。 SCI FIFO中断标志和使能逻辑位 程序: 初始化程序: void InitSci(Uint16 num,Uint16 bps)

文档评论(0)

1亿VIP精品文档

相关文档