原创 SCI通信发送模块中FIFO增强特性的使用方法

2010-6-29 16:53 4560 10 11 分类: 处理器与DSP
SCI通信发送的过程中,有两种发送的方式供选择,一种是利用SCI模块的普通功能(即查询等待标志位的方式进行),另一种是利用F2812的增强特性FIFO功能进行数据的传送。比较这两种数据发送的方式发现,前一种查询等待的方式在发送一个字节的过程中会占用一个周期中的1ms时间(这是波特率为9600bps时候的情况),而后一种方式则基本不占用系统的周期等待时间,直接往Buf里面写数据就会自动的往外发送。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


以下是FIFO功能的增前特性描述:


 20071019105000399.jpg


我在编程序的时候只用到增强特性中FIFO的发送功能,通过将SCIFFTX寄存器中的SCIFFEN位置1,使能FIFO模式。在任何操作状态下SCIRST都可以复位FIFO模式。


本人对寄存器的设置是


ScibRegs.SCIFFTX.all=0xE040; //1(1表示SCI FIFO可以恢复发送或接收)/1(使能SCI FIFO增强功能)/1(重新使能发送FIFO操作)/00000(发送FIFO是空的)/0(没有TXFIFO中断)/1(清除TXFFINT标志位)/0(中断被禁止)/00000(中断级别为0)


ScibRegs.SCIFFCT.all=0x00; //禁止串口自动检测波特率


for(temp=1;temp<TXindex1;temp++)


   {


    ScibRegs.SCITXBUF=DateReceiveBuf[temp];


    }


//然后FIFO就会把所要发送的数据都会自动的发送出去


ScibRegs.SCIFFTX.bit.SCIFFENA=0; //禁止FIFO功能,以确保利用回SCI的通信接收中断功能


上述的FIFO功能设置并不占用其它定时器中断的时间,这样可以有效的提高周期的资源利用率。提高了通信的效率。


对于第一种查询等待的方式,其中的设置是要等待一个字节完全的发送出去才能够进行其它模块的工作,这样的话是非常耗用时间和DSP的资源利用率的,而且其它模块的时间根本得不到保证,以下是我在调试时的一些相关设置:


ScibRegs.SCITXBUF=DateReceiveBuf[temp];


while(!((1<<6) & ScibRegs.SCICTL2.all)); //等待这个字节的数据完全的发送出去,该指令按照波特率为9600bps来算的话,发送一个字节的时间将耗时1ms,这样是很浪费资源的,其它模块的功能根本执行不了。


根据上述的比较会发现,利用FIFO的功能进行通信是非常合理的,而且资源利用效率高。

文章评论1条评论)

登录后参与讨论

用户1482250 2010-7-8 22:10

请问: 1.这个FIFO是16级深的队列,如果当TXindex1 > 17 的时候,比如是22, for(temp=1;temp 17的时候,又该怎么处理? youthb@126.com
相关推荐阅读
用户1393589 2010-07-24 14:51
电容电阻封装
贴片电阻常见封装有9种,用两种尺寸代码来表示。一种尺寸代码是由4位数字表示的EIA(美国电子工业协会)代码,前两位与后两位分别表示电阻的长与宽,以英寸为单位。我们常说的0603封装就是指英制代码。另一...
用户1393589 2010-07-11 14:40
FPGA设计中,RTL是什么?
RTL描述是可以表示为一个有限状态机或是一个可以在一个预定的时钟周期边界上进行寄存器传输的更一般的时序状态机;RTL code: Register-Transfer-Level code 通常由VHD...
用户1393589 2010-06-28 16:34
转义字符的完整诠释
=====================================================================\n,意思是,换行,就是,把光标定位到下一行的开始位置.但是关...
用户1393589 2010-06-26 16:39
单片机里面寄存器定义的解读zz
单片机里面寄存器定义的解读 typedef union {  byte Byte;  struct {    byte COPWAI :1; /* COP stops in WAIT mode */ ...
用户1393589 2010-06-26 14:29
位域的定义和位域变量的说明
是什么意思呢? [精华] typedef struct _APS_PIB{    union _APS_PIB_FLAGS{        BYTE val;        struct {     ...
我要评论
1
10
关闭 站长推荐上一条 /2 下一条