本帖最后由 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分数参考:
APM32F402 Demo板实物图
实现步骤
1、本次操作是基于《USART_Printf》例程进行移植验证,因为调试很多外设和开发应用功能都需要用到串口进行打印信息,所以小编一般开发项目时都会把printf打印环境先搭建好。
2、打开工程后,根据F402 demo板原理图,修改LED对应的引脚
3、找到F402 SDK里面的pack安装,记住pack安装路径,后面会用到。(很重要)
4、安装pack成功后,keil的“Options for Target”里面的“Device”选择APM32F402RB。
5、在 Target 中可以开启 FPU 使能
6、点击“Rebuild”,这时候你会发现一堆的error。别担心,接下来才是正式开始。
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
8、在 apm32f10x.h 文件中将#include "core_cm3.h"更改为#include "core_cm4.h"
9、将 apm32f10x.h 文件中添加__CM4_REV 的宏定义, 添加__FPU_PRESENT 的宏定义,__MPU_PRESENT 赋值改成 1.
10、SystemInit 时钟初始化中添加 FPU 的使能判断
11、重新编译,可以编译正常了。
12、板子通过Jlink连接到电脑后,准备进行烧录测试,点击“Settings”,会提示APM32F402RB是unknow,需要手动选择。
13、小编一开始以为是Jlink版本比较低,所以更新了最新的Jlink 8.26版本,结果还是提示unkonw,只能手动添加F402到Jlink了。
14、打开前面讲的F402 pack安装路径,找到FLM文件,参考网上教程复制到Jlink安装包下面
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>
16、重新启动keil,发现还是不行。打开J-Flash发现选择APM32F402RB,可以通过J-Flash烧录,但不能通过keil烧录和调试。
17、在C:\Users\用户名\AppData\Roaming\SEGGER\jlinkdevices\devices\Geehy路径下添加FLM
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>
19、重启keil,按照原来的提示,输入“apm32F402”,会有对应型号的选择。(这里为了方便演示修改过402名字,因为之前的点击OK后就自动保存了,后面自动会匹配)
20、添加烧录FLM到keil,文件路径参考上文pack包按照后的路径
21、至此,可以通过keil正常烧录和调试代码了,下图是串口打印效果。
总结
通过这次测试验证了F402对F103的兼容性确实很高。在国产MCU芯片这么卷的行情下,极海结合客户痛点对自家芯片进行性能提升来提高竞争力,期待未来更多新品的推出。
|