yufeige 发表于 2019-1-7 18:17:05

STM32 MCU RCC_CFGR 和 RCC_CFGR2寄存器的相互作用

主控STM32F100VDT6 外部晶振8M,官方库3.5.0
同一个批次MCU中就发现某些MCU 波特率出现异常
MCU 跑起来时候发现串口波特率与实际波特率不对应的问题,比如设置115200波特率 实际上却是57600
通过分析发现MCU主控的主频是24M = (HSE/2)*6,与软件实际设置是没有问题的,
通过仿真后 分析发现:
void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)这个函数内部
   prediv1factor = (RCC->CFGR2 & CFGR2_PREDIV1) + 1;// δÐÞ¸ÄǰµÄÖµ
       /* HSE oscillator clock selected as PREDIV1 clock entry */
       RCC_Clocks->SYSCLK_Frequency = (HSE_VALUE / prediv1factor) * pllmull;
由于 RCC->CFGR的BIT 17 是1   ,但是 RCC->CFGR2的BIT0不是1 ,因此导致系统时钟 计算错误

根据芯片手册上得知   RCC->CFGRBIT17 如果设置1的话 ,那么RCC->CFGR2 的 BIT0 也会置1,

所以想知道下 为啥会出现这种情况, 同样的芯片 同样的程序 , 大部分MCU是正常的少数MCU 是不对的


xmshao 发表于 2019-1-22 16:07:33

1、你可以将时钟通过MCO引出来实际看看,正常与非正常时钟是否一样;
2、除了UART功能异常外,其它功能正常吗?
3、如果可能用cubeMx重新配置下生产代码比较下;

yufeige 发表于 2019-1-25 11:46:13

MCO 输出是频率是正常的,暂时也就只发现串口这儿的问题, 就是这2个寄存器的关系 让我很是迷惑,cubemx 我还没有区试,不过我后来又购买了新的MCU,用着也没有问题,有问题的那一批MCU 就几个有这歌现象

xmshao 发表于 2019-1-31 11:22:08

yufeige 发表于 2019-1-25 11:46
MCO 输出是频率是正常的,暂时也就只发现串口这儿的问题, 就是这2个寄存器的关系 让我很是迷惑,cubemx 我 ...

如果说这个确定跟批次有关,建议你跟你的供应商咨询确认下。
页: [1]
查看完整版本: STM32 MCU RCC_CFGR 和 RCC_CFGR2寄存器的相互作用