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

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

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

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

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

4. 根據(jù)實際情況修改使用的芯片型號以及 C 語言語法改為 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)時鐘配置
經(jīng)過上訴的步驟后,我們的 GD32F303 已經(jīng)完成了基本的 keil5 工程配置,下面將開始 RCU時鐘的配置,GD32F303 系列和 GD32E503 系列的時鐘配置過程基本相同,但是 GD32E503的 PMU 寄存器及 FMC 時鐘配置有差異,另外 GD32E503 支持更高的系統(tǒng)時鐘。用戶在配置的時候可以按以下步驟進行程序修改(以 GD32F303 移植到 GD32E503、使用外部 8MHz高速晶振 HXTAL 為例,其他對應(yīng)型號、使用內(nèi)部晶振的移植過程類似):
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 作為更高級的 MCU,較GD32F303 在很多外設(shè)上增加了部分功能,用戶可根據(jù)以下羅列出的外設(shè)差異性選擇是否使用這些功能。
5.1 電源管理單元(PMU)
GD32F303 的電源管理單元只提供了三種省電模式,而 GD32E503 的電源管理單元提供了五種省電模式,包括睡眠模式,深度睡眠模式,深度睡眠模式1,深度睡眠模式 2 和待機模式。下表為節(jié)電模式總結(jié),具體功能以及寄存器設(shè)置,請用戶參考 GD32E50x 用戶手冊。

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

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

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

GD32F303固件庫開發(fā)

AN011 GD32F10x系列移植到GD32F30x系列
GD32F303為什么啟動慢?

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

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

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

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

評論