0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【GD32 MCU 移植教程】7、从 GD32F10x 移植到 GD32E103

聚沃科技 2024-09-05 09:40 次阅读

1. 前言

本应用笔记旨在帮助您快速将基于 GD32F10x 2.0 版本及以上固件库开发的应用程序从GD32F10x 系列微控制器移植到 GD32E103 系列微控制器。GD32E103 和 GD32F10x 系列相比,考虑软硬件兼容性,从 Flash 和 SRAM 容量,包括外设模块的增强性能上来看,E103 最接近 F105。

开始前您需要安装 GD32E103 关于 KEIL 或 IAR 的插件,在工程选项的器件条目中选择GD32E103 对应型号,添加 GD32E103 的 Flash 下载算法

为了更好的利用本应用笔记中的信息,您需要对 GD32 系列微控制器有比较深刻的了解。您可在 GD32MCU 资料网站 下载 GD32 各系列微控制器资料,如 Datasheet、用户手册、官方例程及各种开发工具等。

2. 引脚兼容性

GD32F10x 与 GD32E103 在相同封装下是 Pin To Pin 兼容的,需注意 E103 没有 144Pin 封装。但由于 GD32E103 较 GD32F10x 增加了内部 48MHz RC 振荡器USBFS 模块提供固定频率,为满足精度要求,GD32E103 含有一个时钟校准控制器(CTC),所以两者引脚定义有细微差别,如下表所示:

表 1 GD32F105 系列和 GD32E103 系列引脚区别

wKgaombZCseAYKCBAABT8v_eWyU178.png

3. 内部资源兼容性

GD32E103 在资源上是和互联型产品如 F105 接近。下表给出了 GD32F10x 与GD32E103 的资源对比总览(以 GD32F105VB 和 GD32E103VB 对比为例):

表 2 GD32F10x 系列和 GD32E103 系列内部资源对比总览

wKgZombZCtiADTJkAACJcmsDTsM780.png

4. 程序移植

GD32E103 外设上和时钟与 GD32F10x 互联系列兼容,所以移植基于 GD32F10x 2.0版本及以上固件库应用程序到 E103 上需要做部分修改和调整。

4.1 IDE 设置

(1) 使用 MDK 环境时,在工程选项 C/C++选项卡中 Preprocessor Symbol Define 中加入GD32F10X_CL 的宏定义。

wKgZombZCvWAaCAVAAB7Rs8e5Ao532.png

图 1 修改全局声明

(2) 使用 IAR 环境时,在工程选项 C/C++ Compiler 项中 Preprocessor 选项卡下 DefineSymbol 中加入 GD32F10X_CL 的宏定义。

4.2 FMC 外设文件替换

GD32E103 采用了全新的 Flash 架构。GD32E103 的 flash 编程上支持的是字、双字编程;在 GD32F103 上可以半字编程,且有 bank0、bank1 的划分,对于选项字节的操作也需要按字进行编程。所以您可采用便捷的移植方法,将原工程中的 gd32f10x_fmc.c 和gd32f10x_fmc.h 中 的 代 码替换为GD32E103 固件库中 的 gd32e10x_fmc.c 和gd32e10x_fmc.h 内的代码,替换后需要在把#include "gd32e10x.h"更改为#include"gd32f10x.h"即可,如图 1。GD32E103 固件库可从官网或网盘中获取。

wKgaombZCx6AZo6fAACVI2MIqZI728.png

4.3 系统时钟配置

GD32F10x 互联型系列和 E103 系列的时钟配置过程相同,但 E103 上新增了 Flash等待周期,需要在时钟配置前加入相应的 Flash 等待周期,Flash 等待周期和主频对应关系如图 1。

wKgZombZCzmALZigAABKRnzlKO0110.png

图 2 WSCNT 与 AHB 时钟频率对应关系

在 system_gd32f10x.c 文件中的时钟配置函数里增加 Flash 等待周期的配置,如图 3 所示:

wKgaombZC0eAAtubAACS6hQi9bM454.png

图 3 时钟配置函数中增加 flash 等待周期配置

5. 外设差异性

GD32F10x 与 GD32E103 在外设上大部分兼容的,GD32E103 较 GD32F10x 在很多外设上增加部分功能,用户可根据以下罗列出的外设差异性选择是否使用这些功能。若需升级应用功能使用 E103 上增加的功能,建议将外设库更换为 GD32E103 固件库。

