1. 前言
GD32E503 系列是 GD 推出的 Cortex_M33 系列產(chǎn)品,該系列資源上與 GD32F303 兼容度非常高,本應(yīng)用筆記旨在幫助您快速將應(yīng)用程序從 GD32F303 系列微控制器移植到 GD32E503 系列微控制器。
2. 引腳兼容性
GD32F303 與 GD32E503 在相同封裝下是 Pin To Pin 兼容的。但由于 GD32E503 較 GD32F303多了 SHRTIMER、SQPI 功能,所以兩者引腳定義有細(xì)微差別,如下表所示:
表 1 GD32F303 系列和 GD32E503 系列引腳區(qū)別

3. 內(nèi)部資源兼容性
下表給出了 GD32F303 與 GD32F503 的資源對(duì)比總覽(以 GD32F303xE 和 GD32F503xE 對(duì)比為例):
表 2 GD32F303 系列和 GD32E503 系列內(nèi)部資源對(duì)比總覽

4. 程序移植
由上節(jié)可看出 GD32F303 和 GD32F503 的主頻(RCU 系統(tǒng)時(shí)鐘)及內(nèi)核版本都是有差異的,下面將就 RCU 方面闡述程序移植過(guò)程。
4.1 GD32F30x_Firmware_Library_V2.0.2 移植步驟
1. 本文將使用 GD32F30x_Firmware_Library_V2.0.2 固件庫(kù)文件 Template 里的工程做示例,如下圖 4.1 所示

2. 電腦安裝 keil5.26 及以上版本 MDK、GD32E50x 插件

3. 原有工程項(xiàng)目可能是 keil4 建立的,直接在 keil4 工程后綴名添加 x,即變成 keil5 項(xiàng)目;

4. 根據(jù)實(shí)際情況修改使用的芯片型號(hào)以及 C 語(yǔ)言語(yǔ)法改為 C99;


5. 拷貝 Cortex M33 內(nèi)核支持文件及其他 keil5 所需的文件到:
x: \GD32F30x_Firmware_Library_V2.0.2\Firmware\CMSIS

6. 修改“gd32f30x.h”頭文件內(nèi)容:

7. 修改“gd32f30x_misc.c”文件內(nèi)容:

4.2 PMU 文件設(shè)置
GD32E503 的 PMU 與 GD32F303 寄存器并不兼容,因此需要把 GD32E503 的 PMU 配置文件及其文件加到 GD32F303 工程中。
1. 把“gd32e50x_pmu.h”復(fù)制到“x:\GD32F30x_Firmware_Library_V2.0.2\Firmware\GD32F30x_standard_peripheral\Include”中:

2. 把“gd32e50x_pmu.c” 復(fù)制到“x:\GD32F30x_Firmware_Library_V2.0.2\Firmware\GD32F30x_standard_peripheral\Source”中:

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

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

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

4.3 RCU 系統(tǒng)時(shí)鐘配置
經(jīng)過(guò)上訴的步驟后,我們的 GD32F303 已經(jīng)完成了基本的 keil5 工程配置,下面將開(kāi)始 RCU時(shí)鐘的配置,GD32F303 系列和 GD32E503 系列的時(shí)鐘配置過(guò)程基本相同,但是 GD32E503的 PMU 寄存器及 FMC 時(shí)鐘配置有差異,另外 GD32E503 支持更高的系統(tǒng)時(shí)鐘。用戶在配置的時(shí)候可以按以下步驟進(jìn)行程序修改(以 GD32F303 移植到 GD32E503、使用外部 8MHz高速晶振 HXTAL 為例,其他對(duì)應(yīng)型號(hào)、使用內(nèi)部晶振的移植過(guò)程類似):
1. 在 system_gd32f30x.c 文件中增加宏定義:
#define __SYSTEM_CLOCK_180M_PLL_HXTAL (uint32_t)(180000000)
如圖 4.13 所示:

圖 4.13 在 system_gd32f30x.c 文件中增加宏定義
2. 在 system_gd32f30x.c 文件中增加使用 180MHz 頻率函數(shù)的聲明,如圖 4.14 所示:

3. 在 system_gd32f30x.c 文件中增加使用 180MHz 頻率函數(shù)的定義:

4. 在 system_gd32f30x.c 文件中增加使用 180MHz 頻率函數(shù)的調(diào)用,如圖 4.15 所示:

