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.

[参考译文] MSP432P401R:与 MSP432 GCC 捆绑的时钟系统示例不起作用

Guru**** 2535750 points
Other Parts Discussed in Thread: MSP432WARE

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/569628/msp432p401r-clocksystem-example-bundled-with-msp432-gcc-does-not-work

器件型号:MSP432P401R
主题中讨论的其他器件:MSP432WARE

大家好、

我已经尝试使用时钟系统示例(msp432_gcc/examples/MSP432P401/msp432p401_cs/)、该示例与 MSP432的 GCC 绑定(我想尝试 HFXT)、并发现了一些严重问题。

问题在于多个字节寄存器的设置错误、例如闪存等待状态的设置(文件 msp432p401_cs.c、第112行):

FLCTL->BANK0_RDCTL = FLCTL->BANK0_RDCTL 和~(FLCTL_BANK0_RDCTL_WAIT_MASK | FLCTL_BANK0_RDCTL_WAIT_2); 

我想、这个想法是将属于 wail 状态的位清零、然后设置2个等待状态、但方括号是错误的。

在文件 msp432p401_cs.c 的第112、113和127行中、可以发现三次完全相同的错误(第一个尝试设置闪存等待状态、第三个尝试从 HFXT 获取 MCLK):

/*步骤2:将闪存等待状态配置为2 (对于组0和组1)*/
FLCTL->BANK0_RDCTL = FLCTL->BANK0_RDCTL &~(FLCTL_BANK0_RDCTL_WAIT_MASK | FLCTL_BANK0_RDCTL_WAIT_2);//行112
FLCTL->BANK1_RDCTL = FLCTL->BANK0_RDCTL 和~(FLCTL_BANK1_RDCTL_WAITL_MASK | FLCTL_BANK1_RDCTL_WAIT_2);//行113

//...

/*选择 MCLK & HSMCLK = HFXT、无分频器*/
CS->CTL1 = CS->CTL1 &(~(CS_CTL1_SELM_MASK | CS_CTL1_DIVM_MASK | CS_CTL1_SELS_MASK | CS_CTL1_DIVHS_MASK)| CS_CTL1_SELM_HFXTCLK | CS_CTL1_SELSELESS_HFXTCLK 线路);127 /线路

由于必须设置的寄存器部分被复位为零、这可通过以下方式进行修复:

/*步骤2:将闪存等待状态配置为2 (对于组0和组1)*/
FLCTL->BANK0_RDCTL |= FLCTL_BANK0_RDCTL_WAIT_2;//行112
FLCTL->BANK1_RDCTL |= FLCTL_BANK1_RDCTL_WAIT_2;//第113行

//...

/*选择 MCLK & HSMCLK = HFXT、无分频器*/
CS->CTL1 |= CS_CTL1_SELM__HFXTCLK | CS_CTL1_SELS_HFXTCLK;//第127行 

因此、一切都应该正常。

TI 没有违法行为、但实际上是否有人对此进行了测试? 文件中进一步向下的代码行甚至通过 P4.4暴露 MCLK、如果有人连接了示波器、则错误应该已经变得明显。

请修复该上游、

Dan

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

    Dan、您好!


    感谢您指出这一点。 我刚刚检查了 MSP432Ware 3_50_00_02版本的最新版本、并发现该版本已修复。

    示例 msp432p401_cs_09 contians:

    /*步骤2:为组0和组1将闪存等待状态配置为1 */
    FLCTL->BANK0_RDCTL =(FLCTL->BANK0_RDCTL 和~(FLCTL_BANK0_RDCTL_WAIT_MASK)))|
    FLCTL_BANK0_RDCTL_WAIT_1;//行112
    FLCTL->BANK1_RDCTL =(FLCTL->BANK0_RDCTL &~(FLCTL_BANK1_RDCTL_WAIT_MASK)))|
    FLCTL_BANK1_RDCTL_WAIT_1;//第115行
    
    //选择 MCLK & HSMCLK = HFXT,无分频器*/
    CS->CTL1 = CS->CTL1 &~Ω(CS_CTL1_SELM_MASK | CS_CTL1_DIVM_MASK | CS_CTL1_SELSELSE_MASK | CS_CK_|CS_CTL1_SELSE_MASK | CK_| CK_SION_CK_|CS_C_BANSELSELSE_
    CS_CTL1_SELM_HFXTCLK | CS_CTL1_SELESS_HFXTCLK;//第127行 

    对于下一个 MSP432 GCC 支持包版本、将更新示例。


    谢谢、

    Bob Heilmaier

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:
    很高兴听到这个消息。 您是否有下一版本的 ETA?

    谢谢、
    Dan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dan、您好!
    该版本计划于2017年第1季度末发布。

    谢谢、
    Bob