Part Number:MSP430F5438A
关于Vcore TRM文档中有如下描述
默认情况下,PMMCOREV为最小值
5438A数据手册中有如下图片
按照这张图片,如何理解TRM手册中“enables operation of MCLK over a very wide frequency range.”
从这张图片看,我的理解是,PMMCOREV设置为最小值0,MCLK最大不能超过8MHz,但是Supply Voltage可以从1.8V到3.6V,Supply Voltage的范围很宽
而不是频率范围很宽(MCLK over a very wide frequency range)
Ben Qin:
你好,
user78960159 说:PMMCOREV设置为最小值0,MCLK最大不能超过8MHz
从图片上看,是这样的。“enables operation of MCLK over a very wide frequency range”应该就是指0~8MHz,结合后文档中后面的这句话来看,“As such, no PMM changes are required for many applications", 指对大部分应用来讲0~8MHz是一个很宽的范围。
,
user78960159:
您好 感谢帮助
在我的电路中,我配置了XT2高速时钟,是16MHz的晶体,并且将MCLK和SMCLK的时钟源都配置为XT2CLK
但是在代码中,我没有配置PMMCOREV,使用的默认值为0,我的供电是3.3V的
请问在这种情况下,我是不是必须将PMMCOREV设置为2或者3才能使程序正常运行呢?
从目前的调试看,MCLK为16MHz,供电3.3V,没有配置PPM(即PMMCOREV的数值为0),在以上条件下,程序执行的结果并没有发现异常,这是为什么呢?
,
Ben Qin:
PMMCOREV默认值为0的情况下MCLK最高是8MHz,此时MCLK实际有多少并不清楚(可能只有8MHz),也许在这样的情况下程序依然能够正常执行。但是需要注意的是并不推荐这样做:
,
user78960159:
您好 感谢帮助
考虑到我的外部晶振是16MHz,所以我在配置时钟前做了如下设置
在配置时钟前,先利用TRM文档108页的SetVCoreUp函数逐步将PMMCTL0的PMMCOREV设置为3
您看我这样的操作应该是正确的了吧
不过我不清楚SetVCoreUp函数中,开始的两个循环判断是什么作用
从这句注释理解 // Make sure no flags are set for iterative sequences 是要确保两个标志位没有被置位 那么这里的判断条件是不是有问题
而且从寄存器观测,这两个标志位的初始值都是0,所以如果有这两个while循环的判断在的话,会导致代码死循环在while语句
所以我将这两个while判断注释掉了
从调试结果看,没有发现异常,这是为什么吗 麻烦您解释一下 多谢
,
Ben Qin:
是的,这里是有bug。这里的目的就是检查这两个标志位是否都为0.
请参考下这个帖子:e2e.ti.com/…/msp430f5xx-setvcoreup