关于STM32软硬件兼容性相关的知识

发布者:RadiantDusk最新更新时间:2021-01-20 来源: eefocus关键字:STM32  软硬件兼容性  芯片引脚 手机看文章 扫描二维码
随时随地手机看文章

Ⅰ、写在前面

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

 

常见问题:

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

 

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

 

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

 

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

 

Ⅱ、本文要点

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

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

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

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

 

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

 

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

 

Ⅲ、硬件兼容性

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

 

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

 

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

 

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

 

 

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

1.STM32F0系列 

 

2.STM32F1系列 

 

3.STM32F2系列 

 

4.STM32F3系列 

 

5.STM32F4系列 

 

6.综上所述 

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

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

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

 

Ⅳ、软件兼容性

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

 

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

1.固件库开发

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

 

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

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

 

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

A.启动文件

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

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

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

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

 

B.初始化配置源代码

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

 

 

2.寄存器开发 

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

截取各个系列USART寄存器:

 

 

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

 

Ⅴ、说明

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

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

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


关键字:STM32  软硬件兼容性  芯片引脚 引用地址:关于STM32软硬件兼容性相关的知识

上一篇:STM32F4_TIM输出PWM波形(可调频率、占空比)
下一篇:读懂ST官方网页,有效获取有用资料

推荐阅读最新更新时间:2024-11-09 19:36

STM32_IIC
1:IIC简介 IIC:(Inter_integrated circuit),两线式串行总线,它是由数据线SDA和时钟SCL构成的串行总线,可发送和接受数据,在CPU与被控IC之间,IC与IC之间进行双向传送,高速IIC总线一般可达400kbps. 一般在51中,没有硬件的IIC,只能用软件加引脚去模拟IIC的通信时序,STM32则一般都有硬件IIC IIC是半双工 通信方式 2:IIC协议 空闲状态 开始信号 停止信号 应答信号 数据的有效性 数据传输 通信过程简述 空闲状态 IIC总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截至状态,即释放总线,由
[单片机]
STM32_IIC
STM32关于各种头文件No such file&nb
1.首先,一定要清晰的了解工程设置路径的含义,为什么要设置这个路径而不是别的?出于什么原因设置的?答:工程设置的路径是在搜索*.h文件。 下图是我的工程路径,其中User文件夹是用来存放我自己需要编写或修改的文件。 我们再看来一下User路径下的文件。其中3个.c文件和2个.h文件都是在官方库的STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_ExamplesSDIO路径下复制过来的。 STM32_EVAL存放着从官方库里边复制过来的 stm32_eval.c stm32_eval.h stm32_eval_sdio_sd.c stm32_eval_sdio_sd
[单片机]
<font color='red'>STM32</font>关于各种头文件No such file&nb
基于STM32的FREERTOS应用的几个常见问题
1、怎样将 FreeRTOS 移植到不同的Cortex-M 内核? 答:若需将 FreeRTOS 移植到正确的Cortex-M 产品,您必须从正确的目录导入 “port.c”文件。例如,若微控制器是带有IAR 工具的 Cortex-M0 内核,则您必须从“FreeRTOS\Source\portable\IAR\ARM_CM0” 获取 port.c。 2、FreeRTOS 使用需要ROM/RAM? 答:这取决于您的编译器、代码架构,以及RTOS 内核配置。一般来说, RTOS 内核本身需要大约 5到 10 K 字节 ROM 空间。 如果创建的线程或队列数增加,RAM 使用量就会上升。 3、怎样设置 CPU 时钟? 答:CPU 时钟
[单片机]
STM32之串口通信
串口通信原理 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹
[单片机]
<font color='red'>STM32</font>之串口通信
STM32 (零)--------STM32介绍
什么是 STM32 STM32,从字面上来理解,ST 是意法半导体,M 是Microelectronics 的缩写,32 表示32 位,合起来理解,STM32 就是指 ST 公司开发的 32 位微控制器。STM32 是以32位为一个单位,同时能处理32位。比如51单片机就是一个同时处理8位的单片机。STM32中外设以4个位确定一个引脚功能。 在如今的 32 位控制器当中,STM32 可以说是最璀璨的新星,大受工程师和市场的青睐,无芯能出其右。 CMSIS构架 时钟 51单片机所有的时间基准都是以唯一的晶振为主。STM32每个引脚使用都需要开启相应的时钟功能。 以控制外设时钟的APB2 外设时钟使能寄存器(RCC_APB
[单片机]
<font color='red'>STM32</font> (零)--------<font color='red'>STM32</font>介绍
STM32-(ADC,DMA,重映射)
STM32的高级功能应用 高级定时器功能框图 时钟源 高级定时器有四个时钟源可以选择: 1.内部时钟CK_INT 内部时钟源CK_INT主要来源于芯片内部,为72M,一般情况下我们都是使用内部时钟。当从模式控制寄存器TIMx_SMCR的SMS位等于000时则使用内部时钟。 2.外部时钟模式1:外部输入引脚TIx(1,2,3,4) 时钟信号输入引脚共有4个,分别是TI(1,2,3,4),及TIM_CH(1,2,3,4)具体使用那一路信号输入引脚,由TIM_CCMRx的位CCxS 配置,其中CCMR1控制TI1/2,CCMR2控制TI3/4. 3.外部时钟模式2:外部触发输入ETR 时钟信号来自定时器的特定输入通道TIMX_ETR
[单片机]
STM32-(ADC,DMA,重映射)
STM32的can2和CAN1竟然有关联?!!!
调试STM32F107的CAN2竟然无法接收。通过与另一个代码对比,终于发现想用CAN2,则必须把CAN1的RCC也配置上,就可以接收了。 上网查了下,21IC给解释http://bbs.21ic.com/icview-542674-1-1.html。手册也懒得看了,总之,CAN2和CAN1是有关联的。对于STM32F407可能也是如此。 如果设置两遍也不行。也是CAN2不能接收。 比如这样设置两遍: RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);
[单片机]
STM32 USB-HID的调试记录
1、使用USB 的鼠标方式进行。HID设备方式,即插即用。在输入端可以看到人体输入端; 2、HID设备,可以使用porthelper调试USB,BUS Hound抓取USB包。 资料参考1: http://www.openedv.com/posts/list/41451.htm 2.1 通过Bus Hound软件可以看到连接成功外设USB设备:(如下图所示) 2.2 鼠标按下后获取的数据,左键、右键还有翻页和空键。 2.3 USB调试器可以发现外接的设备。查找后界面如下。但是无法在接收区接收到数据。 将CC1101和USB-HID通信以及串口结合起来,做了简单的演示功能。 测试条件:PC机使用
[单片机]
<font color='red'>STM32</font> USB-HID的调试记录
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved