|
现学现卖,总算搞定了,可以自己验证下。
参考资料如下:
1、例程,做参考。 经过验证的代码如下:
2、数据手册,http://www.ti.com/cn/lit/ds/symlink/msp430fr6989.pdf , P29
With FRAM wait states (NWAITSx = 1) 支持频率 0-16M (NWAITSx = 0) 支持频率 0-8M
3、还一个调试的小问题,留意下。
用户手册http://www.ti.com.cn/cn/lit/ug/slau367o/slau367o.pdf,P294页
Access time error flag. This flag is set and a reset PUC is generated if a wrong setting for NWAITS is set and the FRAM access time is violated. This bit is cleared by software or by reading the system reset vector word SYSRSTIV if it is the highest pending flag. This bit is write 0 only, write 1 has no effect.
Note: The ACCTEIFG bit may be set in debug mode when the system frequency is configured to be greater than 8 MHz, regardless of the wait states (NWAITS).
In the case, it is not an FRAM access violation. The ACCTEIFG bit does not trigger a PUC or change the SYSRSTIV register value. The ACCTEIFG bit is cleared only by writing 0. It is recommended to use SYSRESTIV register to check FRAM access violation error to avoid confusion.
google翻译未校对(先吃午饭去了):
访问时间错误标志。 如果设置了NWAITS的错误设置并且违反了FRAM访问时间,则设置该标志并生成重置PUC。 如果该位是最高挂起标志,则通过软件或读取系统复位向量字SYSRSTIV来清除该位。 该位仅写0,写1无效。
注:当系统频率配置为大于8 MHz时,无论等待状态(NWAITS)如何,ACCTEIFG位都可以设置为调试模式。
在这种情况下,它不是FRAM访问冲突。 ACCTEIFG位不会触发PUC或更改SYSRSTIV寄存器值。 仅通过写0清除ACCTEIFG位。建议使用SYSRESTIV寄存器检查FRAM访问冲突错误以避免混淆。
- #include "driverlib.h"
- void main(void)
- {
- //停用看门狗
- WDT_A_hold(WDT_A_BASE);
- //设置等待时间,0时只能0-8MHz;不为0时,支持0-16M
- //建议修改时钟前提前配置
- FRAMCtl_configureWaitStateControl(FRAMCTL_ACCESS_TIME_CYCLES_1);
- //设置DCO=16MHz
- CS_setDCOFreq(CS_DCORSEL_1, CS_DCOFSEL_4);
- //配置时钟信号 SMCLK = DCOCLK/1 = 16MHz
- CS_initClockSignal(CS_SMCLK,CS_DCOCLK_SELECT,CS_CLOCK_DIVIDER_1);
- //配置时钟信号 MCLK = DCOCLK/1 = 16MHz,
- CS_initClockSignal(CS_MCLK,CS_DCOCLK_SELECT,CS_CLOCK_DIVIDER_1);
- // 不能放在这,因为频率已经到16M. 放到此处可以复现问题
- // FRAMCtl_configureWaitStateControl(FRAMCTL_ACCESS_TIME_CYCLES_1);
- //配置P4.0方向为输出
- GPIO_setAsOutputPin(GPIO_PORT_P4,GPIO_PIN0);
- //配置P4.0为功能引脚,可以直接将MCLK输出,通过示波器查看验证
- GPIO_setAsPeripheralModuleFunctionOutputPin(
- GPIO_PORT_P4,
- GPIO_PIN0,
- GPIO_TERNARY_MODULE_FUNCTION
- );
- //FRAM的常规操作吧,还没仔细看
- PMM_unlockLPM5();
- while(1)
- {
- };
- }
复制代码
实验结果截图:
|
|