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.

[参考译文] MSP432E401Y:MSP432E401Y

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1330795/msp432e401y-msp432e401y

器件型号:MSP432E401Y

尊敬的:

在基于 MSP432E 的定制电路板上、我们使用了 CRC 模块。 在使用 CC 模块之前、我们根据 TI 重整工具来重置和启用该模块。

进入一段时间后、在电路板冷启动之后、READY 位不会由 CRC 模块启用。 重启电路板可修复此问题。

我找到这个帖子: https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/948694/ccs-msp432e411y-crc_init-problem 这是完全相同的问题。

可惜没有给出解决方案、根本原因也没有任何更新/提示。

是否有任何关于此问题的额外信息?

此致、

巴特

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

    您好、Bart:

     我刚刚运行了几次代码、我无法重复这个问题。 我也没有找到可以解释这个问题的任何勘误表。 不过、我发现 TM4C129 MCU 有一个 CRC 示例代码、它在超时循环中等待 CRC 准备就绪。 TM4C129和 MSP432E 共享同一个器件。 这似乎表明有人可能已经经历过这个现象、以便将此变通办法应用到中。 抱歉、我不知道此示例的历史记录。 我建议您也这样做。 我想这个问题非常依赖于器件、这就是为什么我不能重复它、也不能在您提到的另一个帖子中重复它、也不能重复 Chester 的原因。  

    //*****************************************************************************
    //
    // Configuration defines.
    //
    //*****************************************************************************
    #define CCM_LOOP_TIMEOUT        500000
    
    
    
    //*****************************************************************************
    //
    // Initialize the CRC and CCM modules.
    //
    //*****************************************************************************
    bool
    CRCInit(void)
    {
        uint32_t ui32Loop;
    
        //
        // Check that the CCM peripheral is present.
        //
        if(!MAP_SysCtlPeripheralPresent(SYSCTL_PERIPH_CCM0))
        {
            UARTprintf("No CCM peripheral found!\n");
    
            //
            // Return failure.
            //
            return(false);
        }
    
        //
        // The hardware is available, enable it.
        //
        MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_CCM0);
    
        //
        // Wait for the peripheral to be ready.
        //
        ui32Loop = 0;
        while(!MAP_SysCtlPeripheralReady(SYSCTL_PERIPH_CCM0))
        {
            //
            // Increment our poll counter.
            //
            ui32Loop++;
    
            if(ui32Loop > CCM_LOOP_TIMEOUT)
            {
                //
                // Timed out, notify and spin.
                //
                UARTprintf("Time out on CCM ready after enable.\n");
    
                //
                // Return failure.
                //
                return(false);
            }
        }
    
        //
        // Reset the peripheral to ensure we are starting from a known condition.
        //
        MAP_SysCtlPeripheralReset(SYSCTL_PERIPH_CCM0);
    
        //
        // Wait for the peripheral to be ready again.
        //
        ui32Loop = 0;
        while(!MAP_SysCtlPeripheralReady(SYSCTL_PERIPH_CCM0))
        {
            //
            // Increment our poll counter.
            //
            ui32Loop++;
    
            if(ui32Loop > CCM_LOOP_TIMEOUT)
            {
                //
                // Timed out, spin.
                //
                UARTprintf("Time out on CCM ready after reset.\n");
    
                //
                // Return failure.
                //
                return(false);
            }
        }
    
        //
        // Return initialization success.
        //
        return(true);
    }