主题中讨论的其他器件:MSP430F2132、
您好!
我将通过软件从 MSP430F2132移植到 MSP430FR2476。 我无法使 UART 工作(接收数据时无法发送任何数据、中断也不会触发)。 我找到了这篇文章并开始介绍:
https://www.ti.com/lit/an/slaa734a/slaa734a.pdf?ts=1612820504636&ref_url=https%253A%252F%252Fwww.google.com%252F
我到了建议检查时钟频率的程度、我发现了一个问题...
下面是用于初始化时钟的2132代码中的内容:
//内存段 A 有效、所以用校准值初始化 DCO
// DCOCTL:从 CALDCO_1MHz 中拉取 DCOx 和 MODx
// BCSCTL1:从 CALBC1_1MHz 中拉取 RSELx (也设置 XT2OFF=1、XTS=0、
// DIVA = 00、XT5V = 0)
// BCSCTL2:SELMx=00 (DCOCLK)、DIVMx=00 (DIF1)、SELS =0 (DCOCLK)、
// DIVXs=00 (DIV1),DCOR=0 (内部)
DCOCTL = CALDCO_8MHZ;
BCSCTL1 = CALBC1_8MHZ;
BCSCTL2 = 0;
根据我对文档的理解、2476具有非常不同的时钟结构、因此我最终从 OutOfBox_LP-MSP430FR2476软件示例复制了 CS_init、并尝试调整这些值以将 MCLK 和 SMCLK 设置为8MHz。 我使用逻辑分析仪查看了时钟、它们实际上是1.667至2.5MHz。 我尝试将设置改回示例、现在我有:
#define CS_MCLK_REGLEVE_FREQUENCY IN_kHz 16000 // MCLK 的目标频率、单位为 kHz
#define CS_MCLK_FLLREF_Ratio 488 // MCLK/FLLRef 比率
(笑声)
静态 bool CS_init (void)
{
bool RetVal = true;
//根据 MCLK 的器件数据表的要求配置一个 FRAM 等待状态
//在配置时钟系统之前在8MHz 以上运行。
FRAMCTL_configureWaitStateControl (FRAMCTL_ACCESS_TIME_CYCESS_1);
//设置 DCO FLL 基准= REFO
cs_initClockSignal (
CS_FLLREF、
CS_REFOCLK_SELECT、
CS_CLOCK 分频器_1
);
//set ACLK = REFO
cs_initClockSignal (
CS_ACLK、
CS_REFOCLK_SELECT、
CS_CLOCK 分频器_1
);
CS_initFLLPam param ={0};
//设置比率/所需的 MCLK 频率、初始化 DCO、保存修整值
RetVal = CS_initFLCalculateTrim (
CS_MCLK_frequed_in_kHz、
CS_MCLK_FLLREF_Ratio、
参数(&P)
);
//清除所有 OSC 故障标志
CS_clearAllOscFlagsWithTimeout (1000);
返回 RetVal;
}
我预计为16MHz、但逻辑分析仪显示为1MHz:
当我更改上面的两个#defines 时、频率会发生变化、但不会达到我所期望的频率。。。
我是否应该设置其他内容? 我是否甚至根据原始2132代码中的内容采取了正确的方法?
提前感谢您的帮助!