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.

TMS320F28069 SCI串口接收FIFO中断

问个问题,在SCI模块中,使能FIFO接收中断,怎么才能一次读取所有的数据。

举个例子来说,我定义FIFO中断的深度为4,需要接收7个数据。因为7个数据只能触发一次中断,怎么才能在不触发第二次中断情况下读取后3个数据?如果由其他设备发送一串数据,怎样判断我已经接收完所有的数据?我查看数据手册,没发现相关的说明,请指点。

  • FIFO是多少级深度的(不是和delfino一样16级吗)?如果设定4级,想要一次读是不行的,FIFO 深度决定在那里呢

  • F28069的SCI FIFO深度是4级,深度本身是不能配置的,只能使能或者禁止,但是可以通过TXFFST4位来判断当前深度,进行控制,或者通过TXFFIL来控制中断触发的深度。

  • 请问这个问题你解决了吗?有什么好的方法来解决这个问题吗?
  • F28069 SCI FIFO深度只有4级。如果单次连续接收超过4字节数据,无法在单次中断中完成接收,可利用多次中断接收实现。您可参考下图的设计思路:

  • 谢谢!可是你说的缓存1BYTe数据,应该怎么做呢?我看了F28069,接收到的数据他最多只能保存4个字节,其余的都丢失了,我即使重新进中断,也还是重新发送,重新接收呀?从上位机下位机发过来的数据,CPU只能保存4个字节,我这样理解对吗?还是有什么寄存器我没注意到?
  • 谢谢!可是你说的缓存1BYTe数据,应该怎么做呢?我看了F28069,接收到的数据他最多只能保存4个字节,其余的都丢失了,我即使重新进中断,也还是重新发送,重新接收呀?从上位机下位机发过来的数据,CPU只能保存4个字节,我这样理解对吗?还是有什么寄存器我没注意到?
  • 缓存1Byte只要读取SCIRXBUF寄存器中的数据即可。如果是连续的串口数据接收的话,您可以简单理解为接收单字节所需要的时间较短,接收中断完成后不会影响下一字节数据的接收,也就是下一字节数据到来时依旧会产生接收中断,从而实现多字节数据的连续接收。4级FIFO深度意味着如果接收超过4个字节且没有进行处理,只能保存四个字节而其他数据丢失。只要在接收中断中及时处理,就可以多字节连续接收,不会产生数据丢失。
  • 哦哦,你说的这个方案我已经试过了,但是关键是接收中断中及时处理,我现在是程序什么都不做,可是还是会数据丢失,既然你也提出了这个方案,那我再试试。谢谢!试玩再来回复你!
  • 我刚刚又试了一下,是OK的,虽然在我的UCOS里面还需要再调整,但是这个方案是可以的,谢谢谢谢!
  • 请问你可以分享一下每次接受不定数据的程序吗,我也遇到了这个问题
  • 您好,我按这个配置了SCI,但是有个问题是,我一个一个数据发送的时候只正常的。但是我发送两个或者以上的数据的时候它只会进入两次中断并且第二个数为0xFF。请问一下这个该怎么解决呢?