5. 外設(shè)差異性
GD32E503 與 GD32F303 在外設(shè)上都是兼容的,但 GD32E503 作為更高級(jí)的 MCU,較GD32F303 在很多外設(shè)上增加了部分功能,用戶可根據(jù)以下羅列出的外設(shè)差異性選擇是否使用這些功能。
5.1 電源管理單元(PMU)
GD32F303 的電源管理單元只提供了三種省電模式,而 GD32E503 的電源管理單元提供了五種省電模式,包括睡眠模式,深度睡眠模式,深度睡眠模式1,深度睡眠模式 2 和待機(jī)模式。下表為節(jié)電模式總結(jié),具體功能以及寄存器設(shè)置,請(qǐng)用戶參考 GD32E50x 用戶手冊(cè)。

5.2 通用和備用輸入/輸出接口歐(GPIO 和 AFIO)

GD32E503 相對(duì)于 GD32F303,GPIO 口的功能更豐富了,除了重映射功能外,AFIO 功能也分為 Alternate1、Alternate2(如上截圖 5.1 所示),Alternate2 的功能使用方法與 GD32F303 一樣:配置 IO 口為復(fù)用模式,再使能相應(yīng)外設(shè)即可,在使用 Alternate1 的復(fù)用功能的時(shí)候需要設(shè)置還需要多設(shè)置 AFIO 端口配置寄存器,以下以 I2C 的 IO 口設(shè)置為例。


