Thread 中讨论的其他器件:C2000WARE
工具与软件:
您好!
在 C2000ware 使用了 sci.h 等几年后、我在遇到一些意外行为时对寄存器进行了更深入的研究。
首先、我很惊讶地发现 SCI_readCharNonBlocking 滤波器会远离 SCIFFPE 和 SCIFFFE 位、我发现在接收数据后必须考虑这些位。
因此、我构建了自己的函数、该函数将获取整个 SCIRXBUF、现在我将出现意外行为、如下所示:
触发 SCI 中断检测标志后(例如、通过针对太多位提供低电平信号)、我运行 SCI_performSoftwareReset。 之后、 SCI_getRxStatus 返回0、这是我认为 SCI 现在再次正常运行时的预期结果。 然而、之后是以正确波特率接收的第一个字节(在本例中为12.5Mbaud)具有 SCIFFFE 位设置。 以下每个类似字节都可以完全正常运行。 它只是复位后的第一个中断检测、而复位是为了复位中断检测标志而启动的。 这种行为可以可靠地重现。
是否有此行为的解释以及简单的解决方法?
此致、
LEO