[其他ST产品] 关于STM32的SPI外设时钟分频对应的SCK速率

[复制链接]
1246|14
 楼主| SHOPQQ 发表于 2023-6-28 17:19 | 显示全部楼层 |阅读模式
以STM32F103为例,
经过system_stm32f10x.c文件中的SystemInit()函数之后,这里是指的默认时钟配置如下图所示:
83247649bfb21d6198.png

 楼主| SHOPQQ 发表于 2023-6-28 17:19 | 显示全部楼层
STM32F103的系统框架图如下所示:

56159649bfb35bdf1f.png
 楼主| SHOPQQ 发表于 2023-6-28 17:20 | 显示全部楼层
可见:SPI1是在挂APB2上的,SPI2是挂在APB1上的。
 楼主| SHOPQQ 发表于 2023-6-28 17:20 | 显示全部楼层
SPI的波特率控制有8种分频可选
SPI控制寄存器 1(SPI_CR1)

75722649bfb4fb6202.png

上述的fPCLK对于SPI1来说是fPCLK2,对于SPI2来说是fPCLK1。
系统默认配置是fPCLK2=72MHz,fPCLK1=36MHz。
 楼主| 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)
 楼主| 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信号验证。
Clyde011 发表于 2024-1-23 10:24 | 显示全部楼层

在板的边缘上照常制作整个电镀通孔。
万图 发表于 2024-1-23 12:20 | 显示全部楼层

在交流电频率一定情况下,电感量越大,其对交流电阻碍能力越大
Uriah 发表于 2024-1-23 13:23 | 显示全部楼层

然后焊接到更大的PCB上
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

183

帖子

0

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