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

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

3天内不再提示

【GD32 MCU 移植教程】2、从 GD32F303 移植到 GD32F503

聚沃科技 2024-08-31 09:36 次阅读

1. 前言

GD32E503 系列是 GD 推出的 Cortex_M33 系列产品,该系列资源上与 GD32F303 兼容度非常高,本应用笔记旨在帮助您快速将应用程序从 GD32F303 系列微控制器移植到 GD32E503 系列微控制器。

2. 引脚兼容性

GD32F303 与 GD32E503 在相同封装下是 Pin To Pin 兼容的。但由于 GD32E503 较 GD32F303多了 SHRTIMER、SQPI 功能,所以两者引脚定义有细微差别,如下表所示:

表 1 GD32F303 系列和 GD32E503 系列引脚区别

wKgZombScD-AVADbAAQItyqWchA567.png

3. 内部资源兼容性

下表给出了 GD32F303 与 GD32F503 的资源对比总览(以 GD32F303xE 和 GD32F503xE 对比为例):

表 2 GD32F303 系列和 GD32E503 系列内部资源对比总览

wKgZombScGGAO95rAACjxR1TvO4027.png

4. 程序移植

由上节可看出 GD32F303 和 GD32F503 的主频(RCU 系统时钟)及内核版本都是有差异的,下面将就 RCU 方面阐述程序移植过程。

4.1 GD32F30x_Firmware_Library_V2.0.2 移植步骤

1. 本文将使用 GD32F30x_Firmware_Library_V2.0.2 固件库文件 Template 里的工程做示例,如下图 4.1 所示

wKgZombScHyADeDIAABul9ETRUo116.png

2. 电脑安装 keil5.26 及以上版本 MDK、GD32E50x 插件

wKgaombScJ-AGg13AAAJQdom5Io367.png

3. 原有工程项目可能是 keil4 建立的,直接在 keil4 工程后缀名添加 x,即变成 keil5 项目;

wKgaombScLGAazBDAACngVhEhdE730.png

4. 根据实际情况修改使用的芯片型号以及 C 语言语法改为 C99;

wKgaombScL6AFXzdAAB3qB29TfU800.png

wKgZombScL6AQsbPAABaC8xWYwE333.png

5. 拷贝 Cortex M33 内核支持文件及其他 keil5 所需的文件到:

x: \GD32F30x_Firmware_Library_V2.0.2\Firmware\CMSIS

wKgZombScOWAcyjcAAC2q2r5REU709.png

6. 修改“gd32f30x.h”头文件内容:

wKgaombScPOAC_QCAAGbl_yr510645.png

7. 修改“gd32f30x_misc.c”文件内容:

wKgZombScQGAcoWtAADi_9FVUFw096.png

4.2 PMU 文件设置

GD32E503 的 PMU 与 GD32F303 寄存器并不兼容,因此需要把 GD32E503 的 PMU 配置文件及其文件加到 GD32F303 工程中。

1. 把“gd32e50x_pmu.h”复制到“x:\GD32F30x_Firmware_Library_V2.0.2\Firmware\GD32F30x_standard_peripheral\Include”中:

wKgaombScSGATDjgAAAbXaR9iiA649.png

2. 把“gd32e50x_pmu.c” 复制到“x:\GD32F30x_Firmware_Library_V2.0.2\Firmware\GD32F30x_standard_peripheral\Source”中:

wKgaombScS6AXUQtAAAb2Xj3UeI696.png

3. 工程中的 Peripherals 中添加“gd32e50x_pmu.c”文件,并移去“gd32f30x_pmu.c”文件

wKgZombScTmAdGHcAAAjarDWDjQ996.png

4. 在“gd32f30x_libopt.h”文件中包含“gd32e50x_pmu.h”头文件。

wKgZombScUaATw1TAAAv-_IKdOc158.png

5. 在“gd32e50x_pmu.h”文件中,把#include "gd32e50x.h"修改成#include "gd32f30x.h";

wKgZombScViASMyXAAAT9LYadMI603.png

4.3 RCU 系统时钟配置

