【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 系列
下一篇:最后一页

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

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之触摸屏驱动移植
之所以说是驱动移植是因为之前已经在TQ210、AM335x两个平台上移植过了,因此,仅需要少量修改就可以将驱动移植到imx6q。下面开始触摸驱动移植。 DTS编写 参考其它DTS的i2c设备写法,我们可以添加如下内容: &i2c1 { clock-frequency = 100000 ; pinctrl-names = default ; pinctrl-0 = &pinctrl_i2c1_2 ; status = okay ; gt811@5d { compatible = gt811,gt811_ts ; pinctrl-names = default ; reg = 0x5d ;
[单片机]
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之触摸屏驱动<font color='red'>移植</font>
IC Insights:单片机出货量激增但单价下降较快
日前,市调机构IC Insights的报告指出,借助物联网相关新产品的开发,微控制器销量有了略微增加,但却遭遇到罕见的价格大幅下滑。 根据IC Insight的报告,单片机年出货量增长33%,达到了254亿颗,总收入仅增长4%至166亿美元。 IC Insights分析师Rob Lineback表示,单价下滑主要原因是32位市场的竞争激烈,供货商企图通过价格战的方式快速进军物联网市场。 Lineback称 物联网的传感器及通信功能的总成本要控制在3/4美元之间,因此对供应商来说要压低32位MCU的单价。 IC Insights预计MCU 单价将进一步下降,今年底预计降幅21%至65美分,明年
[单片机]
IC Insights:<font color='red'>单片机</font>出货量激增但单价下降较快
51单片机~定时器和外部中断(各个位控制作用详解)
(一)中断 (二)定时器,计数器中断 TL0低八位先进行存储,达到0XF,向上进一,直到高低八位都满时就可以产生中断或者控制TF0口。 (1). TMOD低四位控制T0,高四位控制T1。 GATE:(门控位) (2)控制寄存器TCON:(低四位控制外部中断,高四位控制计数器启动和中断申请) (3)定时器的四种工作方式: 定时器开启工作原理: 四种工作方式:(机器周期(脉冲)和T0引脚来绝定电路触发) 区别在于TH0和TL0的位数和输出) 常用1和2 1. 2.用于比较精确的脉冲信号发射器: 3. 程序化步奏: 计算:初值==2^n-N(公式要根据你使用那种方式0.1
[单片机]
51<font color='red'>单片机</font>~定时器和外部中断(各个位控制作用详解)
单片机红外遥控调光程序
/* 红外无线遥控LED灯 + 变亮 按- 变暗 按CH- 关灯 按CH- 开灯CH */ #include reg52.h /*==================================== 自定义类型名 ====================================*/ typedef unsigned char INT8U; typedef unsigned char uchar; typedef unsigned int INT16U; typedef unsigned int uint; /*==================================== 硬件接口位声明 ====
[单片机]
51单片机如何扩展外部端口
我们知道 51单片机本身是没有pwm接口的,这个程序是通过软件模拟pwm.在一定的频率的方波中,调整高电平和低电平的占空比,即可实现LED灯亮度控制。           要用51产生PWM去控制LED,首先要确定PWM的周期T和占空比D,确定了这些以后,可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则D*T=n*t,类似的可以求出PWM低电平时间需要多少个时间基准n'。 那么就可以编写程序,根据定的时间基准t给定时器赋值初始化,然后开启定时器,定义一个标志位flag,根据flag的状态决定输出高平还是低电平,假设定义flag=1的时候输出高电平,用一个变量去记录定时器中断的次数,每次中断就让记
[单片机]
MPLAB® X集成开发环境现已支持AVR®单片机
通常使用Microchip的PIC®单片机(MCU)并利用MPLAB生态系统进行开发工作的设计人员现在可以轻松评估AVR® MCU并将其融入到应用中。今天,随着美国微芯科技公司(Microchip Technology Inc)推出MPLAB® X集成开发环境(IDE)5.05版,目前暂属测试版,可支持大部分AVR MCU。未来的MPLAB版本还将加入更多增强的功能以及对其他AVR MCU的支持。当前和未来的AVR器件将继续受Atmel Studio 7和Atmel START支持。 MPLAB X IDE 5.05版提供跨平台且可扩展的统一开发体验,兼容Windows®、MacOS®和Linux®操作系统,设计人员可以
[嵌入式]
MPLAB® X集成开发环境现已支持AVR®<font color='red'>单片机</font>
TM1650模块单片机源程序(子函数)
单片机源程序如下: #include STC12C5A.h #include tm1650.h void Delay_us(uint i) //us延时 { for(;i 0;i--) { _nop_(); // _nop_(); // _nop_(); } } void I2CStart(void) //开始信号 { CLK_H; DIO_H; Delay_us(5); DIO_L; } void I2Cask(void) //ACK信号 { uchar timeout = 1; CLK_H; Delay_
[单片机]
GD32开发实战指南(基础篇) 第2章 初始GPIO流水灯
开发环境: MDK:Keil 5.30 开发板:GD32F207I-EVAL MCU:GD32F207IK 1 GPIO工作原理 熟悉单片机的朋友都知道,学习的第一个例程就是流水灯,要想实现流水灯,首先必须了解GPIO的工作原理。GPIO的基本结构如下图所示。 GD32 的 IO 口可以由软件配置成如下 8 种模式: 输入模式 浮空输入:浮空(floating)就是逻辑器件的输入引脚即不接高电平,也不接低电平。由于逻辑器件的内部结构,当它输入引脚悬空时,相当于该引脚接了高电平。一般实际运用时,引脚不建议悬空,易受干扰。通俗讲就是让管脚什么都不接,浮空着。信号进入芯片内部后,既没有接上拉电阻也没有接下拉电阻,经由触发器输
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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