本文禁止转载。
有的时候,为了节约成本,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
暂无评论