21ic电子技术开发论坛 单片机与嵌入式系统 ST MCU APB1能超频跑么
发新帖我要提问
返回列表
打印
[STM32F4]

APB1能超频跑么

[复制链接]
2010|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tky2001|  楼主 | 2014-6-20 01:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自己画了一块F405RG的板子,给的8M外部晶振,一开始跑发现USART1收发乱码,用示波器测了晶振输出只有7M,估计电容没匹配好?没改硬件,修改stm32f4xx.h和system_stm32f4xx.c后USART1工作正常。再调USART3发现收发还是乱码。考虑到USART1时钟来自APB2,USART3时钟来自APB1,尝试将APB1改成和APB2一样的配置(代码见下),之后USART3居然正常工作了。问题是根据时钟树配置,主频跑在144MHz,分频到APB2后为72MHz,如果APB1也跑这么快就超过手册上规定的42MHz上限了。如此又怎能解释USART3反而能正常工作了?Thx!

//system_stm32f4xx.c代码修改:
//SetSysClock(void)中如下代码
/* PCLK2 = HCLK / 2*/
RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;
   
/* PCLK1 = HCLK / 4*/
RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;

//改为
/* PCLK2 = HCLK / 2*/
RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;
   
/* PCLK1 = HCLK / 2*/
RCC->CFGR |= RCC_CFGR_PPRE1_DIV2;
沙发
电子无聊大神| | 2014-6-20 09:07 | 只看该作者
外部晶振误差这么大的话,干脆用内部时钟HSI吧

使用特权

评论回复
板凳
icecut| | 2014-6-20 09:24 | 只看该作者
用示波器测了晶振输出只有7M,估计电容没匹配好?----是不是晶振买错型号了.换晶振吧

使用特权

评论回复
地板
戈卫东| | 2014-6-20 13:20 | 只看该作者
晶振其实不好用示波器直接测。。。。。。。

使用特权

评论回复
5
guet_new_man| | 2014-6-20 14:35 | 只看该作者
说明内部总线也可以超频,但是稳定性如何,有待测试验证,或者由ST官方提供这方面的数据。

使用特权

评论回复
6
tky2001|  楼主 | 2014-6-20 14:43 | 只看该作者
谢谢各位的回复!
用的是贴片8M晶振,手册上推荐配18pF电容,我实际用的是22pF(一样的配置之前在一块stm32f103的板子上正常起振)。
示波器用的是泰克60M,表笔打到x10档,对待测信号的影响会很大么?
测晶振的两个振荡脚,一个正常给出8MHz,另一个显示7MHz而且峰峰值明显小很多。试过按8M配置HSE,结果USART1一直出乱码,改成7M就好了。
按各位所说照标配再焊一块板子或用内部时钟应该能解决主频问题,只是本人依然对APB1在超频这么高的情况下还能正常工作感到非常意外。
目前的配置全速跑,片子倒不发热。只是担心APB1长时间超频会对片子有负面影响么?

使用特权

评论回复
7
guet_new_man| | 2014-6-20 15:28 | 只看该作者
tky2001 发表于 2014-6-20 14:43
谢谢各位的回复!
用的是贴片8M晶振,手册上推荐配18pF电容,我实际用的是22pF(一样的配置之前在一块stm32 ...

这种超频的实验一般做的不多,楼主可以自己测试一下,比如高低温实验、各种EMC实验等,如果都能通过,基本上可以确定没问题。

使用特权

评论回复
8
accer757| | 2014-7-30 22:33 | 只看该作者
用有源晶振吧 误差小 稳定些

使用特权

评论回复
9
myxiaonia| | 2014-7-31 08:17 | 只看该作者
tky2001 发表于 2014-6-20 14:43
谢谢各位的回复!
用的是贴片8M晶振,手册上推荐配18pF电容,我实际用的是22pF(一样的配置之前在一块stm32 ...

晶振接到mcu上两个脚,一个是输出激励端,这个阻抗较低,就是你测8m那个,另一个输入阻抗很高,很难测的,就算你测的是7m多,其实还是8m为准

使用特权

评论回复
10
zhjerry| | 2014-7-31 09:48 | 只看该作者
LZ作的这个实验很有意思。早期的STM32分APB1和APB2,运行速度不一样,把部分UART、TIM以及GPIO都接到低速的APB1,使得有些UART的最高BAUD率受到限制,最近做SIM5360E的高速串口(可到4Mbps)就受到影响,也使用了相同的方法。个人认为APB2超频是没有风险的,理由如下:1.因为全片使用相同的工艺,APB1和APB2没有本质的区别。大量的超频实验也证明了APB1的极限速度远远超过规定值。2.这个APB1连接的设备都是片内设备,相同IP的其他模块可以连接APB2。个人认为ST这么定义的目的是为了降低的功耗。

使用特权

评论回复
11
tky2001|  楼主 | 2014-8-7 01:27 | 只看该作者
谢谢各位的回复!超频跑到目前为止尚未发现问题。期间又手焊了一块板子,这次将电容改成18pF,结果没有变化,还是得超频APB1才能正常工作。
SDIO调通过,说明PLL出来的这一路时钟应该也是正常的。晶振和电容都是正品,布板和走线还算中规中矩……
BTW: 目前在调USB-device,用官方库,能收到上位机枚举请求,ST却无回应导致枚举失败。排错中也想过时钟问题,但SDIO和USB用的是一个时钟源,前者能干活,后者却有问题。或者USB对时钟质量要求更高?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部