5.1 通用和备用输入/输出接口(GPIO 和 AFIO)

最大 50MHz),当 I/O 端口输出速度大于 50MHz 时,建议使用 I/O 补偿单元对 I/O 端口进行斜率控制,从而降低 I/O 端口噪声对电源的影响。具体功能以及寄存器设置,请用户参考GD32E103 用户手册。

5.2 模数转换器 ADC

为减轻 CPU 的负担,GD32E103 较 GD32F10x 增加了片上硬件过采样单元。它能够处理多个转换,并将多个转换的结果取平均,得出一个 16 位宽的数据。片上硬件过采样单元是以降低数据输出率为代价,换取较高的数据分辨率。具体功能以及寄存器设置,请用户参考 GD32E103 用户手册。

5.3 通用同步异步收发器 USART

GD32E103 较 GD32F10x 在 USART 上增加了块模式(GD32F10x 只支持字节模式)、数据极性设置、数据位反转以及 TX、RX 引脚电平反转、接收超时等功能,因此,GD32E103多了三个寄存器,分别为:USART_CTL3、USART_RT、USART_STAT1。具体功能以及寄存器设置,请用户参考 GD32E103 用户手册。

5.4 内部集成电路总线接口 I²C

GD32E103 和 GD32F10x 的 I²C 都支持标速(最高 100KHz)和快速(最高 400KHz),同时 GD32E103 可支持快速+模式(最高 1MHz),要使能快速+模式,需将 I2C_FMPCFG寄存器的 FMPEN 置 1。具体功能以及寄存器设置,请用户参考 GD32E103 用户手册。

5.5 串行外设接口/片上音频接口 SPI/I²S

GD32E103 和 GD32F10x 的 SPI/I²S 模块差异性主要表现在 GD32E103 支持 SPI TI模式、SPI NSS 脉冲模式和 SPI 四线功能(只有 SPI0),其中 SPI 的四线模式是用于控制四线 SPI Flash 外设,此模式下,数据传输速率是普通模式下的 4 倍。具体功能以及寄存器设置,请用户参考 GD32E103 用户手册。

5.6 外部存储器控制器(EXMC)

GD32E103 的 EXMC 相比 GD32F10x 系列少了NAND Flash/PC Card 控制器。

5.7 通用串行总线全速接口(USBFS)

GD32E103 和 GD32F105/107 的 USBFS 一致,较 GD32F105/107 相比多了 IRC48M的时钟源可选择。具体功能以及寄存器设置,请用户参考 GD32E103 用户手册。

6. 移植注意事项

6.1 软件延时调整

GD32F103 系列 flash 为零等待设计,GD32E103 采用了新的 Flash 设计架构,Flash有等待周期,所以在同主频下效率会略低于 GD32F103。如果用户代码有用到 for 循环或者是 while 循环语句来做延时,延时时间在 GD32E103 系列上会变长,需要适当的减少延时参数或改用 Timer 来做延时函数,使用 GPIO 模拟通信协议的应用需特别注意。

6.2 Flash 编程

GD32E103 Flash 不支持 16 位半字编程,若需对 Flash 进行编程,请采用 32 位全字编程或者双 16 位半字编程,对于连续的大量数据编程也可使用 64 位双字编程提升 Flash编程效率。此外在 flash 擦除和编程时间上 GD32E103 相比 GD32F103 缩短了非常多,如有需要可调整应用。

6.3 启动时间变快

GD32E103 上电启动时间相比 GD32F103 有所提升,如果对上电时序有严格要求可进行调整。

教程GD32 MCU方案商聚沃科技原创发布,了解更多GD32 MCU教程,关注聚沃科技官网

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44554

    浏览量

    634589
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17123

    浏览量

    350972
  • 嵌入式
    +关注

    关注

    5082

    文章

    19104

    浏览量

    304779
  • STM32
    +关注

    关注

    2270

    文章

    10895

    浏览量

    355715
  • GD32
    +关注

    关注

    7

    文章

    403

    浏览量

    24326
