打印
[APM32F4]

APM32F103代码移植到APM32F402芯片

[复制链接]
354|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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芯片这么卷的行情下,极海结合客户痛点对自家芯片进行性能提升来提高竞争力,期待未来更多新品的推出。

使用特权

评论回复
沙发
星云避风港| | 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的硬件上来了

使用特权

评论回复
5
天体书记| | 2025-4-22 16:54 | 只看该作者
这么下来,感觉M3没有啥意义了。
不知道价格现在还差多少?

使用特权

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

价格欢迎咨询广州汇昕微

使用特权

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

马上就推开来了

使用特权

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

本版积分规则

6

主题

12

帖子

1

粉丝