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:运行电机时 FSI 数据发送数据和接收数据停止。(2)

Guru**** 2425360 points
Other Parts Discussed in Thread: TIDM-02006

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1531345/tms320f28386d-fsi-data-transmit-data-and-recive-data-stop-when-i-run-motor-2

部件号:TMS320F28386D
主题中讨论的其他器件:TIDM-02006

工具/软件:

TI、您好


我仍在测试 FSI 通信。

在为电机控制器进行 PWM 切换时。 我的 FSI 通信停止。

当我检查 RJ45 (RX_CLK_LVDS_P、RX_CLK_LVDS_N) 电压电平时。

图中所示电平约为 1V。

电压电平是否过低、导致电机运行时 FSI 通信中断? 或者之前的电压电平是否正常?

到 CPU 的 FSI CLK 电压是在 3.3V 下测量的。

请提供一些建议..  

感谢您的阅读

添加文本 (2025.06.25)

大家好、当我运行电机且 FSI 数据停止时、我捕获 FSIRXATES。

什么意味着 RX_ECC_LOG 为“3"值“值?

RX_OPER_CTRL 的停止编号为 0x0078、这是什么意思?

感谢您的阅读

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

    要确认、当 PWM 运行时、FSI 线路电压从 3.3V 降至 1V?

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

    您好 Luke

    当我检查一下 28386D 中的 FSI 电压时、FSI 线路为 3.3V

    我修改了与 FSI 传输相关的延迟、现在通信可以正常工作、但不知道为什么...
    你知道这种情况吗?
     在 TIDM-02006 示例中、变量名称为 fsiTxTimeWaitCntr。
    #define FSI_TX_TIME_WAIT_CNTR    10 -> 100
    if (((fsiTxInt1Received == FSI_TRx_DONE)||(fsiTxTimeOutCntr == 0))&&
    ((fsiHandShakeState == fsi_handshake_done)&&(fsiTxTimeWaitCntr =0))

      fsiTxInt1Received = FSI_TRx_IDLE;
      fsiTxTimeOutCntr = FSI_TX_TIME_OUT_CNTR;
       fsiTxTimeWaitCntr = fsiTxTimeWaitSet;

       fsi_updateTransmissionData ();

       DINT;//禁用全局中断 INTM

    //将 FSI TX 循环缓冲区指针设置回开头
       FSI_setTxBufferPtr (FSITXA_BASE、0U);

    //写入用户数据和帧标签
       FSI_writeTxTagUserData (FSITXA_BASE、fsiTsfUserDataTagNode);

    //写入 TX 数据缓冲区
       FSI_writeTxDataBuffer (FSITXA_BASE、fsiTxDataBufAddr、fsiTxDataWords);

       EINT;//启用全局中断 INTM

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

    当您不修改代码时、代码是否总是中断或只是间歇性故障?

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

    您好 Luke

    代码不会停止。  当 I PWM 开/关大约 50~100 μ A 时、 接收到的数据保持固定值、因此在使用示波器检查波形时、没有变化。 因此、我想弄清楚噪声是由噪声引起、还是想办法将超限值复位。 ECC 错误和 RX_INT2 值始终相同。 没有变化。

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

    好的、我仍然不清楚您在哪些条件下看到了什么。 您能否描述一下每种情况下发生的情况:

    1. 没有 PWM 运行的原始 FSI 代码:
    2. PWM 运行时的原始 FSI 代码:
    3. 具有修改延迟的 FSI 代码、无 PWM:
    4. 具有修改延迟的 FSI 代码、PWM 运行:
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我还有其他问题。。。

    我检查了 FSI_TX_overlulation 和 FSI_TX_UNLO运转。

    FSI_TX_UNLO运转 始终进行计数。

    发生欠运转_CNT 时、是否有办法解决问题?

    这似乎是电机运行期间通信断开的原因。 你怎么看?

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

    嗨、Hahmin、

    只有当发送器在缓冲区中没有数据时尝试发送数据时、才应发生欠运转情况。 如果缓冲区中没有数据、则不应启动传输。

    每次传输后、您可能需要重置 TX 缓冲区指针、以确保 TX 缓冲区指针指向您已使用 CPU 写入的存储器位置。

    谢谢你

    Luke

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

    您好 Luke

    我的 TX 缓冲区指针在 Tx 函数中被初始化、如下所示: fsi_setTxBufferPtr (FSITXA_BASE、0U);  
    我将  FSI_setTxBufferPtr 移到了 FSI_TX_INTERRUPT 矢量函数。
    我检查了我的欠运转和溢出错误 cnt。  
    有 0 个计数。 但我的 FSI 在电机开/关时死亡约 10 倍。
    FSI 通信似乎非常困难和棘手。
     RX 事件:
    #define FSI_RX_EVT_PING_WD_TIMEOUT (0x0001U)//!< Ping 看门狗超时
    #define FSI_RX_EVT_FRAME_WD_TIMEOUT (0x0002U)//!<帧看门狗超时
    #define FSI_RX_EVT_CRC_ERR (0x0004U)//!<硬件计算出的 CRC 错误
    #define FSI_RX_EVT_TYPE_ERR (0x0008U)//!检测到无效帧类型
    #define FSI_RX_EVT_EOF_ERR (0x0010U)//!<无效的 EndofFrame 位模式
    #define FSI_RX_EVT_溢出 (0x0020U)//!< Rx 缓冲区中的缓冲区溢出
    #define FSI_RX_EVT_FRAME_DONE (0x0040U)//!<接收到的帧没有错误
    #define FSI_RX_EVT_UNUS运转 (0x0080U)//!<软件读取空的 Rx 缓冲区
    #define FSI_RX_EVT_ERR_FRAME (0x0100U)//!<接收到的错误帧
    #define FSI_RX_EVT_PING_FRAME (0x0200U)//!<接收到 Ping 帧
    #define FSI_RX_EVT_FRAME_OVERRIDE (0x0400U)//!<接收到新帧时未清除 FRAME_DONE
    #define FSI_RX_EVT_DATA_FRAME (0x0800U)//!<接收到的数据帧
    #define FSI_RX_EVT_PING_FRAME_TAG_MATCH (0x1000U)//!<接收到带有匹配标签的 Ping 帧
    #define FSI_RX_EVT_DATA_FRAME_TAG_MATCH (0x2000U)//!<接收到的带有匹配标签的数据帧
    #define FSI_RX_EVT_ERR_FRAME_TAG_MATCH (0x4000U)//!<接收到的带有标签匹配的错误帧
    我检查了 CRC、类型和 EOF。  
    我将检查 RX_overlulation 和 RX_UNLO运转。
    谢谢 Luke。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很高兴解决了欠运转问题、如果您需要进一步的帮助、请告诉我。

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

    您好 Luke

    什么是区别“FSI_RX_EVT_DATA_FRAME"和“和“FSI_RX_EVT_FRAME_DONE"?“? 当我 设置 FSI_RX_EVT_FRAME_DONE 事件时、不会发生该事件。 则接收到的帧是否出错?

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

    您好 Luke、

    运行电机时出现新的状态错误。

    RX_EOF 错误已建立。

    什么意味着 EOF 错误?

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

    帧结束是后同步码前的“0110",“,EOF、EOF 错误指示帧结束期间的某个位不正确。

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

    您好 Luke

    我提供了有关 FSI_CLK 和 FSI_D0 的示波器图片、无法与帧结束和示波器匹配、

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

    如果您能够将时钟稍后切换至结束、我认为这是正确的。  您应该以 4 秒计时结束、但看起来您只是 2 秒计时。

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

    如果 FSI_clock 移位大约 2 个脉冲、则数据包将正常。 然后我必须使用这个函数:  

    FSI_configRxDelayLine_fix (FSIRXA_BASE、FSI_RX_DELAY_D0、SG_FSIMA.DelayTapRX0);
    FSI_configRxDelayLine_fix (FSIRXA_BASE、FSI_RX_DELAY_D1、SG_FSIMA.DelayTapRX1);
    FSI_configRxDelayLine_fix (FSIRXA_BASE、FSI_RX_DELAY_CLK、SG_FSIMA.DelayTapCLK);

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

    是的、正确、请告诉我您是否能够在使用这些函数后看到范围的更正