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.

[参考译文] TMS320F28035-BRKDT:从中断检测中恢复(EP)

Guru**** 2460010 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1504609/tms320f28035-ep-recovering-from-a-break-detect-brkdt

器件型号:TMS320F28035-TMS320F28035 EP

工具/软件:

我们的客户正在进行系统集成、并且与我们的电路板失去了通信。 客户在示波器上捕获了中断检测事件并向我们展示了该事件。 一旦中断检测条件消失、我们的电路板就无法恢复。

在审查我们的固件后、我们发现我们正确地检查并清除了通信错误:

EOC 中断 Void SCIRXINTA_ISR ( Void )

 {
   IF (SciaRegs.SCIRXST.bit.RXERROR = 1)

   {

       //*****************

       //通信错误

       //不在乎哪一个

       //*****************

       SciaRegs.SCICTL1.bit.SWRESET = 0;      //切换 SW_RESET 低电平、然后切换为高电平以清除标志

       SciaRegs.SCICTL1.bit.SWRESET = 1;      //和状态机。

 

       SciaRegs.SCICTL1.bit.Sleep = 1;        //返回睡眠模式并等待空闲

   }

 

我们在实验室中使用 Windows 驱动程序命令测试了电路板、以创建中断检测条件:

PCAS_SerialPort.BreakState = true;

. 然后消除中断情况。

PCAS_SerialPort.BreakState = false;

 

通过 XDS 100v3调试器运行固件时、我们放置了断点并观察到正确设置和清除了 BRKDT、FE 和 RXERROR 标志。 我们点击了 Code Composer 中的"Resume"按钮(或 F8)。 我们的 Windows 测试 GUI 在向电路板发送命令时从未产生超时错误。

 

我们对电路板进行下电上电、使其不再在调试模式下运行。 重新启动 GUI 并重新创建了如前所述的中断检测条件。  遗憾的是、电路板从未从中断检测条件中恢复、也未能响应来自 GUI 的命令。 GUI 报告了通信超时错误。

 

为什么我们的电路板在调试器环境中从通信中断中恢复、但在现实生活中无法响应?

谢谢您、

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

    您好:

    您能否确认预期行为是什么? 是否同时使用 TX 和 RX? 启用并使用了哪些 ISR? SCI 配置的更多背景信息有助于我了解环境。

    您是否尝试 电路板完全上电期间将数据发送到 C2000器件?

    此致、

    Allison

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

    尊敬的技术支持:

    我弄清楚了为什么我的固件没有从 BRKDT 状态恢复。 技术参考手册中缺少的关键信息是:RX 引脚恢复到总线空闲状态后、需要切换 SWRESET 位。 在我的设计中、GPIO7从0更改为1。

    该解决方案的详细信息如下:

    • 检查 RX 中断子例程中的首先是 BRKDT。 如果 BRKDT = 1、则通过设置 RXBKINTENA =0来禁用 RX 中断。 否则、正常处理接收的字节。
    • 在主循环中、定期使用 if (RXpin ==1 && RXERROR ==1){}轮询 RX 引脚、但不要使用 while (!RXpin)阻止该进程;增加的检查 RX 错误的条件会阻止分支在无需复位时复位。
    • 当(RXpin =1 && RXERROR =1){}为 true 时
      1. 切换 SWRESET。 我在切换状态之间放置了一些 NOP、以便为处理器提供完成复位的时间。
      2. 通过设置 RXBKINTENA =1来启用 Rx int。

    在关闭此案例之前、请更新技术参考手册和 SCI (UART)应用手册。

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

    您好:Mark、

    感谢您发布解决方案和详细信息。 我将提交一个错误、以更新我们的文档并澄清您的观点。 请注意、由于这是一个较旧的器件、因此器件 TRM 不会刷新。 但是、较新的器件文档将包含此内容。 谢谢!

    此致、

    Allison