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.

[参考译文] TMS320F28386D:SCI 错误

Guru**** 2456490 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1484633/tms320f28386d-sci-error

器件型号:TMS320F28386D
Thread 中讨论的其他器件:C2000WARE

工具与软件:

尊敬的专家:

我有一个使用 F28386D 作为 MCU 的定制电路板。 SCI GPIO 引脚连接到 RS -485收发器 ADM2865EBRNZ。  

我使用了示例"sci_ex3_echoback"来测试 SCI 函数。 但是、我调试代码时、会遇到 rxStatus 和 SCI_RXSTATUS_ERROR 条件下的示例。 正如我在寄存器中检查的那样、组帧错误标志(FE)的值为"1"。 这表明了程序停止的原因。  

但是、我无法解释出现此错误的原因以及如何处理此问题?

请提供帮助。 提前感谢您!

此致、

Hoang。

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

    尊敬的 Hoang:

    下面是针对 SCI 模块的 FE 位的说明:

    您是否对 C2000ware 中的原始 sci_ex3_echoback 示例进行了任何修改、或者运行该示例时没有改变?

    此致、

    Delaney

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

    尊敬的 Delany:
    我仅添加了与我的定制电路板相对应的 SCI 引脚定义。  
    我使用 putty 程序显示该消息。
    当我运行 sci_ex3_echoback 时、putty 程序将显示完整的消息"Hello World"、"you will enter a character ..."。 但是、它部分显示消息"Enter a character:"、如"Enter"、然后停止运行。
    此外、我观察了"receivedChar"变量、它每次我恢复代码运行时都会改变它的值。  
    感谢您的答复。

    此致、
    Hoang。

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

    尊敬的 Hoang:

    我怀疑我知道 SCI_writeCharArray()函数出现了什么问题。 如果 CTRL +单击 SCI_writeCharArray ()函数定义、该 FIFO 状态是否与 SCI_FIFO_TX16或 SCI_FIFO_TX15进行比较 ? 下面显示的是更正后的版本。  SCI_FIFO_TX15是我们的一些旧版本 C2000ware 中的一个错误。

    您是否在 Putty 中一次输入一个字符到 COM 端口中? 如果观察 SCIRX 引脚、输入的字符看起来是否正确?

    此致、

    Delaney

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

    尊敬的 Delaney:
    感谢您的答复。

    我将  SCI_FIFO_TX15更改为 SCI_FIFO_TX16、但问题仍然存在。

    下面是对我的问题的描述。 对不起图像质量、但我不能使用屏幕捕获功能。

    当我第一次调试代码时、Putty 显示如下所示。 然后代码停止运行。

    在我恢复代码后, Putty 显示如下图片。 如您所见、整个消息无法正确显示。

    它是如此怪异,即使我没有连接到我的电脑的 COM 端口。 当我运行代码时、只要我在遇到"rxStatus & SCI_RXSTATUS_ERROR"条件时恢复代码、变量 receivedChar 就会更改其值。 下图显示了未将 COM 端口连接到 PC 时的结果。

    由于程序停止运行、我无法使用 Putty 输入字符。

    关于代码、我将其用于套件 Launch F29379D、能够正常运行。 唯一的区别是 SCI 引脚配置。

    我的硬件是否有可能导致此问题?

    此致、
    Hoang。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于程序停止运行、我无法使用 Putty 输入字符。

    您好!

    也许尝试按住 ALT 键、按打印屏幕按钮捕获顶部屏幕、将捕获的屏幕粘贴到主题帖中。 此外、请注释掉 ESTOP 代码、以便 putty 获得最后一个字符(debug.c INT )、(interrupt.c)将在错误位置或之后暂停 XDS 探针以查看调用堆栈。 还可以修改 SCI RX 代码以处理经常由于不正确的奇偶校验、数据字长等而导致的组帧错误。 另一个提示、即在进入时刷新 RX 字符缓冲区、并且每16个字进入 FIFO 后、不要尝试在单字符阻塞模式下进行高速串行数据传输、这充其量是徒劳的。  

    在 TX- FIFO 数据块上、直到 FIFO 为新字符做好准备。 发送 FIFO 新的字符数据不同于阻塞每个字符。

    /* Blocking checks FIFO space filled */
    while(SCI_getTxFIFOStatus(SCIB_BASE) >= SCI_FIFO_TX8)
    {}
    
    
    /* Check cmd string length matches our byte count */
    len = strlen(CmdStrng);
    
    for(c = 0; c <= len; c++) // -1 Null
    {
        //SCIprintf("TxCmd:%x\n", CmdStrng[c]);
        /* Write this character to the transmit FIFO. */
        HWREG(SCIB_BASE + SCI_O_TXBUF) = CmdStrng[c];
        
    }

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

    您好!
    感谢您的答复。

    很抱歉这么方便、但我用于实现代码的 PC 没有互联网、也不允许连接任何外部设备。 因此、我必须使用我的手机获取 pic。

    当我注释掉 Estop 代码时、MCU 会持续发送冒号符号、如下所示。

    我将尝试您有关 修改 SCI RX 代码的建议。

    此致、
    Hoang。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我注释掉紧急停止代码时、MCU 将持续发送冒号、如下图所示。

    您可以在怀疑代码发生故障的地方添加一个或多个断点、通过 F5进入代码。 在中断点按 F6、单步执行代码或单步执行代码一次到中断点。  

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

    尊敬的 Hoang:

    我将  SCI_FIFO_TX15更改为 SCI_FIFO_TX16 、但问题仍然存在。

    如果您刚刚更改了[C2000ware install]/driverlib 文件夹中的文件、它可能仍然不会实际解决该问题、因为这些实际上并不是被使用的。 driverlib.lib 文件包含在工程中使用的预编译源代码、这需要更新。 您是否可以尝试将以下文件复制到[C2000ware install]/driverlib/f2838x/driverlib/ccs/Debug/.中

     e2e.ti.com/.../7180.driverlib.lib

    当我运行该代码时、每当我在"rxStatus & SCI_RXSTATUS_ERROR"条件下停止代码后恢复该代码时、变量 receivedChar 都会更改其值

    这似乎是 SCIRX 引脚上有一些噪声、导致器件认为它在接收数据、而实际上没有接收数据。 尤其是如果您能够在 Launchpad 上运行示例。 这将导致示例代码出现问题。 我会尝试在进行修改之前让未修改的示例代码在您的设置上正常工作。 请尝试以下操作:

    您可以将 SCIRX 引脚示波器用于查看是否存在意外噪声?

    您能否再次尝试在 Launchpad 上运行代码、而不使用路由到 UART 转 USB 桥接器并连接收发器的 GPIO? (基本上与当前的错误设置相同、但设备周围电路是 Launchpad、而不是定制电路板。)

    此致、

    Delaney