经过上诉的步骤后,我们的 GD32F303 已经完成了基本的 keil5 工程配置,下面将开始 RCU时钟的配置,GD32F303 系列和 GD32E503 系列的时钟配置过程基本相同,但是 GD32E503的 PMU 寄存器及 FMC 时钟配置有差异,另外 GD32E503 支持更高的系统时钟。用户在配置的时候可以按以下步骤进行程序修改(以 GD32F303 移植到 GD32E503、使用外部 8MHz高速晶振 HXTAL 为例,其他对应型号、使用内部晶振的移植过程类似):

1. 在 system_gd32f30x.c 文件中增加宏定义:

#define __SYSTEM_CLOCK_180M_PLL_HXTAL (uint32_t)(180000000)

如图 4.13 所示:

wKgaombScZ6AG8k-AAA018Ye9EA028.png

图 4.13 在 system_gd32f30x.c 文件中增加宏定义

2. 在 system_gd32f30x.c 文件中增加使用 180MHz 频率函数的声明,如图 4.14 所示:

wKgZombScb6Af5-iAACZZU_gqJU987.png

3. 在 system_gd32f30x.c 文件中增加使用 180MHz 频率函数的定义:

wKgZombScdCAQcjdAAEOmn2KLa0298.png

4. 在 system_gd32f30x.c 文件中增加使用 180MHz 频率函数的调用,如图 4.15 所示:

wKgaombSceSAS80oAAA4pfM904o068.png

5. 外设差异性

GD32E503 与 GD32F303 在外设上都是兼容的,但 GD32E503 作为更高级的 MCU,较GD32F303 在很多外设上增加了部分功能,用户可根据以下罗列出的外设差异性选择是否使用这些功能。

5.1 电源管理单元(PMU)

GD32F303 的电源管理单元只提供了三种省电模式,而 GD32E503 的电源管理单元提供了五种省电模式,包括睡眠模式,深度睡眠模式,深度睡眠模式1,深度睡眠模式 2 和待机模式。下表为节电模式总结,具体功能以及寄存器设置,请用户参考 GD32E50x 用户手册。

wKgaombScgeAeFMVAAFHXmcKHLg661.png

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

wKgZombSchaAWMfvAACVdfRXfoA109.png图 5.1 GD32E503 GPIO 口

GD32E503 相对于 GD32F303,GPIO 口的功能更丰富了,除了重映射功能外,AFIO 功能也分为 Alternate1、Alternate2(如上截图 5.1 所示),Alternate2 的功能使用方法与 GD32F303 一样:配置 IO 口为复用模式,再使能相应外设即可,在使用 Alternate1 的复用功能的时候需要设置还需要多设置 AFIO 端口配置寄存器,以下以 I2C 的 IO 口设置为例。

wKgZombScjeAXCqJAAAzL-ApGP0659.png图 5.2 GD32F303 GPIO 口设置为 I2C 功能设置

wKgZombScl2AcmQIAABIfR0_kdo602.png图 5.3 GD32F503 GPIO 口设置为 I2C 功能设置

5.3 模数转换器ADC

1. 供电范围

GD32F303 的 VDDA 供电范围为 2.6~3.6V。GD32E503 的 VDDA 供电范围为 1.62~3.6V,GD32E503 的供电范围更宽。

2. 时钟频率

GD32F303 的 ADC 最大时钟频率可达 40MHz。GD32E503 在不同的供电范围内,ADC的最大可达的时钟频率是不一样的:1.62V 到 2.4V,ADC 最大时钟频率可达 14MHz;2.4V到 3.6V,ADC 最大时钟频率可达 35MHz。

3. 框图

GD32F303 ADC0、ADC1、ADC2 共用一个模块框图,而 GD32E503 ADC0、ADC1 共用一个模块框图,ADC2 则是一个模块框图。

4. 模拟看门狗

GD32F303 支持一个模拟看门狗功能,GD32E503 支持三个模拟看门狗 0/1/2。

5. 触发源

GD32E503 的 ADC 外部触发相对于 GD32F303 新增了超高精度 TIEMR 的触发源。

6. 单端和差分输入通道

GD32F303 只支持单端输入模式。GD32E503 可通过配置 ADC_DIFCTL 寄存器中的DIFCTL[14:0]位域,可以配置 ADC 通道为单端输入模式或差分输入模式。只有在 ADC 禁能(ADCON = 0)的情况下才能进行该配置。

