很多朋友初学 STM32 的时候,对 STM32 芯片很多相关知识都不是很了解,导致了在学习的路上很迷茫,甚至半途放弃。希望本文的内容对初学的朋友有一定帮助。

常见问题:

  1. 我开发板是 STM32F103ZE芯片,但网上找到的软件工程基于 STM32F103R8芯片的,我能直接将工程下载并调试吗?

  2. 我有 STM32F205R8 的原理图和封装库,但现在需要画 STM32F405RC 芯片的板子,能直接替换使用吗?

以上问题在你阅读本文之后就会得到比较明确的答案。

关于本文的更多详情请往下看。

从本文的标题可以看得出来,主要是站在 “STM32 兼容性” 的角度来分析问题。

在开发 STM32 项目中,往往是软件工程师、硬件工程师相互配合完成一个项目的开发。STM32 兼容性其实是分硬件软件

硬件兼容性:主要考虑的就是不同型号芯片引脚上是否可以通用。

软件兼容性:单纯的从芯片出发考虑问题,和硬件开发相比,软件开发需要考虑的问题就有很多。ST 公司为了让软件开发工程师能很好的移植代码,在软件(库)兼容性上做的就很好,基本上很多芯片都可以相互使用共同的底层代码。

本文就结合 ST 官网最新手册及相关资料,从硬件和软件角度来简单讲述一下 STM32 兼容性的问题,希望对你有所帮助。

【下面内容牵涉到 STM32 芯片数据手册、参考手册,可以下载数据手册查看详情。相关文章:开发 STM32 相关资料下载

硬件兼容性针对的主要是硬件工程师,但作为 STM32 的软件工程师也是有必要了解的。

不管是前面说的用不同芯片的原理图和封装库,还是你从一个项目拷贝部分器件到另一个项目,在得知 STM32 硬件兼容性之后,有很多工作都可以省略。

比如:你前面项目使用 STM32F205R8 设计的 PCB 板子,现在新的项目使用 STM32F405RC,而且外部器件只有很小地方的改动,有很多外设器件和前面项目相同。这时,你的 PCB 很大一部分走线布局都可以不变,这样就不用费尽心思、花费大部分时间从新再次设计那不用修改的部分。

对应硬件工程师来说,开发 STM32 主要就是选型,可以在官网下载芯片选型手册、芯片手册来进行参考:

【STM32】软硬件兼容性问题 - 图1

下面就以 LQFP64 封装为例,将(F0 - F4)不同系列、型号芯片的引脚图进行对比,相信你们看了引脚图,就会明白其实 STM32 大部分芯片(相同封装)是可以兼容的。

1.STM32F0 系列

【STM32】软硬件兼容性问题 - 图2

【STM32】软硬件兼容性问题 - 图3

【STM32】软硬件兼容性问题 - 图4

【STM32】软硬件兼容性问题 - 图5

2.STM32F1 系列

【STM32】软硬件兼容性问题 - 图6

【STM32】软硬件兼容性问题 - 图7

【STM32】软硬件兼容性问题 - 图8

3.STM32F2 系列

【STM32】软硬件兼容性问题 - 图9

【STM32】软硬件兼容性问题 - 图10

4.STM32F3 系列

【STM32】软硬件兼容性问题 - 图11

【STM32】软硬件兼容性问题 - 图12

【STM32】软硬件兼容性问题 - 图13

【STM32】软硬件兼容性问题 - 图14

5.STM32F4 系列

【STM32】软硬件兼容性问题 - 图15

【STM32】软硬件兼容性问题 - 图16

【STM32】软硬件兼容性问题 - 图17

【STM32】软硬件兼容性问题 - 图18

6. 综上所述

以上截图来自 ST 官网最新数据手册,可自行到官网下载。

从上面可以看得出来,大部分相同封装的芯片在引脚上基本上相同。我们虽然是以 LQFP64 封装为例,其它封装也是类似的具有很高的兼容性。

【注意:我这里说的是大部分,不是完全(可能存在略微差异)。因此,在选择芯片型号时请查看对应数据手册。】

查看本文的读者应该大部分都是从事软件开发的工程师,ST 公司推出的芯片在硬件上做了相当好的兼容性,在软件上也不落后,同样做了很好的兼容性。不管你是利用寄存器还是固件库(标准外设库和 HAL 库)开发 STM32,软件的移植都是很方便的。

这里说的软件兼容性,主要从两个方面来说:寄存器 和 固件库:

1. 固件库开发

这里主要考虑固件库函数接口一致性的问题。同一系列的芯片固件库接口都是一样的,跨系列芯片固件库其实 ST 公司也是做得很好,函数接口基本上也差不多相同。

说这么一个实例吧:硬件上,我将 F207 芯片的替换为 F407 芯片;软件上,我将之前 F207 的程序移植到 F407 上依然可以运行。

上面这个实例说明 ST 跨系列的芯片也是可以做到软硬件兼容的。

下面以标准外设库来讲述一下软件的兼容性。

A. 启动文件

同一系列芯片的启动文件在标准库里面一般有几个,为什么有几个呢?原因很简单,芯片资源存在一定的不同,一般是向下兼容的。也就是说大容量芯片资料包含小容量芯片资源。

对比工具 Beyond Compare 介绍、下载、安装、破解与基本使用方法

利用对比工具对 F1 固件库启动文件:

【STM32】软硬件兼容性问题 - 图19

从上面对比情况可以看见,其实中等容量芯片相比大容量芯片资源要少一些,也就是说中等容量芯片可以在大容量芯片中运行。

B. 初始化配置源代码

接触多系列芯片的朋友可能会发现,很多资源初始化配置大同小异,基本上差不多,USART 串口初始化配置源代码各个系列基本都是如下一些参数:

【STM32】软硬件兼容性问题 - 图20

2. 寄存器开发

从软件角度来分析,其兼容性牵涉到底层一点的东西,那就是资源模块的寄存器(偏移地址)。也可以说各个资源模块内容很多相同之处。

截取各个系列 USART 寄存器:

【STM32】软硬件兼容性问题 - 图21

【STM32】软硬件兼容性问题 - 图22

【STM32】软硬件兼容性问题 - 图23

从上面截图可以看见,其模块寄存器基本上差不多。这里最底层对应的上层应用代码兼容性就可以做的很好。

上面说的内容是针对大部分 ST 的 MCU 芯片,当然也不是完全,请根据实际情况来分析是否完全兼容。

看完上面内容之后,应该明白我前面文章提供的软件工程适合哪些芯片。

以上总结仅供参考,若有不对之处,敬请谅解。

我的网站:https://www.strongerhuang.com

https://blog.csdn.net/ybhuangfugui/article/details/52771049