打印
[其他ST产品]

关于STM32的SPI外设时钟分频对应的SCK速率

[复制链接]
738|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
SHOPQQ|  楼主 | 2023-6-28 17:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
以STM32F103为例,
经过system_stm32f10x.c文件中的SystemInit()函数之后,这里是指的默认时钟配置如下图所示:


使用特权

评论回复
沙发
SHOPQQ|  楼主 | 2023-6-28 17:19 | 只看该作者
STM32F103的系统框架图如下所示:

使用特权

评论回复
板凳
SHOPQQ|  楼主 | 2023-6-28 17:20 | 只看该作者
可见:SPI1是在挂APB2上的,SPI2是挂在APB1上的。

使用特权

评论回复
地板
SHOPQQ|  楼主 | 2023-6-28 17:20 | 只看该作者
SPI的波特率控制有8种分频可选
SPI控制寄存器 1(SPI_CR1)



上述的fPCLK对于SPI1来说是fPCLK2,对于SPI2来说是fPCLK1。
系统默认配置是fPCLK2=72MHz,fPCLK1=36MHz。

使用特权

评论回复
5
SHOPQQ|  楼主 | 2023-6-28 17:20 | 只看该作者
标准库中SPI_BaudRatePrescaler配置项可选如下:

#define SPI_BaudRatePrescaler_2         ((uint16_t)0x0000)
#define SPI_BaudRatePrescaler_4         ((uint16_t)0x0008)
#define SPI_BaudRatePrescaler_8         ((uint16_t)0x0010)
#define SPI_BaudRatePrescaler_16        ((uint16_t)0x0018)
#define SPI_BaudRatePrescaler_32        ((uint16_t)0x0020)
#define SPI_BaudRatePrescaler_64        ((uint16_t)0x0028)
#define SPI_BaudRatePrescaler_128       ((uint16_t)0x0030)
#define SPI_BaudRatePrescaler_256       ((uint16_t)0x0038)

使用特权

评论回复
6
SHOPQQ|  楼主 | 2023-6-28 17:20 | 只看该作者
SPI最大能达到的速率是fPCLK/2,也就是SPI1最大能达到72M,SPI2最大能达到36M。

举例,当SPI_BaudRatePrescaler项配置为SPI_BaudRatePrescaler_64,SPI1是1.125MHz,SPI2是0.5625MHz。该结论已实验,通过示波器量取SCK信号验证。

使用特权

评论回复
7
Clyde011| | 2024-1-23 10:24 | 只看该作者

在板的边缘上照常制作整个电镀通孔。

使用特权

评论回复
8
万图| | 2024-1-23 12:20 | 只看该作者

在交流电频率一定情况下,电感量越大,其对交流电阻碍能力越大

使用特权

评论回复
9
Uriah| | 2024-1-23 13:23 | 只看该作者

然后焊接到更大的PCB上

使用特权

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

本版积分规则

9

主题

183

帖子

0

粉丝