5.3 模數(shù)轉(zhuǎn)換器(ADC)
1. 供電范圍
GD32F303 的 VDDA 供電范圍為 2.6~3.6V。GD32E503 的 VDDA 供電范圍為 1.62~3.6V,GD32E503 的供電范圍更寬。
2. 時(shí)鐘頻率
GD32F303 的 ADC 最大時(shí)鐘頻率可達(dá) 40MHz。GD32E503 在不同的供電范圍內(nèi),ADC的最大可達(dá)的時(shí)鐘頻率是不一樣的:1.62V 到 2.4V,ADC 最大時(shí)鐘頻率可達(dá) 14MHz;2.4V到 3.6V,ADC 最大時(shí)鐘頻率可達(dá) 35MHz。
3. 框圖
GD32F303 ADC0、ADC1、ADC2 共用一個(gè)模塊框圖,而 GD32E503 ADC0、ADC1 共用一個(gè)模塊框圖,ADC2 則是一個(gè)模塊框圖。
GD32F303 支持一個(gè)模擬看門狗功能,GD32E503 支持三個(gè)模擬看門狗 0/1/2。
5. 觸發(fā)源
GD32E503 的 ADC 外部觸發(fā)相對(duì)于 GD32F303 新增了超高精度 TIEMR 的觸發(fā)源。
6. 單端和差分輸入通道
GD32F303 只支持單端輸入模式。GD32E503 可通過(guò)配置 ADC_DIFCTL 寄存器中的DIFCTL[14:0]位域,可以配置 ADC 通道為單端輸入模式或差分輸入模式。只有在 ADC 禁能(ADCON = 0)的情況下才能進(jìn)行該配置。
上訴幾點(diǎn)為 GD32F303 和 GD32E503 的 ADC 的差異,具體功能以及寄存器設(shè)置,請(qǐng)用戶參考 GD32E50x 用戶手冊(cè)。
5.4 數(shù)模轉(zhuǎn)換器(DAC)
GD32E503 較 GD32F303 的 DAC 觸發(fā)源增加了高精度定時(shí)器 SHRTIMER 提供的觸發(fā)源。GD32E503 在數(shù)據(jù)保持寄存器和輸出寄存器之間有一個(gè) 4 位深度的數(shù)據(jù) FIFO,如果設(shè)置了相應(yīng)的中斷使能位,則在發(fā)生過(guò)載或欠載時(shí)將產(chǎn)生中斷。具體功能以及寄存器設(shè)置,請(qǐng)用戶參考 GD32E50x 用戶手冊(cè)。
5.5 通用同步異步收發(fā)器(USART)
USARTx(0~4):
GD32E503 與 GD32F303 一樣,有 USART0~2,UART3~4,其中 GD32F303 僅支持 16 倍過(guò)采樣,最高速度可到 7.5MBits/s;GD32E503 支持 8 或 16 倍過(guò)采樣,最高速度可到22.5MBits/s。USART 中斷事件,GD32E503 較 GD32F303 多增加了 “檢測(cè)到?jīng)_突”事件。
GD32E503 所有的 USART 都支持 DMA 功能。GD32F303 的 UART4 不支持 DMA 功能。
USART5:
GD32E503 還增設(shè)了 USART5,對(duì)比 USART0~4 這幾個(gè)串口的功能,多加了半雙工單線通信,接收 FIFO 功能,雙時(shí)鐘域,可互換 TX/RX 引腳,可配置的數(shù)據(jù)極性,自動(dòng)檢測(cè)波特率,支持 RS485 驅(qū)動(dòng)使能,支持 ModBus 通信,從深度睡眠模式,深度睡眠模式 1 和深度睡眠模式 2 喚醒,奇偶校驗(yàn)位控制,具體功能以及寄存器設(shè)置,請(qǐng)用戶參考 GD32E50x 用戶手冊(cè)。
5.6 內(nèi)部集成電路總線接口(I2C)
I2C0~I2C1:
GD32E503 較 GD32F303 多支持了 SAM_V 模式。
I2C2:
GD32E503 還增設(shè)了 I2C2,I2C2 除了部分特征與 I2C0、I2C1 一樣外,還具有如下的特征:
支持多個(gè) 7 位從機(jī)地址,可編程的建立時(shí)間和保持時(shí)間,兼容 SMBus 3.0 和 PMBus 1.3,可選擇的 PEC(報(bào)文錯(cuò)誤校驗(yàn))生產(chǎn)和校驗(yàn);地址匹配時(shí),可由深度睡眠模式,深度睡眠模式1 和深度睡眠模式 2 喚醒;獨(dú)立于 PCLK 的時(shí)鐘,可以獨(dú)立操作 I2C。
GD32F303 的 I2C 寄存器可以按半字(16 位)或字(32 位)訪問(wèn)。GD32E503 的 I2C 寄存器只能按字(32 位)訪問(wèn),具體的功能及寄存器設(shè)置,請(qǐng)用戶參考 GD32E50x 用戶手冊(cè)。
5.7 串行外設(shè)接口/片上音頻接口(SPI/I2S)
GD32E503 較 GD32F303,I2S 支持全雙工模式,I2S1 和 I2S2 為了支持全雙工運(yùn)行模式,需要兩個(gè)額外的片上I2S模塊:I2S_ADD1 和 I2S_ADD2。I2S_ADD_SD引腳是I2S_ADD模塊的數(shù)據(jù)引腳,具體功能以及寄存器設(shè)置,請(qǐng)用戶參考GD32E50x用戶手冊(cè)。
GD32F303 系列產(chǎn)品中只有一個(gè) CAN0 功能,具有 14 個(gè)過(guò)濾器,GD32E503 具有兩個(gè) CAN,CAN0 和 CAN1,他們共享 28 個(gè)過(guò)濾器,GD32E503 較 GD32F303 還支持支持 CAN-FD幀,CAN-FD 幀通信波特率最大為 6Mbit/s,支持傳輸延遲補(bǔ)償機(jī)制,具體功能以及寄存器設(shè)置,請(qǐng)用戶參考 GD32E50x 用戶手冊(cè)。
5.9 閃存控制器(FMC)
GD32F303 bank0 的閃存頁(yè)大小為 2KB,bank1 的閃存頁(yè)大小為 4KB;GD32E503 的閃存頁(yè)大小為 8KB。GD32F303 在閃存的前 256K 字節(jié)空間內(nèi),CPU 執(zhí)行指令零等待,在此范圍外,CPU 讀取指令存在較長(zhǎng)延時(shí);而 GD32E503 在閃存的前 512K 字節(jié)空間內(nèi),CPU 執(zhí)行指令需要少量等待時(shí)間。另外 GD32E503 增加了 2K 字節(jié) OTP 塊(一次性編程),用于存儲(chǔ)用戶數(shù)據(jù);具體功能以及寄存器設(shè)置,請(qǐng)用戶參考 GD32E50x 用戶手冊(cè)。
5.10 其他
GD32E503 還增加了 SHRTIMER、TMU 和 SQPI 等功能,具體功能以及寄存器設(shè)置,請(qǐng)用戶參考 GD32E50x 用戶手冊(cè)。
本教程由GD32 MCU方案商聚沃科技原創(chuàng)發(fā)布,了解更多GD32 MCU教程,關(guān)注聚沃科技官網(wǎng)
-
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44991瀏覽量
650429 -
嵌入式
+關(guān)注
關(guān)注
5152文章
19673瀏覽量
317534 -
移植
+關(guān)注
關(guān)注
1文章
401瀏覽量
28691 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5680瀏覽量
104719 -
GD32
+關(guān)注
關(guān)注
7文章
421瀏覽量
25484
發(fā)布評(píng)論請(qǐng)先 登錄
【GD32 MCU 移植教程】1、從 GD32F10x 移植到 GD32F30x

【GD32F303】星空派介紹
AN029 GD32F103程序在GD32F303和GD32F403芯片上運(yùn)行DSP

GD32F303固件庫(kù)開(kāi)發(fā)

STM32CUBEMX開(kāi)發(fā)GD32F303

AN011 GD32F10x系列移植到GD32F30x系列
GD32F303為什么啟動(dòng)慢?

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

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

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

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

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

評(píng)論