上诉几点为 GD32F303 和 GD32E503 的 ADC 的差异,具体功能以及寄存器设置,请用户参考 GD32E50x 用户手册。

5.4 数模转换器DAC

GD32E503 较 GD32F303 的 DAC 触发源增加了高精度定时器 SHRTIMER 提供的触发源。GD32E503 在数据保持寄存器和输出寄存器之间有一个 4 位深度的数据 FIFO,如果设置了相应的中断使能位,则在发生过载或欠载时将产生中断。具体功能以及寄存器设置,请用户参考 GD32E50x 用户手册。

5.5 通用同步异步收发器(USART)

USARTx(0~4):

GD32E503 与 GD32F303 一样,有 USART0~2,UART3~4,其中 GD32F303 仅支持 16 倍过采样,最高速度可到 7.5MBits/s;GD32E503 支持 8 或 16 倍过采样,最高速度可到22.5MBits/s。USART 中断事件,GD32E503 较 GD32F303 多增加了 “检测到冲突”事件。

GD32E503 所有的 USART 都支持 DMA 功能。GD32F303 的 UART4 不支持 DMA 功能。

USART5:

GD32E503 还增设了 USART5,对比 USART0~4 这几个串口的功能,多加了半双工单线通信,接收 FIFO 功能,双时钟域,可互换 TX/RX 引脚,可配置的数据极性,自动检测波特率,支持 RS485 驱动使能,支持 ModBus 通信,从深度睡眠模式,深度睡眠模式 1 和深度睡眠模式 2 唤醒,奇偶校验位控制,具体功能以及寄存器设置,请用户参考 GD32E50x 用户手册。

5.6 内部集成电路总线接口(I²C)

I2C0~I2C1:

GD32E503 较 GD32F303 多支持了 SAM_V 模式。

I2C2:

GD32E503 还增设了 I2C2,I2C2 除了部分特征与 I2C0、I2C1 一样外,还具有如下的特征:

支持多个 7 位从机地址,可编程的建立时间和保持时间,兼容 SMBus 3.0 和 PMBus 1.3,可选择的 PEC(报文错误校验)生产和校验;地址匹配时,可由深度睡眠模式,深度睡眠模式1 和深度睡眠模式 2 唤醒;独立于 PCLK 的时钟,可以独立操作 I2C。

GD32F303 的 I2C 寄存器可以按半字(16 位)或字(32 位)访问。GD32E503 的 I2C 寄存器只能按字(32 位)访问,具体的功能及寄存器设置,请用户参考 GD32E50x 用户手册。

5.7 串行外设接口/片上音频接口(SPI/I²S)

GD32E503 较 GD32F303,I2S 支持全双工模式,I2S1 和 I2S2 为了支持全双工运行模式,需要两个额外的片上I2S模块:I2S_ADD1 和 I2S_ADD2。I2S_ADD_SD引脚是I2S_ADD模块的数据引脚,具体功能以及寄存器设置,请用户参考GD32E50x用户手册。

5.8 控制器局域网络CAN

GD32F303 系列产品中只有一个 CAN0 功能,具有 14 个过滤器,GD32E503 具有两个 CAN,CAN0 和 CAN1,他们共享 28 个过滤器,GD32E503 较 GD32F303 还支持支持 CAN-FD帧,CAN-FD 帧通信波特率最大为 6Mbit/s,支持传输延迟补偿机制,具体功能以及寄存器设置,请用户参考 GD32E50x 用户手册。

5.9 闪存控制器(FMC)

GD32F303 bank0 的闪存页大小为 2KB,bank1 的闪存页大小为 4KB;GD32E503 的闪存页大小为 8KB。GD32F303 在闪存的前 256K 字节空间内,CPU 执行指令零等待,在此范围外,CPU 读取指令存在较长延时;而 GD32E503 在闪存的前 512K 字节空间内,CPU 执行指令需要少量等待时间。另外 GD32E503 增加了 2K 字节 OTP 块(一次性编程),用于存储用户数据;具体功能以及寄存器设置,请用户参考 GD32E50x 用户手册。

5.10 其他

