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的时钟速率再分频得到的。

STM32 高系列程序向低系列程序的移植关注点_第1张图片

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

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

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

问题很有可能出现在这里

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

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

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

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

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

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

你可能感兴趣的:(单片机,stm32,嵌入式硬件)