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.

[参考译文] TMS320F28375S:将 STA 示例与诊断库一同使用的问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1233296/tms320f28375s-issue-about-using-the-sta-sample-with-diagnosis-library

器件型号:TMS320F28375S

尊敬的先生:

我们将 STA 样本与调用 STL 函数集成以进行上电测试。

调用 STA 测试后、timer2和某些 GPIO 出现故障(例如:STA_SCI_TEST 或 STA_SCI_MON...)

调用 STA 测试后、是否可以复位所有 CPU 设置?

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

    请注意、STA 是一个有关如何使用不同库模块的参考示例、并不一定是按原样使用。 您应该自定义代码、以便为应用使用适用的外设实例和 GPIO。 也就是说、如果您在测试后仍需要重置外设、则某些模块在 DEV_CFG_REGS 中具有 SOFTPRESx 寄存器、可以用于重置外设。

    类似地、STL_SCI_MON 和 STL_INT_MON 测试旨在演示如何对通信和中断进行时隙监控。 您应该将它们用作将监控集成到您自己的现有代码中的模型。

    惠特尼

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

    是否有任何方法可以将所有 CPU 寄存器复位为冷启动状态?

    Eddie

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

    我不知道软件 CPU 寄存器复位——只是导致设备的硬件 CPU 复位(就像 WD 或类似的)。 如果您想手动写入、可以在 CPU 指南中查找默认值、但当然、只读位不起作用。

    惠特尼

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

    程序开始时执行 CPU 自检。 我无法使用 WD 重新启动 CPU。 它将再次执行 CPU 自检。

    现在、如果没有 STA 测试、我的程序会运行良好(CPU 自检)。 我需要使用甲氧基溴来重置所有寄存器。 我们曾尝试将寄存器写入我们的设置。 但 timer2仍然无法正常工作。

    Eddie

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

    哪个特定测试导致了此问题? 通过 CPU 自检、您是指 HWBIST? HWBIST 代码保存和恢复所有 CPU 寄存器、因此我认为不会导致问题。

    请注意、一些测试使用 CPU 计时器2 -如 STL_OSC_CT -因为它可以配置为在独立的时钟源而不是 SYSCLK 下运行。 如果您在运行使用 CPU 计时器2的测试之一之前配置计时器、它将覆盖您的计时器2设置、因此您稍后需要恢复这些设置或等到测试运行后再配置计时器。

    惠特尼

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

    我确实会根据需要重新配置 timer2。 但是、time2仍然以 STA 频率运行。

    以下是我们的程序。

    === 代码片段===

    STA_MAIN ();//执行 STA 测试
    DELAY_US(500);

    GPIO_Setup1 ();// PIN Mux 设置


    Dint;
    IER = 0x0000;
    IFR = 0x0000;

    InitPieCtrl();
    InitPieVectTable();


    EALLOW;
    PieVectTable.TIMER0_INT =&CPU_timer0_ISR;
    PieVectTable_Timer1_INT =&CPU_Timer1_ISR;

    PieVectTable.TIMER2_INT =&CPU_timer2_ISR;

    // PieVectTable.SPIA_RX_INT =&spiaRxFifoIsr;
    // PieVectTable.SPIA_TX_INT =&spiaTxFifoIsr;
    // PieVectTable.SPIB_RX_INT =&spibRxFifoIsr;

    PieVectTable.SCIA_RX_INT =&sciaRxFifoIsr;
    PieVectTable.SCIB_RX_INT =&scibRxFifoIsr;


    PieVectTable.ADCA1_INT =&adca1_isr;//function for ADCA interrupt 1
    EDIS;

    ...

    PieCtrlRegs.PIECTRL.bit.ENPIE = 1;//启用 PIE 块
    PieCtrlRegs.PIEIER9.bit.INTx1 = 1;// PIE 组9、INT1
    PieCtrlRegs.PIEIER9.bit.intx2 = 1;// PIE 组9、INT2
    PieCtrlRegs.PIEIER9.bit.INTx3 = 1;// PIE 组9、int3
    PieCtrlRegs.PIEIER9.bit.intx4 = 1;// PIE 组9、int4
    PieCtrlRegs.PIEIER6.bit.INTx1 = 1;//启用 PIE 组6、INT 1 Rx SPIA_RX
    PieCtrlRegs.PIEIER6.bit.intx2 = 1;//启用 PIE 组6、INT 2 TX SPIA_TX
    PieCtrlRegs.PIEIER6.bit.INTx3 = 1;//启用 PIE 组6、INT 3 Rx SPIB_RX
    PieCtrlRegs.PIEIER1.bit.INTx7 = 1;// PIE 组1、INT7时间0
    PieCtrlRegs.PIEIER1.bit.INTx1 = 1;

    ...

    IER = M_INT6;//启用 SPIA、SPIB
    IER |= M_INT1;//启用计时器0
    IER |= M_INT13;//启用计时器1
    IER |= M_INT14;//启用计时器2
    IER |= M_INT9;//启用 SCI1、SCIB
    EINT;//启用全局中断
    ERTM;//启用全局实时__中断 DBGM

    ========= 结束===========

    有什么问题吗?

    Eddie

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

    这一程序似乎没有问题。 不过、我不知道 CPU 计时器2的设置是在何处? 您是否可以尝试获取具有和不具有 STA 的计时器2寄存器配置的屏幕截图、看看您是否可以弄清导致该问题的原因是什么?

    惠特尼