您好!
我已经为公司项目编写了随附的串行驱动程序、用于中断驱动的串行数据通信。
除以下情况外、驱动程序在加电、发送和接收我预期的数据后按预期工作。
当向应用的 RX 线路发送串行数据的外部器件发生意外断电并停止发送数据时、我的驱动程序会得到 一 个 SciaRegs.SCIRXST.bit.FE 故障(请参阅第576行)。
(这大概是因为 RX 线在一个字节的中间停止。)
根据数据表(SPRUGH1C 第29页)、当发生这种情况时、需要清除 SW 复位。
因此,我的应用程序再次调用 sci_drv_init()(第97行)以执行此操作。
但是、当外部串行数据源重新上电时、由于某种原因、串行外设永远不会再次触发接收中断功能(请参阅第839行)。
我无法确定出现此故障的原因。 我已经调试过、是的、外部数据源再次传输、并且字节在线路上。
我已调试串行驱动程序仍然能够向外发送字节。
我调试过串行驱动程序认为 RX 中断已启用(在 SCI Init 调用之后)。
我已经调试过、串行驱动程序从未在 SCI Init 调用之后使 Drv_Rx_ISR_Call_Ctr 递增。
因此、我对 RX 为什么在 SciaRegs.SCIRXST.bit.FE 之后停止工作以及使用 SCI Init 调用进行软件复位感到很损失。
如果有任何建议,我将不胜感激!
Neal O'Hara
e2e.ti.com/.../1732.sci_5F00_drv.ce2e.ti.com/.../4456.sci_5F00_drv.h