TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

28035 SCI FIFO 有没有接收超时?

接收超时问题。如果没有接收超时功能,则在对方已经发送完毕而接收FIFO未填满时并不会触发中断(FIFO满才会触发中断),结果造成最后接收的有效数据得不到处理的问题。有了接收超时功能后,如果接收FIFO未填满而对方发送已经停,则在不超过3个数据的接收时间内就会触发超时中断,因此数据会照常得到处理。

----------------以上是网上关于FIFO 接收超时的资料,

F28035 好像没有接收超时,那它是怎样处理的呢?

  • wellsking,

    2803x的SCI FIFO没有接收超时的功能。即只有FIFO接收到足够的数据的时候,它才会进入中断。你可以把FIFO的level设置为1.或是自己用软件其他手段做一些定时。

    Eric

  • 1、.如果Level设置为1,那FIFO 还有什么优势呢?

    2、如果用软件定时 那不是过一段时间,就要去检测FIFO?而且这个定时程序是从始到终一直运行的。就算是上位机没有发送数据,我也要隔一段时间就去检测FIFO,因为不知道上位机什么时候会发数据过来

    这两种方式,会比用普通模式(非FIFO)有优势吗?

    还是我哪里理解不对?


  • wellsking,

    软件定时的话其实也就是用timer自己做一个receive time out 功能而已,C2000的SCI确实没有这个receive timeout 功能,只能自己实现。

    你可以这样子设置:

    1. 在SCI的FIFO中断中reset timer的计数值,然后启动timer计数。

    2. 使能timer中断,这样当timer定时时间到的时候,就是距离上一次成功接收到数据的时间,也就是receive 的timeout时间,然后在timer的中断里面读取FIFO的数据,如果有的话。然后关掉timer。这样timer就不会一直运行,只有在一次数据块的接收最后几个数据的时候产生作用。

    但其实如果你要是使timer一定开着,其实就跟SCI的receive timeout一样,只要数据接收不够,时间一到,就产生中断。

    就算是上位机没有发送数据,我也要隔一段时间就去检测FIFO,因为不知道上位机什么时候会发数据过来

    那你要是在SCI 有timeout功能时,如果上位机没有数据来,也是一样会中断,回去查看数据的啊。

    所以软件设置timeout跟sci本身的timeout并没有什么区别。

    Eric

     

  • 谢谢,第一次用FIFO,可能 我还没有理解。回去再看看