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.

[参考译文] TMS320F280025C:SCI 自动波特率

Guru**** 2457760 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1011012/tms320f280025c-sci-auto-baud-rate

器件型号:TMS320F280025C

您好专家、

我的客户将 F280025用于电源模块、他们的客户使用不同的波特率、他们必须在不复位 C2000的情况下实现这一点。

它们使用“SCI_lockAutobaud (SCIA_BASE)”来执行自动频带测试, 而在初始阶段发送‘A’或‘A’将激活自动波特率模式,如果需要更改频带速率,复位 DSP 会在新的频带速率中再次发送字符。

有一些问题:

  1. 函数中有以下代码:

          //等待正确读取'A'或'A'并锁定

          while ((HWREGH (base + SCI_O_FFCT)& SCI_FFCT_Abd)!= SCI_FFCT_Abd)

      {

      }

    这意味着 CPU 将在这里等待,直到接收到‘A’或‘A’等字符为止不执行任何操作

客户尝试使用“if”替换“while”,以便 CPU 在没有收到“A”或“A”但通信失败时执行其他任务;

为什么会发生这种情况?

 C2000能否实现能够识别整个通信周期内自动波特率的功能?

BR

Emma

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

    尊敬的 Emma:

    感谢您的提问! 以下是我对您提到的两个问题的回答:
    1."while"是必需的、以便仅在 FFCT 达到正确值后才允许函数的下一部分发生。 如果您使用的是"if"语句、它将只检查一次、并将停止等待。 因此需要" while "。

    C2000无法持续检查波特率、但可以定期检查。 您可以偶尔请求另一个器件发送"A"或"A"、然后运行"SCI_LOCK_AUTO波特 率"函数。 基本上、应用需要选择何时检查波特率、但不能在后台持续执行。

    希望能回答您的问题!

    此致、

    Vince