[APM32F4]

APM32F103代码移植到APM32F402芯片

[复制链接]
623|10
手机看帖
扫描二维码
随时随地手机跟帖
gdygn007|  楼主 | 2025-4-19 15:44 | 显示全部楼层 |阅读模式
本帖最后由 gdygn007 于 2025-4-19 15:44 编辑

#申请原创# #技术资源#

概述   


APM32F402系列是极海最新推出的工业级高性能高性价比MCU。采用55nm工艺制程,具备出色运算处理性能、大容量存储空间,可满足多样化应用需求,可以说是APM32F103系列的升级版本(加量不加价)。前段时间有幸收到原厂寄来的F402 Demo板,原厂介绍兼容性极高,趁着今天有空使用官方1.8版本的F103 SDK进行移植研究一下。(注:本次操作是基于官方1.8版本的F103 SDK,移植部分F402底层文件,实现在F402 demo运行原来F103 demo的功能,旨在模拟客户产品使用F103的芯片,如何在最小改动代码条件下实现平替到F402芯片平台
以下是原厂提供的coremark分数参考:
5618868034df092537.png

APM32F402 Demo板实物图

9963668034e0ab7677.png


实现步骤


1、本次操作是基于《USART_Printf》例程进行移植验证,因为调试很多外设和开发应用功能都需要用到串口进行打印信息,所以小编一般开发项目时都会把printf打印环境先搭建好。
7497868034e296528c.png
2、打开工程后,根据F402 demo板原理图,修改LED对应的引脚
9719368034e3a37a88.png

2375468034e455ffad.png
3、找到F402 SDK里面的pack安装,记住pack安装路径,后面会用到。(很重要

1514068034e57d3967.png
4、安装pack成功后,keil的“Options for Target”里面的“Device”选择APM32F402RB。
9841268034e6738799.png

5、在 Target 中可以开启 FPU 使能

2015868034e770c39b.png
6、点击“Rebuild”,这时候你会发现一堆的error。别担心,接下来才是正式开始。

8680068034ea867bba.png
7、打开F402 SDK包core_cm4.h等文件夹,路径在APM32F402_403_SDK_V1.0.1\Libraries\CMSIS\Include,把下图圈出来的几个文件复制到F103的SDK包CMSIS文件夹,重复的选择替换,路径在APM32F10x_SDK_V1.8\Libraries\CMSIS\Include
3667268034ecfd53f4.png
9064268034eda8a531.png
8、在 apm32f10x.h 文件中将#include "core_cm3.h"更改为#include "core_cm4.h"

8003968034ee974b0f.png

9、将 apm32f10x.h 文件中添加__CM4_REV 的宏定义, 添加__FPU_PRESENT 的宏定义,__MPU_PRESENT 赋值改成 1.
3733768034f0444fda.png
10、SystemInit 时钟初始化中添加 FPU 的使能判断

4530668034f145ffbb.png

11、重新编译,可以编译正常了。

2094268034f25618c4.png
12、板子通过Jlink连接到电脑后,准备进行烧录测试,点击“Settings”,会提示APM32F402RB是unknow,需要手动选择。

1807168034f31f3136.png
3076868034f3b14b2f.png


13、小编一开始以为是Jlink版本比较低,所以更新了最新的Jlink 8.26版本,结果还是提示unkonw,只能手动添加F402到Jlink了。

8830268034f4e3268b.png

14、打开前面讲的F402 pack安装路径,找到FLM文件,参考网上教程复制到Jlink安装包下面

9649068034f63b7966.png
1831368034f6bcb340.png

15、在JlinkDevices.xml文件添加F402相关信息,修改前记得先备份原来的xml文件
<Device>   
<ChipInfo Vendor="Geehy" Name="APM32F402RB" Core="JLINK_CORE_CORTEX_M4" WorkRAMAddr="0x20000000" WorkRAMSize="0x1000"/>      <FlashBankInfo Name="Internal Flash" BaseAddr="0x08000000" MaxSize="0x00020000" Loader="Devices/Geehy/APM32F402_128.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>


249668034fccc81a4.png


16、重新启动keil,发现还是不行。打开J-Flash发现选择APM32F402RB,可以通过J-Flash烧录,但不能通过keil烧录和调试。
54635680353d741913.png

17、在C:\Users\用户名\AppData\Roaming\SEGGER\jlinkdevices\devices\Geehy路径下添加FLM
8367568035023266a7.png

18、在刚才FLM文件夹上一层路径,添加自定义的xml文件,并填写以下内容

<Device>
<ChipInfo Vendor="Geehy" Name="APM32F402RB" Core="JLINK_CORE_CORTEX_M4" WorkRAMAddr="0x20000000" WorkRAMSize="0x1000"/><FlashBankInfo Name="Flash Block" BaseAddr="0x08000000" MaxSize="0x00020000" Loader="Devices/Geehy/APM32F402_128.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>

677796803504fd1f40.png
19、重启keil,按照原来的提示,输入“apm32F402”,会有对应型号的选择。(这里为了方便演示修改过402名字,因为之前的点击OK后就自动保存了,后面自动会匹配)
8245168035067cc17d.png
20、添加烧录FLM到keil,文件路径参考上文pack包按照后的路径

9478868035081c880d.png
26276680350ab892be.png

21、至此,可以通过keil正常烧录和调试代码了,下图是串口打印效果。
9169680350c598ad2.png


总结   

通过这次测试验证了F402对F103的兼容性确实很高。在国产MCU芯片这么卷的行情下,极海结合客户痛点对自家芯片进行性能提升来提高竞争力,期待未来更多新品的推出。

使用特权

评论回复
星云避风港| | 2025-4-20 08:32 | 显示全部楼层
MCU的内核由Cortex-M3升级到了Cortex-M4内核了。

使用特权

评论回复
gdygn007|  楼主 | 2025-4-20 14:48 | 显示全部楼层
星云避风港 发表于 2025-4-20 08:32
MCU的内核由Cortex-M3升级到了Cortex-M4内核了。

是的呀

使用特权

评论回复
梦塑者| | 2025-4-22 16:07 | 显示全部楼层
这个移植好棒啊!
这个性能有吸引力了
我也想更新到F402的硬件上来了

使用特权

评论回复
天体书记| | 2025-4-22 16:54 | 显示全部楼层
这么下来,感觉M3没有啥意义了。
不知道价格现在还差多少?

使用特权

评论回复
gdygn007|  楼主 | 2025-4-22 22:25 | 显示全部楼层
天体书记 发表于 2025-4-22 16:54
这么下来,感觉M3没有啥意义了。
不知道价格现在还差多少?

价格欢迎咨询广州汇昕微

使用特权

评论回复
gdygn007|  楼主 | 2025-4-22 22:26 | 显示全部楼层
梦塑者 发表于 2025-4-22 16:07
这个移植好棒啊!
这个性能有吸引力了
我也想更新到F402的硬件上来了

马上就推开来了

使用特权

评论回复
jobszheng| | 2025-4-25 19:17 | 显示全部楼层
我也在适用APM32F407VG系列

使用特权

评论回复
lemonboard| | 2025-4-26 20:05 | 显示全部楼层
底层代码应该是类似的吧!
需要把驱动库更新一下

使用特权

评论回复
gdygn007|  楼主 | 2025-4-27 10:20 | 显示全部楼层
lemonboard 发表于 2025-4-26 20:05
底层代码应该是类似的吧!
需要把驱动库更新一下

大部分类似,也有些外设有差异。如F103 CAN和USB只能二选一,F402独立分开

使用特权

评论回复
lemonboard| | 2025-4-27 10:59 | 显示全部楼层
gdygn007 发表于 2025-4-27 10:20
大部分类似,也有些外设有差异。如F103 CAN和USB只能二选一,F402独立分开

我使用的是APM32F103CB,其有两个CAN。
所以,我的USB和CAN可以同时使用

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

13

帖子

1

粉丝