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.

[参考译文] TMS320F28377D:结束 IF 消息检测

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/588287/tms320f28377d-end-if-message-detection

器件型号:TMS320F28377D
主题中讨论的其他器件:C2000WARE

你好

我正在编写一个由中断驱动的 SCI 驱动程序、以便在2个微控制器之间进行通信。  技术手册中不清楚如何检测块的末端?  

我在启用 FIFO 的标准模式下使用 SCI。  根据技术手册、接收 FIFO 中断 RXINT 是 SCI FIFO 接收、接收错误和接收 FIFO 溢出的通用中断。  如何使用这些中断来检测消息结束?  例如、如果块(或消息)长度为20字节。  接收时、当 FIFO 满时、我将获得 RXINT。  我将这些字节移动到本地缓冲区、然后等待剩余块。  现在、只剩下4个字节。  当接收到4个字节、然后线路空闲时、接收 FIFO 是否会生成 RXINT 中断?  如果是、那么是否有任何标志来指示这个中断是由空闲时间引起的?

我还检查了多处理器通信中的空闲线模式。  但是、由于线路处于闲置状态的时间超过10位、这只会检测一个空闲线路之后的块开始、而不是一个块结束。  在第19.8.1节中、步骤4: "如果 CPU 正在被寻址、则服务例程会清除睡眠位并接收数据块的其余部分。"  --它如何通过中断检测块的末尾?  (我希望线路为空闲状态、以指示块结束)

非常感谢你的帮助。

Zubair Hameed

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

    您将需要开发一种协议来指定从主机到器件、在有效载荷中传输的字节数量。 我不知道 SCI 也能够指示线路何时空闲。

    您可以使用 RXFFIL 位域将 SCI 配置为在不同 FIFO 级别生成 RX 中断。 如果 SCI 在 FIFO 满时接收到数据、数据将丢失。 因此、数据应该在 RXBUF 满之前从它中读取。

    请参阅 C2000Ware 软件包中的 SCI 示例。

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

    感谢 Sal 的答复。  我正在尝试实现 Modbus 协议、该协议将消息末尾定义为等于2个字符长度的空闲时间。  过去、我在 Renesas 控制器上实现了这一点、该控制器有一个可用的中断、可以在 Start 位之后针对空闲时间进行编程。

    Modbus 协议确实定义 了消息中的字节数、但检测需要在接收到完整消息之前解析传入的数据、然后在接收到完整消息时保持计数。  空闲线路检测使低电平驱动器变得简单、并与 消息解析分离。

    如果 TI 没有这个功能(看起来 好像没有)、我想使用一个定时器来检测每个 FIFO 中断的空闲时间。

    再次感谢您的回答。

    Zubair

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

    我知道。 我们没有空闲时间中断的开始。 使用 CPUTimer 将是一种方法。

    谢谢、
    SAL