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.

[参考译文] TMS320F28075:加电后 SCI 疾病

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/868870/tms320f28075-sci-disorder-after-power-up

器件型号:TMS320F28075

大家好、

这是我在为客户提供产品 SCI 测试支持时遇到的一个问题。

它们所做的是在上电后通过写 TXBUF 来尝试连续发送0x0D。当 TXRDY=1时。

如下图所示、复位后的第1个帧可以成功发送、但自第2个帧起就会发生混乱。 似乎在2帧之间始终传输3个无意义的位(011)、这甚至不适合帧格式。

但是、如果我们继续监控 SCI TX 引脚上的数据、则发送的数据将在~8秒后恢复正常(0x0D)。 如果我们在更宽的时间范围内查看示波器、则电压变化很小。

在代码中传输的内容没有变化。 是否有任何关于可能发生的情况的想法? 如果代码有助于调试、则可通过电子邮件共享。

此致、

Brian

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

    这是我想说的一点。

    目前、在客户代码中、他们在将下一个字节写入 TXBUF 之前检查 TXRDY:

    xxxx (UCHAR uC_SendData)
    
    {
    
    if (m_ptrSciRegs->SCICT2.bit.TXRDY)
    
    {
    
    uC_SendData = uC_SendData & 0xFF;
    
    m_ptrSciRegs->SCITXBUF.all = uC_SendData;
    
    }
    
    } 

    但是、当我查看我们的 driverlib 代码时、不检查 TXRDY、而是检查 TXFFST:

    SCI_writeCharArray:

    对于(i = 0U;i < length;i++)
    {
    //
    //等待发送 FIFO 中有可用空间。
    //
    while (SCI_getTxFIFOStatus (base)=SCI_FIFO_TX15)
    {
    }
    
    //
    //发送字符。
    //
    HWREGH (base + SCI_O_TXBUF)=数组[i];
    } 

    因此、我想知道何时启用 FIFO、TXRDY 是否仍然有意义?  我想、如果在 FIFO 模式下检查 TXRDY、会导致溢出等错误?

    此致、

    Brian  

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

    您好 Brian、

    我在文档中找不到专门支持这一点的东西、但我的理解是、在非 FIFO 模式下、TXRDY 用于确定何时发送、而在 FIFO 模式 下、TXFFST 将被使用。  当然、如果您使用 FIFO、那么值得尝试遵循 driverlib 代码示例、或者使用现有方法将模块交替设置为非 FIFO 模式。

    系统中是否还有任何其他与传输恢复到预期状态的8秒时间相对应的内容?  是否有一个 ISR 正在存储调用 SEND 数据函数的任何代码?  

    是否确定始终使用参数"0x0D"调用 SEND 数据函数? (您可以添加一个检查+断点来检测意外数据)。  

    当在 SEND DATA 函数中执行'If'语句时、您还可以添加其他 GPIO 的切换;这将让您知道数据是否以比发送更快的速度填充到 TX 缓冲区。

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

    您好 Devin、

    感谢您的建议。 通过从 USB 电源切换到直流电源、问题得到了解决。 我们不知道有什么区别、但它最终起作用。

    通过解决 此问题、我们 已转向真正的问题、这与  我们在已发货产品中观察到的问题相同。

    在产品中、加电后、F28075开始向另一个 MCU 发送数据:

    数据:AA 2B 01 00 07 00 00 00 00 00 00 00 33 0D

    通常、数据将成功传输:

     但是、对于第一个或第二个发送。 最后一个数据(0x0D)将不会成功发送。

    在发送前1-2次后、一切都正常。

    我建议客户检查 FIFO 状态、而不是 TXRDY、它不是固定的。

    此致、

    Brian

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

    您好 Brian、

    由于该问题似乎与电源有关、因此您是否在 SCI 运行期间测量了3.3V 和1.2V 电源轨或对其进行了限定?  

    收发器(如果使用)是由3.3V 电源轨还是另一个电源轨供电?  您是否在运行期间测量过该电源轨或对其进行了范围划分?

    您是否在客户系统和 TI EVM 上都看到了此问题、或者仅在客户系统中出现此问题?   

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

    您好 Devin、

    为了找出问题、我建议客户移除外部连接并直接测量 F28075上的信号。 但问题仍然存在。

    我建议客户稍后在 EVM 上进行测试、以确保它不受 H/D 的影响

    BTW、现在有什么28075 EVM? 我现在在网站上找不到任何 LaunchPad。

    此致、

    Brian

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

    您好 Brian、

    F2807x 的 EVM 是 F28379D controlCARD 或 LaunchPad、因为 F2807x 系列器件是 F2837x 系列中引脚兼容的有意削减。   

    我仍然认为研究电源轨是一个很好的实验。  您还可以尝试查看是否由于使用 USB 供电而出现过压或欠压情况而向任何 IO 引脚注入电流。    

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

    Devin、

    谢谢!

    正如我在上次答覆中所说,他们的产品亦出现类似的问题。 这就是他们进行单板实验的原因。 因此、此问题肯定不是由 USB 电源引起的。

    此致、

    Brian

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

    您好 Brian、

    我对您使用哪个(些)板进行调试有点困惑、但似乎您遇到了相同的问题(0x0D 未正确发送)、这是通过更改电源解决的?  即使电路板不同、我也认为调查电源是一个很好的第一步。

    当此代码运行时、代码/系统中是否有其他内容? 如果是、如果关闭系统的其他组件、问题是否可以解决?

    如果您启动系统但延迟了第一个 SCI 传输、则错误是否仍然出现在前1-2个传输中? 相反、您能否更早地启动 SCI 传输并查看问题是否在更长的时间内发生?