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.

TMS570LS3137: SCI设置为DMA接收,如果不知道接收帧长度,如何设置接收长度或判断接收帧是否完整?

Part Number: TMS570LS3137


当前SCI通过DMA方式发送已实现发送不同长度数据帧。接收只实接收现定长的数据帧,但是通信协议不可能做成定长的,我们有可能接收不同长度的数据帧,那么在不知道对方发送的数据帧长度的情况下,如何确定通过DMA接收的数据已经是一个完整的数据帧?我查了不少资料,其现方式有定时器检测DMA接收方式,超时则判断其接收完整,这种方式实时性不高;有的芯片有总线空闲中断,可通过中断判断接收数据是否完整,但是在TMS570中没有找到类似的中断。TMS570LS3137是否有实时性比较高的检测方式?

  • 您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!

  • 谢谢,期待你的回复!!

  • 您好,您可以定义发送器和接收器的protocol。 例如发送器发送 "&!" 告诉接收器这些是消息的最后一个字。 接收器需要检查接收到的字符是 "&" 还是 "!"。

  • 这种方法需要对接收缓冲数据进行定时检测数据状态,与我说的第一种方法效果类似,有时在程序设计中不能及时进行检测,实时性不够好。

    我想要类似我提到的第二种中断方式,因为帧与帧之间有空闲间隔,且我不知道将要收到的是哪种数据帧即长度未知,假设芯片有总线空闲中断,那么产生中断就知道收到了完整帧,根据接收长度对接收缓冲进行处理,这种总线空闲中断一般等到总线收到数据后再次空闲才会再次触发,这样我就可以不用知道接收数据帧的长度,并且能够及时处理。TMS570LS3137有类似实现的方法吗?

    另外,我从哪个寄存器中知道接收缓冲中收到的数据长度?