STM32 高系列程序向低系列程序的移植关注点

本文禁止转载。

有的时候,为了节约成本,MCU需要更换,程序需要移植

本文主要介绍了STM32 F4系列程序移植到STM32 F0 系列中,SPI移植的一个关注点

首先,就是时钟问题。

F4最高是200MHZ的时钟,F0最高是48MHZ的时钟.这里的时钟,是指的系统时钟,SYSTEM CLOCK

SPI接口通常是挂在APB1或者APB2上的

通常,APB1的时钟速率要比APB2的时钟速率要高

F4: APB1的时钟是系统时钟的一半,即100MHZ.APB2的时钟是系统时钟的四分之一,即50MHZ

F0:APB1和APB2都是1分频系统时钟,即都是48MHZ

SPI的时钟速率,是根据APB1或者APB2的时钟速率再分频得到的。

假设,在F4系列上,SPI接口是挂在APB1上的,是32分频,及100M/32

移植到F0系列上,也是32分频的话,就会变成48M/32 

这时候你会发现,移植的代码没有问题,逻辑也是保持一致的,为什么SPI的时序就是不对 

问题很有可能出现在这里

此外,由于MCU的系统时钟变低,SPI中的读写时序也变了,需要延迟更大的时间,以确保SPI读写正确。

比如,以SPI 的CS片选信号为例

在200MHZ的主频下,CS可以很快的拉低,并保持稳定

48MHZ主频下,CS拉低速度就会变慢(也就是说时间周期变长了)

此刻,需要延迟时间扩大一点,比如,200MHZ的时候只需要延迟10us就可以保证时序稳定,48MHZ的时候需要延迟20us确保时序稳定。

同理,定时器也是采用的系统时钟作为分频。所以移植的时候,确保定时器的时钟更改分频系数,确保定时准确性。

版权声明:本文为CSDN博主「sgmcy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sgmcy/article/details/121509562

生成海报
点赞 0

sgmcy

我还没有学会写个人说明!

暂无评论

相关推荐

RT-Thread Studio移植LAN8720A驱动

RTT网络协议栈驱动移植(霸天虎) 1、新建工程 ​ 工程路径不含中文路径名,工程名用纯英文不含任何符号。 2、用CubeMx配置板子外设 2.1、配置时钟 ​ 按照自己板子配置相应时钟。

【STM32Cube笔记】12-配置外部中断

【STM32Cube笔记】系列文章目录 1-基于STM32的VSCode入门级教程前言 2-STM32Cube安装教程 3-STM32CubeIDE汉化 4-STM32Cube配置时钟设置 5-跑马灯引脚配置 6-Cortex-M7内核基本配

stm32cubemx+HAL+串口接收中断

stm32cubemxHAL串口接收中断 在cubemx配置完串口和global interrupt后需要在keil中添加如下代码。 第一步:在main函数中添加接收中断标志位开启函数 HAL_UART_Receive_IT