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.
有一个应用采用 TMS32F28075、一个 UART 端口用作 RS485、另一个 UART 端口用于与其他 MCU 通信。 当 RS485通信电缆接触不良时、所有 UART 都无法正常接收和传输数据、 即使错误中断被清除、所有 UART 也无法正常运行、在 MCU 电源复位后、它们返回到正常状态、会发生什么情况? 如何解决该问题? 请帮帮我。谢谢!
塞缪尔
尝试 复位 SCI、而不是仅清除错误中断。 例如:
if (SciaRegs.SCIRXST.bit.RXERROR=1)
{
SciaRegs.SCICTL1.bit.SWRESET=0;//sci 软件复位
SciaRegs.SCICTL1.bit.SWRESET=1;//再次启用 sci
}
但愿这对您有所帮助。 如果这可以解决您的问题、请单击绿色的"验证答案"按钮。 谢谢。
- Ken
您好、Ken:
谢谢、下面是我的代码、它似乎无法恢复 UART 和28075的其他 UART 端口。
if (SciaRegs.SCIRXST.bit.RXERROR)
{
DelayCnt++;
if (((SciaRegs.SCICTL2.bit.TXEMPTY=0)||(DelayCnt > 50))//50 *กก100ms = 5s
{
DelayCnt = 0;
SciaRegs.SCICTL1.bit.SWRESET = 0;
asm (" nop");
SciaRegs.SCICTL1.bit.SWRESET = 1;
}
}
塞缪尔
这 是一种奇怪的行为。 两个 SCI 应该是独立的、并且一个 SCI 上的错误 不应该导致 另一个 SCI 停止正常通信、除非一个 SCI 上的错误 导致 CPU 不处理 另一个 SCI 上的中断。 请告诉我:
1. 您是否在两个 SCI 上都看到了位错误状态?
2、 哪个 SCI 正在复位? 它是用作 RS-485还是本应正常工作的其他 SCI? 您能否重置这两者并检查是否解决了问题?
CCS 的调试复位是否可以解决此问题?
- Ken