Thread 中讨论的其他器件:C2000WARE
工具与软件:
TRM 的 FSI 部分表明数据缓冲区是循环的。 但没有为此操作和生成的事件提供良好的详细定义。 我没有看到处理数据缓冲区的示例。 我也没有看到任何其他论坛回复解决了这一问题。
CURR_BUF_ptr–这是消息的最后一个数据字还是第一个数据字? TRM 表示这是未读取的数据字的数量。 当我读出单词时、这会下降吗? 如果不是、什么会将其复位? 它是否只是每个新消息更改一个(TRM 说这些字未读出、因此读取后会更新)?
CURR_WORD_CNT–是最后一次接收的数据的大小或数量。 与 CURR_BUF_PTR 类似的问题。
是否在每次接待时更新这些信息?
buf_overrun -如何生成这个函数? TRM 会提示它是在发生溢出情况时生成的。 当缓冲区溢出或超过16而不进行读取或写入时是这样吗? 准确地跟踪或检测此复位/重启(不是 EVT 状态)。
buf_underrun -如何生成这个函数? 软件读取的位置是否自上次读取后未接收到任何数据? 准确地跟踪或检测此复位/重启(不是 EVT 状态)。
当缓冲区不是循环的并且缓冲区 ptr 在每个 Rx 上以及每个 Tx 之前重新加载或设置回零时会发生什么情况?
我的解释是、当缓冲区指针被强制设置一个值、并使其不符合 FSI 控制器的想法时、将会生成缓冲区 BUF_OVERRUNG 和 BUF_UNDERRUN 错误? 同样、TRM 缺乏足够的细节、因此可以就此作出任何结论。
FRAME_OVERRIDE 实际上有一个合理的定义。 当接收到一个新的帧、但前一个 Rx 尚未清除错误或帧接收状态时、就会生成该位。 此类信息更有用。
提前感谢。