需要使用STM32F401的大内存特性,买了1批STM32F401CCU6. QFN48封装的。随便翻了一下PDF,第一感觉和F103的48脚封装差不太多,于是将F103的板子改了个QFN48的封装就打样了。。。
收到板子后,直接焊上F401,我用的是8M晶振,调试,发现频率上不去。最高能稳定在60M左右,在64M偶尔能工作。
在main.c中的RCC配置:
(因为SystemInit的配置较低,能跑起来,需要重新配置时钟在72M,文档说最高能84M)
void RCC_MyConfig(void)
{
RCC_DeInit(); //@1
RCC_HSEConfig(RCC_HSE_ON); //打开外部时钟
if(RCC_WaitForHSEStartUp() == SUCCESS) //等待外部时钟成功启动
{
RCC_HCLKConfig(RCC_SYSCLK_Div1); //HCLK(AHB)时钟为系统时钟1分频
RCC_PCLK1Config(RCC_HCLK_Div8); //PCLK(APB1)时钟为HCLK时钟8分频
RCC_PCLK2Config(RCC_HCLK_Div2); //PCLK(APB2)时钟为HCLK时钟2分频
RCC_PLLConfig(RCC_PLLSource_HSE, 8, 288, 4, 6); //PLL时钟配置,外部晶振为8MHz,系统配置为8/8*336/4 =84MHz usb=336/7=48
RCC_PLLCmd(ENABLE); //开启PLL时钟,并等待PLL时钟准备好
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //选择PLL时钟为系统时钟
while(RCC_GetSYSCLKSource() != 0x08); //Wait till PLL is used as system clock source
}
}
上述代码无论如何无法启动,将RCC_HCLKConfig(RCC_SYSCLK_Div1); 改为DIV2可以启动,但主频慢多了,通过调整倍频,发现最高可以稳定跑到60M上下。于是不解。
问供应商,说芯片肯定是原装的。
于是各种加电容,改善电源,方法都用遍了,还是不行,正准备放弃时,浏览文档突然发现:
这不是我画的PB11吗,哪里去了?看一看VCAP_1是什么?
到这里才恍然大悟,原来PB11在48脚的IC中是不存在的,取而代之的是pwr regulator这个功能脚,赶紧找个106的电容焊上,启动,一切都安静了。。。