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.

[参考译文] TMS320F28035:在针对 LIN/SCI 模块的 SCI 多缓冲器模式中读取缓冲器

Guru**** 2524550 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/826348/tms320f28035-reading-buffers-in-sci-multibuffer-mode-for-lin-sci-module

器件型号:TMS320F28035

您好!

我想知道是否可以读取 LINTD0和 LINTD1缓冲区、即使 LinaRegs.SCIFLR.RXRDY 标志未置1也是如此?  我的理解是、在多缓冲模式下、只有当缓冲区被填充到预设字符长度时、才会设置此标志、在本例中为8。  

我正在设置

LinaRegs.SCIFORMAT.bit.char = 7;
LinaRegs.SCIFORMAT.bit.length = 7;

在我的代码中、接收到几个完整大小的帧后、最后一个帧将小于长度= 8、这意味着不会填充所有8个缓冲区。   

谢谢

 -达克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Dak、

    当您说 RXRDY 标志仅在缓冲区填充到指定的字符长度(在多缓冲模式下)后才会置1时、您是正确的。

    我假设您使用的是 LINRDO 和 LINRD1寄存器、而不是发送寄存器。 如果您的最后一个帧长度小于8、我建议添加"虚拟"数据、直到它达到完整长度、然后在您能够读取最后一个帧后丢弃它。 否则 、RXRDY 标志将不会被置位。

    最棒的

    Marlyn