GD32E503 还增加了 SHRTIMER、TMU 和 SQPI 等功能,具体功能以及寄存器设置,请用户参考 GD32E50x 用户手册。

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

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

    关注

    6020

    文章

    44349

    浏览量

    628005
  • 嵌入式
    +关注

    关注

    5042

    文章

    18795

    浏览量

    298170
  • 移植
    +关注

    关注

    1

    文章

    375

    浏览量

    28007
  • 开发板
    +关注

    关注

    25

    文章

    4754

    浏览量

    96076
  • GD32
    +关注

    关注

    7

    文章

    398

    浏览量

    23954
收藏 人收藏

    评论

    相关推荐

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

    应用程序移植新的微控制器。本应用笔记旨在帮助您快速将应用程序 GD32F10x 系列微控制器移植
    的头像 发表于 08-30 09:52 1163次阅读
    【<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'>GD32F</b>10x <b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F</b>30x

    GD32F303】星空派介绍

    GD32官方资料的基础上,提供GD32F303的库函数开发资料、例程讲解、视频课程等。同时还提供RT-Thread相关的驱动开发、应用开发、移植等相关例程。(1)提供20多个基于GD
    发表于 09-11 17:55

    GD32移植STM32开发平台

    GD32移植STM32开发平台
    发表于 12-02 14:51 28次下载
    <b class='flag-5'>GD32</b><b class='flag-5'>移植</b><b class='flag-5'>到</b>STM32开发平台

    AN011 GD32F10x系列移植GD32F30x系列

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

    AN029 GD32F103程序在GD32F303GD32F403芯片上运行DSP

    AN029 GD32F103程序在GD32F303GD32F403芯片上运行DSP
    发表于 02-27 18:33 0次下载
    AN029 <b class='flag-5'>GD32F</b>103程序在<b class='flag-5'>GD32F303</b>和<b class='flag-5'>GD32F</b>403芯片上运行DSP

    GD32F303固件库开发

    /qq_24312945/article/details/124325797] GD32F303固件库开发(2)----读保护与写保护 芯片读保护以后,flash将不可以外部读取,这样可以防止别人读取或者盗取芯片代码,如果想再
    的头像 发表于 07-27 09:27 943次阅读
    <b class='flag-5'>GD32F303</b>固件库开发

    STM32CUBEMX开发GD32F303

    在这使用STM32CUBEMX进行配置STM32F103,移植兆易创新GD32F303,然后进行测试。
    的头像 发表于 07-27 09:32 1345次阅读
    STM32CUBEMX开发<b class='flag-5'>GD32F303</b>

    AN011 GD32F10x系列移植GD32F30x系列

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

    GD32F303为什么启动慢?

    MCU开发中,有一项非常重要的参数——MCU启动时间,即MCU上电后到程序开始运行这段时间。我们来看下GD32F303的datasheet中对启动时间的描述:
    的头像 发表于 02-22 11:11 1063次阅读
    <b class='flag-5'>GD32F303</b>为什么启动慢?

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

    移植 GD32F330 系列的需求,本文 档专门针对既有的 GD32E230 代码如何移植
    的头像 发表于 09-03 10:05 353次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】5、<b class='flag-5'>GD</b>32E230 系列<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 120次阅读
    【<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'>GD32F</b>1x0和<b class='flag-5'>GD32F</b>3x0<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>GD</b>32E230

    GD32 MCU 移植教程】7、 GD32F10x 移植 GD32E103

    本应用笔记旨在帮助您快速将基于 GD32F10x 2.0 版本及以上固件库开发的应用程序GD32F10x 系列微控制器移植
    的头像 发表于 09-05 09:40 132次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】7、<b class='flag-5'>从</b> <b class='flag-5'>GD32F</b>10x <b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD</b>32E103

    GD32 MCU 移植教程】8、 STM32F4xx 系列移植 GD32F4xx 系

    、外设及性能对比以及 STM32F4xx 移植 GD32F4xx 的移植步骤,旨在让开发者能
    的头像 发表于 09-06 09:40 374次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】8、<b class='flag-5'>从</b> STM32<b class='flag-5'>F</b>4xx 系列<b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F</b>4xx 系

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

    对比、外设及性能对比以及 STM32F10x 移植 GD32F30x 的移植步骤,旨在让开发
    的头像 发表于 09-07 09:57 124次阅读
    【<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'>F</b>10x 系列<b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F</b>30x 系列

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

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