收藏 人收藏

    评论

    相关推荐

    GD32 MCU 移植教程】1、 GD32F10x 移植 GD32F30x

    应用程序移植新的微控制器。本应用笔记旨在帮助您快速将应用程序 GD32F10x 系列微控制器移植
    的头像 发表于 08-30 09:52 1539次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】1、<b class='flag-5'>从</b> <b class='flag-5'>GD32F10x</b> <b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F30x</b>

    GD32E103/F303系列与STM32F103的相同点

    注:本文档仅针对GD32E103/F303系列替代STM32F103系列说明:GD32E103/GD32F10x/
    发表于 08-04 08:51

    GD32F105移植RT-Thread-smart的过程

    工程,命名为gd32f105-eval。2、复制官方GD32F10x系列开发板下的GD32F10x_Firmware_Library文件夹下所有文件放到Libraries文件夹下。3、复制原G
    发表于 01-11 07:31

    GD32F10x系列软件移植GD32F1x0操作说明

    本文介绍了GD32F10x系列到GD32F1x0系列软件移植操作。
    发表于 08-28 15:57 18次下载

    STM32F10x系列移植GD32F10x系列电子版

    STM32F10x系列移植GD32F10x系列电子版
    发表于 05-31 09:22 0次下载

    STM32F10x系列移植GD32F10x系列指导文档

    STM32F10x系列移植GD32F10x系列指导文档
    发表于 12-03 16:29 7次下载

    AN011 GD32F10x系列移植GD32F30x系列

    AN011 GD32F10x系列移植GD32F30x系列
    发表于 02-23 18:59 3次下载
    AN011 <b class='flag-5'>GD32F10x</b>系列<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>GD32F30x</b>系列

    AN047 GD32E103&C103系列移植GD32F30x系列

    AN047 GD32E103&C103系列移植GD32F30x系列
    发表于 02-23 18:59 0次下载
    AN047 <b class='flag-5'>GD32E103</b>&C<b class='flag-5'>103</b>系列<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>GD32F30x</b>系列

    AN047 GD32E103&C103移植GD32F30x

    兆易创新AN047GD32E103&C103系列移植GD32F30x系列AN047GD32E103&C103系列
    发表于 10-19 17:26 3次下载

    AN011 GD32F10x系列移植GD32F30x系列

    兆易创新AN011GD32F10x系列移植GD32F30x系列AN011GD32F10x系列移植
    发表于 10-19 17:26 3次下载

    GD32 MCU 移植教程】2、 GD32F303 移植 GD32F503

    GD32E503 系列是 GD 推出的 Cortex_M33 系列产品,该系列资源上与 GD32F303 兼容度非常高,本应用笔记旨在帮助您快速将应用程序
    的头像 发表于 08-31 09:36 1440次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】2、<b class='flag-5'>从</b> <b class='flag-5'>GD32F</b>303 <b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F</b>503

    GD32 MCU 移植教程】5、GD32E230 系列移植 GD32F330 系列

    移植 GD32F330 系列的需求,本文 档专门针对既有的 GD32E230 代码如何移植
    的头像 发表于 09-03 10:05 1073次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】5、<b class='flag-5'>GD32E</b>230 系列<b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F</b>330 系列

    GD32 MCU 移植教程】6、GD32F1x0和GD32F3x0移植GD32E230

    和低成本,所以在存量客户 中可能会有越来越多的客户会有 GD32F1x0 和 GD32F3x0 移植
    的头像 发表于 09-04 09:38 549次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】6、<b class='flag-5'>从</b><b class='flag-5'>GD32F1x</b>0和<b class='flag-5'>GD32F3x</b>0<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>GD32E</b>230

    GD32 MCU 移植教程】9、 STM32F10x 系列移植 GD32F30x 系列

    对比、外设及性能对比以及 STM32F10x 移植 GD32F30x移植步骤,旨在让开发
    的头像 发表于 09-07 09:57 676次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】9、<b class='flag-5'>从</b> STM32<b class='flag-5'>F10x</b> 系列<b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F30x</b> 系列

    GD32 MCU 移植教程】10STM32F030系列移植GD32E230系列

    GD32E230 对比 STM32F030 有着很好的兼容性和更高的性价比,内核和外设都有所增强。本人曾做过产品的 MCU 替换,将基于 STM32F0xx 1.5.0 固件库的应用程
    的头像 发表于 09-07 10:24 632次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】<b class='flag-5'>10</b>、<b class='flag-5'>从</b>STM32<b class='flag-5'>F</b>030系列<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>GD32E</b>230系列