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.

[参考译文] TMS320F28.0025万C:SCI NO TX

Guru**** 2460850 points
Other Parts Discussed in Thread: SFRA

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1090592/tms320f280025c-sci-no-tx

部件号:TMS320F28.0025万C
主题中讨论的其他部件:SFRALAUNCHLL-F28.0025万C

您好,

我尝试将SCI用作调试输出,但无法使其在LAUNCXL-F28.0025万C评估板上运行。 我正在使用电机控制SDK V4,并且在符号中禁用了SFRA。 因此,我按如下所示配置SCI并使用示波器测量TX引脚(IO16):

设置SCI:

HAL.c:

void HAL_setupGPIOs(HAL_Handle handle)
{
    ...

    //Define SCI Pins for normal SCI communication
    // GPIO16->SCIA_TX
    GPIO_setPinConfig(GPIO_16_SCIA_TX);
    GPIO_setDirectionMode(16, GPIO_DIR_MODE_OUT);
    GPIO_setPadConfig(16, GPIO_PIN_TYPE_STD);

    // GPIO17->SCIA_RX
    GPIO_setPinConfig(GPIO_17_SCIA_RX);
    GPIO_setDirectionMode(17, GPIO_DIR_MODE_IN);
    GPIO_setPadConfig(17, GPIO_PIN_TYPE_STD);

    GPIO_setQualificationMode(16, GPIO_QUAL_ASYNC);
    GPIO_setQualificationMode(17, GPIO_QUAL_ASYNC);
    
    ...
}
    
    
...

void HAL_setupSCIA(HAL_Handle halHandle)
{
    HAL_Obj *obj = (HAL_Obj *)halHandle;

    // Initialize SCIA and its FIFO.
    SCI_performSoftwareReset(obj->sciHandle);

    // Configure SCIA for echoback.
    SCI_setConfig(obj->sciHandle, DEVICE_LSPCLK_FREQ, 115200,
                        ( SCI_CONFIG_WLEN_8 |
                          SCI_CONFIG_STOP_ONE |
                          SCI_CONFIG_PAR_NONE ) ); //SFRA_GUI_VBUS_CLK DEVICE_LSPCLK_FREQ

    SCI_resetChannels(obj->sciHandle);

    SCI_resetRxFIFO(obj->sciHandle);

    SCI_resetTxFIFO(obj->sciHandle);

    SCI_disableLoopback(obj->sciHandle);

    SCI_clearInterruptStatus(obj->sciHandle, SCI_INT_TXFF | SCI_INT_RXFF);

    SCI_enableFIFO(obj->sciHandle);

    SCI_enableModule(obj->sciHandle);

    SCI_performSoftwareReset(obj->sciHandle);

    return;
}  // end of DRV_setupSci() function

我可以看到,UC正确运行设置。

然后在 sys_main.c:

            switch(systemVars.timerBase_1ms)
            {
                case 1:     // motor 1 protection check
                    runMotorMonitor(motorHandle_M1);
                    break;
                case 2:
                    calculateRMSData(motorHandle_M1);
                    break;
                case 3:
                    if(SCI_isTransmitterBusy(halHandle->sciHandle) == 0)
                    {
                        SCI_writeCharBlockingNonFIFO(halHandle->sciHandle, 'a');
                    }

                    break;
                case 4:     // calculate motor protection value
                    calcMotorOverCurrentThreshold(motorHandle_M1);
                    break;
                case 5:     // system control
                    systemVars.timerBase_1ms = 0;
                    systemVars.timerCnt_5ms++;
                    break;
            }

所以根本没有输出,我真的不知道什么设置可能是错误的。

编辑:下面还有SCIA寄存器:

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

    您好,

    我觉得您所做的初始化很好。 您能否在发送数据的代码中设置一个断点并在TXBUF中查看数据? 此外,如果您可以看到它是否确实在发送数据,或者它是否卡在代码的某些部分中?

    Aditya

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

    您好,Aditya,

    TXBUF填充为0x61,在ASCII中为'A'。 调用发送功能时,SCICTL2->TXEMPTY标志正确地变为0,然后在发送后返回到1,但根本没有输出。

      是否需要为LAUNCHLL-F28.0025万C设置开关/跳线?

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

    我发现,当我使用GPIO24 (TX)和GPIO35 (RX)时,它工作正常。 我真的不知道这是什么,但 它似乎是LAUNCHXL-F28.0025万C的硬件配置 有点错误

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

    Sebastian,

    您需要使用启动板上的硬件开关来更新GPIO连接,以便能够用于SCI目的(到XDS110 COM端口)。

    谢谢!

    Aditya