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.
我正在使用具有 msp430fr58891的新电路板。 我不断遇到振荡器故障。 在我要求 PCB 设计人员将晶体移到更靠近芯片的位置之前、我希望有人仔细检查我的代码。 LFx 引脚是悬空的、我们已要求在下一个版本中将其终止。 第4.6节提供了有关未使用引脚的建议、但未提供有关未使用 LFx 引脚的建议、是否应将其连接到 VSS?
那么、我的代码中是否有任何错误会导致 SFRIFG1_bit.OFIFG 中的 OSC 故障?
我已经进行了多次更改、试图纠正、但没有什么帮助。
我将 MCLK 和 SMCLK 切换到以4和16MHz 频率运行的内部 DCO 、但这没有帮助。
我增加了 HFDRIVE、但又没有增加。
我的 LaunchPad 演示板具有5969、但 DCO 有同样的问题(LaunchPad 没有为 HFX (XT2)安装晶体)。
静态空 Start_XT1 (void){
uint16_t i;
uint16_t status;
CSCTL0 = 0xA500;//PWD GAA
// CSCTL1 = 0x0006;//DC0范围选择:4MHz GAA
CSCTL1 = 0x0048;//DC0范围选择:16MHz GAA
CSCTL2 = 0x0055;//ACLK=LFXT (或 VLOCLK)、SMCLK=HFXT (或 DCOCLK)、MCLK=HFXT (或 DCOCLK) GAA
// CSCTL2 = 0x0033;//ACLK=LFXT (或 VLOCLK)、SMCLK=DCOCLK、MCLK=DCOCLK GAA
// CSCTL3 = 0x0000;//ACLKDIV=1、SMCLKDIV=1、MCLKDIV=1 GAA
CSCTL3 = 0x0011;//ACLKDIV=1、SMCLKDIV=2、MCLKDIV=2 GAA
// CSCTL4 = 0x0000;//HFXT、LFXT:HFXTDRIVE= 00、HFFREQ= 00 0-4MHz 5969 GAA
// CSCTL4 = 0x0800;//HFXT、LFXT:HFXTDRIVE= 00、HFFREQ= 01 8-16MHz GAA
// CSCTL4 = 0x4800;//HFXT、LFXT:HFXTDRIVE= 01、HFFREQ= 01 8-16MHz GAA
// CSCTL4 = 0x8800;//HFXT、LFXT:HFXTDRIVE= 10、HFFREQ= 01 8-16MHz GAA
CSCTL4 = 0xC800;//HFXT、LFXT:HFXTDRIVE= 11、HFFREQ= 01 8-16MHz GAA
CSCTL5 = 0x0080;//LFXT&HFXT FaultCntrEnable:HFXT 故障标志被启用
// CSCTL6 = 0x0000;//MODCLK、SMCLK、MCLK、ACLK 请求使能:全部被禁用
CSCTL6 = 0x000F;//MODCLK、SMCLK、MCLK、ACLK 请求使能:全部被使能
PJSEL1_BIT.PJSEL1_6 =0;// msp430fr58891 64引脚:HFXOUT PJ.7引脚54 HFXIN PJ.6引脚55
PJSEL0_bit.PJSEL0_6 =1;
/do{
SFRIFG1_bit.OFIFG = 0;//清除 OSC 故障标志 IFG1_bit.OFIFG = 0;
for (i = 0;i < 1000;++I){dumme++;};
} while (SFRIFG1_bit.OFIFG);//如果仍然设置 IFG1_bit.OFIFG,则不要继续
状态= 1;
}
当被配置为 LFXIN/OUT 时、LFx 引脚一定不能被使用(请见表1-4的脚注1)。
OFIFG 标志只报告至少一个 LFXTOFFG 或 HFXTOFFG 被置位。 您也必须清除这些标志(并确保在未连接任何设备时不尝试使用 HFXT 或 LFXT)。
所有 CSCTL 寄存器的值都是错误的。 (当我看到有人使用魔术编号而不是正确的符号时、我会假设这一点。)
谢谢你。 我们不使用 LFx、并将引脚保留为 GPIO 默认状态。
1.2.1系统复位后的器件初始条件
BOR 之后、初始器件条件为:
•RST/NMI 引脚配置为复位模式。 有关配置的详细信息、请参阅第1.7节
RST/NMI 引脚。
•I/O 引脚被切换至数字 I/O 一章中描述的输入模式。
1.6未使用引脚的连接
表1-4列出了所有未使用引脚的正确端接。 第54页
Px.0至 Px.7打开开关至端口功能、输出方向(PxDIR.n = 1)
12.3.1复位后的配置
BOR 复位后、所有端口引脚均为高阻抗、并具有施密特触发器及其模块功能
以防止交叉电流。 应用必须初始化所有端口引脚、包括未使用的引脚
(第12.3.2节)作为输入高阻抗、具有下拉电阻的输入、具有上拉电阻的输入、输出高电平或输出低电平
根据应用需求、相应地配置 PxDIR、PxREN、PxOUT 和 PxIES。
是的,这不是令人困惑的…
在我的初始化例程结束时、HFXTOFFG 和 LFXTOFFG 在 CSCTL5中被清零。 因此、我定期测试 SFRIFG1、以查看 OFIFG 标志是否被置位并将其清零。 我还将开始清除 HFXTOFFG。
我使用了《msp430fr58xx 系列指南》手册来确定 CSCTL 的设置、如果设置错误、TI 需要更新手册。 希望其他人也能看到这一点、并对照手册查看我的设置。
是的,这不是令人困惑的…
您引用的三个部分是正确和一致的。 问题是什么?
我使用了《msp430fr58xx 系列指南》手册来确定 CSCTL 的设置
查看 MSP430fr58891.h 头文件、例如:
(笑声) /* CSCTL2控制位*/... #define SELM__LFXTCLK (0x0000)/* MCLK 源选择 LFXTCLK */ #define SELM__VLOCLK (0x0001)/* MCLK 源选择 VLOCLK */ #define SELM__LFMODCLK (0x0002)/* MCLK 源选择 LFMODOSC */ #define SELM__LFMODOSC (0x0002)/* MCLK 源选择 LFMODOSC (传统)*/ #define SELM__DCOCLK (0x0003)/* MCLK 源选择 DCOCLK */ #define SELM__MODCLK (0x0004)/* MCLK 源选择 MODOSC */ #define SELM__MODOSC (0x0004)/* MCLK 源选择 MODOSC (传统)*/ #define SELM__HFXTCLK (0x0005)/* MCLK 源选择 HFXTCLK */... #define SELs__LFXTCLK (0x0000)/* SMCLK 源选择 LFXTCLK */ #define SELs__VLOCLK (0x0010)/* SMCLK 源选择 VLOCLK */ #define SELs__LFMODCLK (0x0020)/* SMCLK 源选择 LFMODOSC */ #define SELs__LFMODOSC (0x0020)/* SMCLK 源选择 LFMODOSC (传统)*/ #define SELs__DCOCLK (0x0030)/* SMCLK 源选择 DCOCLK */ #define SELs__MODCLK (0x0040)/* SMCLK 源选择 MODOSC */ #define SELs__MODOSC (0x0040)/* SMCLK 源选择 MODOSC (传统)*/ #define SELs__HFXTCLK (0x0050)/* SMCLK 源选择 HFXTCLK */... #define SELA_LFXTCLK (0x0000)/* ACLK 源选择 LFXTCLK */ #define SELA_VLOCLK (0x0100)/* ACLK 源选择 VLOCLK */ #define SELA_LFMODCLK (0x0200)/* ACLK 源选择 LFMODOSC */ #define SELA_LFMODOSC (0x0200)/* ACLK 源选择 LFMODOSC (传统)*/ ...
(但对于向后兼容性、也有许多不那么有用的符号。)
仍然希望有人检查我的时钟初始化软件并提供一些建议。 抱歉、我没有使用定义的宏、这是我的第一个 MSP430。 我继承了之前供应商的设计、客户希望将其从 msp430f2272移植到58891。 在2272上运行时、此代码不产生 OSC 故障。 我有一条意见要在 CSCTL5中清除 HFXTOFFG。 我在初始化时执行该操作、但现在当我发现 SFRIFG1_bit.OFIFG = 1时、也在主循环中清除它。 这无法解决问题。
if (SFRIFG1_bit.OFIFG = 1){
SFRIFG1_bit.OFIFG = 0;
CSCTL5_bit.HFXTOFFG = 0;//清除 HFXT OSC 故障标志
CSCTL5_bit.LFXTOFFG = 0;//清除 LFXT OSC 故障标志
}
我尝试了改变多个方面、其中一个是将 MCLK 和 SMCLK 设置为 DCO。 当然、这不会产生 OSC 故障、但会产生这样的故障吗? 我还有一个带有 msp430fr5969的 LaunchPad 演示板、并在那里获得相同的结果。 除此之外、我的代码运行正常、仍然真的讨厌 OSC 故障。