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

发布者:Yuexiang888最新更新时间:2024-11-11 来源: elecfans关键字:GD32  MCU  GD32F10x  移植 手机看文章 扫描二维码
随时随地手机看文章

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  GD32F10x  移植 引用地址:【GD32 MCU 移植教程】7、从 GD32F10x 移植到 GD32E103

上一篇:【GD32 MCU 移植教程】5、GD32E230 系列移植到 GD32F330 系列
下一篇:【GD32 MCU 移植教程】10、从STM32F030系列移植到GD32E230系列

推荐阅读最新更新时间:2024-11-21 10:59

DS18B20的51单片机驱动源代码
#include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit duan=P0^0; sbit wei=P0^1; //#define DQ RC1 //#define DQ_HIGH() TRISC1=1 //#define DQ_LOW() TRISC1=0;DQ=0 //__CONFIG(0x3B31); sbit DQ=P1^3; //const uchar table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, // 0x07,0x7f,0
[单片机]
增强型单片机STC12C5A60S2输出各种频率方波信号
【例7-3】 设时钟频率Fosc=18.432MHz,设计程序,从P1.0/CLKOUT2引脚输出频率为124.540KHz的时钟;从T0(P3.4)引脚输出频率为125KHz的时钟;从T1(P3.5)引脚输出频率为38.4KHz的时钟。 解:使用STC12C5A60S2的可编程时钟输出功能完成所需要求。在下面的程序设计中(在此只给出C语言程序),T0、T1和独立波特率发生器BRT均工作在1T模式。 程序编制如下: #include stc12c5a.h //包含STC12C5A60S2的寄存器定义头文件 void main(void) { TMOD = 0x22; //T0和T1工作在方式2,8位自动重
[单片机]
如何实现stm32单片机每次接上电源就进行一次重启动?
如何实现stm32单片机每次接上电源就进行一次重启动? 在嵌入式系统中,单片机的重启有时是十分必要的,它可以解决一些系统启动过程中的问题、恢复系统的正常运行、使系统更加稳定等。 然而,有时候我们需要每次接上电源就进行一次重启,也就是实现系统的自动重启。本文将给出一个思路,来实现stm32单片机每次接上电源就进行一次重启动。 一、背景知识 在嵌入式系统中,有两类重启,分别是软重启和硬重启。 1.1 软重启 软重启是指通过程序控制单片机重新开始执行,实现系统的重启。在stm32单片机中,一般采用如下代码进行软重启: ```c NVIC_SystemReset(); //调用此函数进行软重启 ``` 1.2 硬重启 硬重启是指通过硬件控
[单片机]
单片机内部的时间单位图示
单片机内部的时间单位 振荡频率fosc = 石英晶体频率或外部输入时钟频率 振荡周期= 振荡频率的倒数 机器周期 机器周期是单片机应用中衡量时间长短的最主要的单位 在多数51系列单片机中: 指令周期—— 执行一条指令所需要的时间 单位:机器周期 51单片机中:单周期指令、双周期指令、四周期指令
[单片机]
<font color='red'>单片机</font>内部的时间单位图示
动力总成微控制器提供排放控制技术
32位汽车微控制器MPC563xM系列中引入了集成的排放控制技术,有助于减少二氧化碳废气。 MPC563xM系列包括3个32位动力总成MCU,用以改善拥有一至四个气缸的小型引擎的效率和性能。MPC563xM器件基于Power Architecture技术,不但增强了动力总成的功能,如片上排放控制等,而且还满足了引擎和变速箱供应商的成本限制。这些器件采用90nm技术生产。 MPC563xM动力总成MCU包括综合的排放控制技术,该技术利用在Power Architecture e200内核中构建的数字信号处理(DSP)引擎的功能优势。这一集成的DSP功能支持引擎设计者能最大限度实现燃料的经济性和性能,同时最大限度减少引擎“爆震”,
[单片机]
蜂鸣器提示音+单片机+普中+江科大自化协
1 功能 按键提示音:用户按下独立按键时,蜂鸣器发出提示音,同时将按键值显示在数码管上。 2 原理图 3 参考程序 3.0 主程序 #include REGX52.H #include Nixie.h #include Buzzer.h #include Key.h unsigned char KeyNum; void main() { Nixie(1,0); //数码管初始化,显示0 while(1) { KeyNum = Key(); //4个独立按键扫描 if(KeyNum) { Buzzer_Time(200); //蜂鸣器鸣响200ms
[单片机]
蜂鸣器提示音+<font color='red'>单片机</font>+普中+江科大自化协
赛普拉斯推出全新汽车用 MCU 解决方案
赛普拉斯半导体公司 (纳斯达克代码:CY)今日宣布 其 Traveo™ 汽车用 MCU(微控制器)产品推出全新系列,该系列配备了更大的存储空间,以便支持具有 3D 图像功能和多达 6 个传统仪表的混合仪表板,以及平视显示器。高集成度、 单芯片S6J32xEK 系列器件提供先进的 3D 和 2.5D 图像引擎,并具有赛普拉斯低引脚数 HyperBus™ 存储接口,以便扩展。这一新系列产品进一步扩充了赛普拉斯品类丰富、提供出众的差异化系统性能的汽车产品组合,包括 MCU、无线射频、电容式触控解决方案、存储器和电源管理 (PMIC) 等。更多关于赛普拉斯的 Traveo MCU 系列的信息,敬请访问: http://www.cy
[汽车电子]
赛普拉斯推出全新汽车用 <font color='red'>MCU</font> 解决方案
一种基于高速超微型单片机的CCD驱动电路设计
CCD作为一种光电转换器件,由于其具有精度高、分辨率好、性能稳定等特点,目前广泛应用于图像传感和非接触式测量领域。在CCD应用技术中,最关键的两个问题是CCD驱动时序的产生和CCD输出信号的处理。对于CCD输出信号,可以根据CCD像素频率和输出信号幅值来选择合适的片外或片内模数转换器;而对于CCD驱动时序,则有几类常用的产生方法。   1 常用的CCD驱动时序产生方法 CCD厂家众多,型号各异,其驱动时序的产生方法也多种多样,一般有以下4种:   (1)数字电路驱动方法 这种方法是利用数字门电路及时序电路直接构建驱动时序电路,其核心是一个时钟发生器和几路时钟分频器,各分频器对同一时钟进行分频以产生所需的各路脉冲。该方法的特点
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved