STM32F103的APB1vivado 最大时钟频率率最大为多少

21ic官方微信-->
后使用快捷导航没有帐号?
ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU
请完成以下验证码
查看: 7313|回复: 8
STM32的SPI时钟最快多少?
&&未结帖(20)
主题帖子积分
实习生, 积分 18, 距离下一级还需 32 积分
实习生, 积分 18, 距离下一级还需 32 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 18, 距离下一级还需 32 积分
实习生, 积分 18, 距离下一级还需 32 积分
我看手册,最快应该是cpu频率的一半,36Mhz,手册内容如下:
Select the BR[2:0] bits to define the serial clock baud rate (see SPI_CR1 register).
Bits 5:3 BR[2:0]: Baud rate control
000: fPCLK/2
001: fPCLK/4
010: fPCLK/8
011: fPCLK/16
100: fPCLK/32
101: fPCLK/64
110: fPCLK/128
111: fPCLK/256。
但是看到这里说,最快是18Mhz& &
还有,为什么NXP的LPC17xx系列的SPI时钟最高只能设置到cpu时钟的8分之一(见图)?这样的话,100Mhz的主频也就是12.5M而已。
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子积分
主题帖子积分
专家等级:结帖率:26%打赏:0.00受赏:12.00
主题帖子积分
我看手册,最快应该是cpu频率的一半,36Mhz,手册内容如下:
Select the BR[2:0] bits to define the serial clock baud rate (see SPI_CR1 register).
Bits 5:3 BR[2:0]: Baud rate control
000: fPCLK/2
001: fPCL ...
porco_rosso 发表于
1)fPCLK不是CPU频率,而是外设总线的频率。
2)STM32的SPI时钟最快是18MHz,这是芯片设计时决定的。
3)STM32的SPI1在APB2上,SPI2和SPI3在APB1上,APB1的最高频率是36MHz,APB2的最高频率是72MHz;因此,为了不超过最高18MHz的设计要求,配置SPI2和SPI3时可以使用fPCLK/2的选项,而配置SPI1时则不能使用fPCLK/2的选项。
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
实习生, 积分 18, 距离下一级还需 32 积分
实习生, 积分 18, 距离下一级还需 32 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 18, 距离下一级还需 32 积分
实习生, 积分 18, 距离下一级还需 32 积分
1)fPCLK不是CPU频率,而是外设总线的频率。
2)STM32的SPI时钟最快是18MHz,这是芯片设计时决定的。
3)STM32的SPI1在APB2上,SPI2和SPI3在APB1上,APB1的最高频率是36MHz,APB2的最高频率是72MHz;因此,为了 ...
香水城 发表于
可是我在手册上并没有看到SPI最快是18Mhz这样的说法,我看的是ReferenceManual。
主题帖子积分
主题帖子积分
专家等级:结帖率:26%打赏:0.00受赏:12.00
主题帖子积分
可是我在手册上并没有看到SPI最快是18Mhz这样的说法,我看的是ReferenceManual。
porco_rosso 发表于
Reference Manual 只讲功能和操作方式,量化的指标在Datasheet中:
本帖子中包含更多资源
才可以下载或查看,没有帐号?
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
实习生, 积分 18, 距离下一级还需 32 积分
实习生, 积分 18, 距离下一级还需 32 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 18, 距离下一级还需 32 积分
实习生, 积分 18, 距离下一级还需 32 积分
本帖最后由 porco_rosso 于
14:44 编辑
Reference Manual 只讲功能和操作方式,量化的指标在Datasheet中:
香水城 发表于
多谢,多谢,分数给你了
额,分数不够
主题帖子积分
中级技术员, 积分 174, 距离下一级还需 126 积分
中级技术员, 积分 174, 距离下一级还需 126 积分
主题帖子积分
专家等级:结帖率:73%
主题帖子积分
中级技术员, 积分 174, 距离下一级还需 126 积分
中级技术员, 积分 174, 距离下一级还需 126 积分
有人试过SPI1跑36Mhz吗?
主题帖子积分
高级技术员, 积分 813, 距离下一级还需 187 积分
高级技术员, 积分 813, 距离下一级还需 187 积分
主题帖子积分
专家等级:结帖率:69%
主题帖子积分
高级技术员, 积分 813, 距离下一级还需 187 积分
高级技术员, 积分 813, 距离下一级还需 187 积分
楼上 都说最快是18M了呀
主题帖子积分
助理工程师, 积分 1483, 距离下一级还需 517 积分
助理工程师, 积分 1483, 距离下一级还需 517 积分
主题帖子积分
专家等级:结帖率:93%
主题帖子积分
助理工程师, 积分 1483, 距离下一级还需 517 积分
助理工程师, 积分 1483, 距离下一级还需 517 积分
看样子, 18M 还不够楼主的要求吧,
据说, 有人把 72MHz 升高到 120MHZ, CPU 也能工作。
要不楼主自己测试一下, 然后把测试结果公布出来, 供大家参考。
主题帖子积分
高级工程师, 积分 5658, 距离下一级还需 2342 积分
高级工程师, 积分 5658, 距离下一级还需 2342 积分
主题帖子积分
专家等级:结帖率:55%打赏:0.00受赏:2.00
主题帖子积分
高级工程师, 积分 5658, 距离下一级还需 2342 积分
高级工程师, 积分 5658, 距离下一级还需 2342 积分
还有,为什么NXP的LPC17xx系列的SPI时钟最高只能设置到cpu时钟的8分之一(见图)?这样的话,100Mhz的主频也就是12.5M而已。
使用其SSP,最高50M。
荣誉元老奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
涓涓之细流
发帖类勋章
时间类勋章
技术奇才奖章
人才类勋章
社区建设奖章
等级类勋章
欢快之小溪
发帖类勋章
技术导师奖章
人才类勋章
突出贡献奖章
等级类勋章
沉静之湖泊
发帖类勋章STM32普通定时器(TIM2-7)的时钟源疑问 - CSDN博客
STM32普通定时器(TIM2-7)的时钟源疑问
STM32F103的APB1最大总线时钟是AHB总线时钟的1/2,最大为36MHz,在用ST的库函数(v2.0)的时候,TIM2(普通定时器)的时钟频率为72MHz,不知道原因何在?
【问题分析】
STM32中有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。
下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图:
从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。
下面以定时器2~7的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。
假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值;当预分频系数=1时,APB1=36MHz,TIM2~7的时钟频率=36MHz(倍频器不起作用);当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM2~7的时钟频率=36MHz。
有人会问,既然需要TIM2~7的时钟频率=36MHz,为什么不直接取APB1的预分频系数=1?答案是:APB1不但要为TIM2~7提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时,TIM2~7仍能得到较高的时钟频率。
再举个例子:当AHB=72MHz时,APB1的预分频系数必须大于2,因为APB1的最大频率只能为36MHz。如果APB1的预分频系数=2,则因为这个倍频器,TIM2~7仍然能够得到72MHz的时钟频率。能够使用更高的时钟频率,无疑提高了定时器的分辨率,这也正是设计这个倍频器的初衷。
sysclock/(TIM_Prescaler+1) = 72MHz/36000 = 2000Hz
1/2000Hz = 0.5ms
0.5ms * 100 = 50ms
TIM_TimeBaseInitTypeDef
TIM_TimeBaseS
TIM_OCInitTypeDef
TIM_OCInitS
TIM_DeInit( TIM2);//复位TIM2定时器
/* TIM2 configuration */
TIM_TimeBaseStructure.TIM_Period = 100; //50ms定时时间,单位ms
TIM_TimeBaseStructure.TIM_Prescaler = 35999;//频率2kHz
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; // 时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
//计数方向向上计数
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
/* Clear TIM2 update pending flag[清除TIM2溢出中断标志] */
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
/* Enable TIM2 Update interrupt [TIM2溢出中断允许]*/
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
//关闭定时器2,通过串口接收事件启动该定时器
TIM_Cmd(TIM2, DISABLE);
/******************************************************************/
void TIM_Configuration(void)
TIM_TimeBaseInitTypeDef TIM_BaseInitS
TIM_OCInitTypeDef TIM_OCInitS
//TIM1 使用内部时钟
//TIM_InternalClockConfig(TIM1);
//TIM1基本设置
//设置预分频器分频系数71,即APB2=72M, TIM1_CLK=72/72=1MHz
//TIM_Period(TIM1_ARR)=1000,计数器向上计数到1000后产生更新事件,计数值归零
//向上计数模式
//TIM_RepetitionCounter(TIM1_RCR)=0,每次向上溢出都产生更新事件
TIM_BaseInitStructure.TIM_Period = 1000;
TIM_BaseInitStructure.TIM_Prescaler = 71;
TIM_BaseInitStructure.TIM_ClockDivision = 0;
TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_BaseInitStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM1, &TIM_BaseInitStructure);
//清中断,以免一启用中断后立即产生中断
TIM_ClearFlag(TIM1, TIM_FLAG_Update);
//使能TIM1中断源
TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE);
//TIM1总开关:开启
TIM_Cmd(TIM1, ENABLE);
本文已收录于以下专栏:
相关文章推荐
PX4飞控中利用EKF估计姿态角代码详解PX4飞控中主要用EKF算法来估计飞行器三轴姿态角,具体c文件在px4\Firmware\src\modules\attitude_estimator_ekf\...
上午想要用Timer10做相对精确的延时功能,但是用示波器发现实际延时数值总是只有一半,百思不得其解。
仔细查阅各处资料结合实际研究后对stm32f407的14个定时器的时钟做一个总结:
STM32中定时器的时钟源
/bbs/dpj-34527-1.html
(出处: 单片机论坛)
STM32中有多达8个定时器,其中TIM1和TIM8是...
STM32F103的APB1最大总线时钟是AHB总线时钟的1/2,最大为36MHz,在用ST的库函数(v2.0)的时候,TIM2(普通定时器)的时钟频率为72MHz,不知道原因何在?
void TIM_ResetCounter(TIM_TypeDef * TIMx)
TIMx-&CNT = 0;
void TIM2_Delay_ms(unsigned int cm...
在STM32F1系列中,其中定时器TIM1、TIM8是挂在在APB2上的,而定时器TIM2、3、4是关在在APB1上的。
在工程中我们一般设置APB1CLK = 36M  APB2CLK = 72M
在下面的测试程序中,如果将Init_CLK()函数中的 CLK_CKDIVR |= 0x08;去掉’|‘,则TIM1的功能实现跟预设定相同(10ms中断一次),但是TIM2的PWM频率就变...
STM32F4时钟设置分析
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.
STM32F4的系统时钟非常重要,涉及到整个系统的运行结果,无论是什么操作,都需要时钟信号,不同型号的微控制器的默认系统时钟配置是不同的,这里,给出两种配置STM32F407系统时钟的方法。
void RCC_Configuration(void)
  RCC_DeInit();//将外设 RCC寄存器重设为缺省值
  RCC_HSICmd(ENABLE);//使能HSI  ...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)STM32之时钟频率和定时器时钟讲解
> STM32之时钟频率和定时器时钟讲解
STM32之时钟频率和定时器时钟讲解
********************************本学习笔记基于STM32固件库V3.0使用芯片型号:STM32F103开发环境:MDK********************************本文引用地址:第一课 时钟频率STM32F103内部8M的内部震荡,经过倍频后最高可以达到72M。目前TI的M3系列芯片最高频率可以达到80M。在stm32固件库3.0中对时钟频率的选择进行了大大的简化,原先的一大堆操作都在后台进行。系统给出的函数为SystemInit()。但在调用前还需要进行一些宏定义的设置,具体的设置在system_stm32f10x.c文件中。文件开头就有一个这样的定义://#define SYSCLK_FREQ_HSEHSE_Value//#define SYSCLK_FREQ_20MHz //#define SYSCLK_FREQ_36MHz //#define SYSCLK_FREQ_48MHz //#define SYSCLK_FREQ_56MHz #define SYSCLK_FREQ_72MHz ST 官方推荐的外接晶振是 8M,所以库函数的设置都是假定你的硬件已经接了 8M 晶振来运算的.以上东西就是默认晶振 8M 的时候,推荐的 CPU 频率选择.在这里选择了:#define SYSCLK_FREQ_72MHz 也就是103系列能跑到的最大值72M然后这个 C文件继续往下看#elif defined SYSCLK_FREQ_72MHzconst uint32_t SystemFrequency= SYSCLK_FREQ_72MHz;const uint32_t SystemFrequency_SysClk = SYSCLK_FREQ_72MHz;const uint32_t SystemFrequency_AHBClk = SYSCLK_FREQ_72MHz;const uint32_t SystemFrequency_APB1Clk = (SYSCLK_FREQ_72MHz/2);const uint32_t SystemFrequency_APB2Clk = SYSCLK_FREQ_72MHz;这就是在定义了CPU跑72M的时候,各个系统的速度了.他们分别是:硬件频率,系统时钟,AHB总线频率,APB1总线频率,APB2总线频率.再往下看,看到这个了:#elif defined SYSCLK_FREQ_72MHzstatic void SetSysClockTo72(void);这就是定义 72M 的时候,设置时钟的函数.这个函数被 SetSysClock ()函数调用,而SetSysClock ()函数则是被 SystemInit()函数调用.最后 SystemInit()函数,就是被你调用的了所以设置系统时钟的流程就是:首先用户程序调用 SystemInit()函数,这是一个库函数,然后 SystemInit()函数里面,进行了一些寄存器必要的初始化后,就调用 SetSysClock()函数. SetSysClock()函数根据那个#define SYSCLK_FREQ_72MHz
的宏定义,知道了要调用SetSysClockTo72()这个函数,于是,就一堆麻烦而复杂的设置~!@#$%^然后,CPU跑起来了,而且速度是 72M. 虽然说的有点累赘,但大家只需要知道,用户要设置频率,程序中就做的就两个事情:第一个: system_stm32f10x.c 中 #define SYSCLK_FREQ_72MHz 第二个:调用SystemInit()STM32中定时器的时钟源STM32中有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图:从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。下面以定时器2~7的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值;当预分频系数=1时,APB1=36MHz,TIM2~7的时钟频率=36MHz(倍频器不起作用);当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM2~7的时钟频率=36MHz。有人会问,既然需要TIM2~7的时钟频率=36MHz,为什么不直接取APB1的预分频系数=1?答案是:APB1不但要为TIM2~7提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时,TIM2~7仍能得到较高的时钟频率。再举个例子:当AHB=72MHz时,APB1的预分频系数必须大于2,因为APB1的最大频率只能为36MHz。如果APB1的预分频系数=2,则因为这个倍频器,TIM2~7仍然能够得到72MHz的时钟频率。能够使用更高的时钟频率,无疑提高了定时器的分辨率,这也正是设计这个倍频器的初衷。
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一stm32F207 APB1输出最大时钟给TIMER3问题,求大神解决 - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 1862|回复: 13
stm32F207 APB1输出最大时钟给TIMER3问题,求大神解决
在线时间2 小时
主题帖子好友
新手上路, 积分 22, 距离下一级还需 28 积分
新手上路, 积分 22, 距离下一级还需 28 积分
大家好,本人最近在编写F207定时器时(使用timer3,采用APB1总线).
问题描述:
(1)寄存器配置情况:
即此进,我对RCC_CFGR,不做任何配置(APB1:即PPRE1[2:0]为“000”。AHB:即HPRE[3:0],PLL作为系统时钟输出为120M)
配置TIMER3,
120分频,溢出中断次数为1000,中断产生周期是1ms(APB1,未分频)。
(3)疑问:
按照芯片手册
PLLCLK = 120M; AHB 未分频;APBX未分频,从APBX出来的结果应该是120M,但由于APB1最大为30M,那么其输出到定时器最大时钟
应该最多为60M?
可是我查看溢出中断的波形分明为1ms,计数1000次,120分频计算的结果是120M.
请问如何达到120M, 给APB1 TIMER???
在线时间213 小时
ST金币2431
主题帖子好友
金牌会员, 积分 3500, 距离下一级还需 1500 积分
金牌会员, 积分 3500, 距离下一级还需 1500 积分
本帖最后由 Dylan疾风闪电 于
09:05 编辑
先上图,借cube模拟一个时钟配置:
1.jpg (2.01 MB, 下载次数: 3)
09:01 上传
从图中可以看到,APB1总线定时器的最高时钟频率为60MHz,即TIMx_CLK(max)=60MHz。
那么接下来就是TIMx_PSC分频后会产生一个 n * TIMx_CLK。
在线时间213 小时
ST金币2431
主题帖子好友
金牌会员, 积分 3500, 距离下一级还需 1500 积分
金牌会员, 积分 3500, 距离下一级还需 1500 积分
接2楼,APB1 Timer 时钟取最高60MHz,TIMER3&&120分频,溢出中断次数为1000。
F=(60M*2)/(119+1)/(999+1)=1kHz
在线时间16 小时
主题帖子好友
中级会员, 积分 306, 距离下一级还需 194 积分
中级会员, 积分 306, 距离下一级还需 194 积分
在线时间772 小时
ST金币4867
主题帖子好友
PLLCLK = 120M,一个上升沿,一个下降沿,应该要2个时钟周期了吧。
在线时间2 小时
主题帖子好友
新手上路, 积分 22, 距离下一级还需 28 积分
新手上路, 积分 22, 距离下一级还需 28 积分
先上图,借cube模拟一个时钟配置:
从图中可以看到,APB1总线定时器的最高时钟频率为60MHz,即TIMx_CLK(ma ...
非常感谢您的回复,因为我司网络屏蔽了上传功能,无法上传图片。
您的这张图非常详细,再次感谢:
& && & 在图解中可以看到APB1总线出来的最高频率为30MHZ,2倍以后,最大为60MZ,图示明确指出APB1定时器的最高输入时钟频率为60M。这一点我们的理解是一样的。
& && & 我的重点问题是:根据我的调试计算,APB1的定时器时钟最高可达120M,与最大60M(30M*2=60M)相矛盾。此外,您说X2倍=120M,其实,从APB1出来的30M已经X2了,所以此处依然令人困扰,烦请解释呀。多谢谢了。
在线时间2 小时
主题帖子好友
新手上路, 积分 22, 距离下一级还需 28 积分
新手上路, 积分 22, 距离下一级还需 28 积分
接2楼,APB1 Timer 时钟取最高60MHz,TIMER3&&120分频,溢出中断次数为1000。
F=(60M*2)/(119+1)/(999+1 ...
TIMx_PSC=120;这个是预分频参数;重计数周期为1000,根据输出波形发现是1
根据计算公式如下:
Tout=((arr+1)*(psc+1))/Tclk 得出Tclk = 120M;
看您的回复中
F=(60M*2)/(119+1)/(999+1 ...
我有点不明白60M为什么还要再乘以2;因为系统乘2,在APB1输出到TIMER3的时候,已经做过了。
在线时间263 小时
ST金币2484
主题帖子好友
金牌会员, 积分 3887, 距离下一级还需 1113 积分
金牌会员, 积分 3887, 距离下一级还需 1113 积分
如果对这个时钟不太清楚的话,我建议你去用CubeMX的那个时钟配置界面去配置。或者ST官方的有一个Excel+pdf的时钟配置工具,您可以看看呢。
在线时间2 小时
主题帖子好友
新手上路, 积分 22, 距离下一级还需 28 积分
新手上路, 积分 22, 距离下一级还需 28 积分
如果对这个时钟不太清楚的话,我建议你去用CubeMX的那个时钟配置界面去配置。或者ST官方的有一个Excel+pdf ...
谢谢指点,不过,我的疑问仅在于最大输出为60M,到了TIM3后,为何TIM3
在线时间2 小时
主题帖子好友
新手上路, 积分 22, 距离下一级还需 28 积分
新手上路, 积分 22, 距离下一级还需 28 积分
如果对这个时钟不太清楚的话,我建议你去用CubeMX的那个时钟配置界面去配置。或者ST官方的有一个Excel+pdf ...
谢谢指点,不过,我的疑问仅在于最大输出为60M,到了TIM3后,为何TIM3的时钟源变成了120M???
站长推荐 /2
,同时大家也可以下载电子版学习
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered by}

我要回帖

更多关于 spi最大时钟频率 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信