1. 前言
GD32E503 系列是 GD 推出的 Cortex_M33 系列產(chǎn)品,該系列資源上與 GD32F303 兼容度非常高,本應用筆記旨在幫助您快速將應用程序從 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 文件設置
GD32E503 的 PMU 與 GD32F303 寄存器并不兼容,因此需要把 GD32E503 的 PMU 配置文件及其文件加到 GD32F303 工程中。
1. 把“gd32e50x_pmu.h”復制到“x:\GD32F30x_Firmware_Library_V2.0.2\Firmware\GD32F30x_standard_peripheral\Include”中:
2. 把“gd32e50x_pmu.c” 復制到“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 為例,其他對應型號、使用內(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ù)的調用,如圖 4.15 所示:
5. 外設差異性
GD32E503 與 GD32F303 在外設上都是兼容的,但 GD32E503 作為更高級的 MCU,較GD32F303 在很多外設上增加了部分功能,用戶可根據(jù)以下羅列出的外設差異性選擇是否使用這些功能。
5.1 電源管理單元(PMU)
GD32F303 的電源管理單元只提供了三種省電模式,而 GD32E503 的電源管理單元提供了五種省電模式,包括睡眠模式,深度睡眠模式,深度睡眠模式1,深度睡眠模式 2 和待機模式。下表為節(jié)電模式總結,具體功能以及寄存器設置,請用戶參考 GD32E50x 用戶手冊。
5.2 通用和備用輸入/輸出接口歐(GPIO 和 AFIO)
圖 5.1 GD32E503 GPIO 口GD32E503 相對于 GD32F303,GPIO 口的功能更豐富了,除了重映射功能外,AFIO 功能也分為 Alternate1、Alternate2(如上截圖 5.1 所示),Alternate2 的功能使用方法與 GD32F303 一樣:配置 IO 口為復用模式,再使能相應外設即可,在使用 Alternate1 的復用功能的時候需要設置還需要多設置 AFIO 端口配置寄存器,以下以 I2C 的 IO 口設置為例。
圖 5.2 GD32F303 GPIO 口設置為 I2C 功能設置圖 5.3 GD32F503 GPIO 口設置為 I2C 功能設置5.3 模數(shù)轉換器(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 的差異,具體功能以及寄存器設置,請用戶參考 GD32E50x 用戶手冊。
5.4 數(shù)模轉換器(DAC)
GD32E503 較 GD32F303 的 DAC 觸發(fā)源增加了高精度定時器 SHRTIMER 提供的觸發(fā)源。GD32E503 在數(shù)據(jù)保持寄存器和輸出寄存器之間有一個 4 位深度的數(shù)據(jù) FIFO,如果設置了相應的中斷使能位,則在發(fā)生過載或欠載時將產(chǎn)生中斷。具體功能以及寄存器設置,請用戶參考 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 還增設了 USART5,對比 USART0~4 這幾個串口的功能,多加了半雙工單線通信,接收 FIFO 功能,雙時鐘域,可互換 TX/RX 引腳,可配置的數(shù)據(jù)極性,自動檢測波特率,支持 RS485 驅動使能,支持 ModBus 通信,從深度睡眠模式,深度睡眠模式 1 和深度睡眠模式 2 喚醒,奇偶校驗位控制,具體功能以及寄存器設置,請用戶參考 GD32E50x 用戶手冊。
5.6 內(nèi)部集成電路總線接口(I2C)
I2C0~I2C1:
GD32E503 較 GD32F303 多支持了 SAM_V 模式。
I2C2:
GD32E503 還增設了 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 位)訪問,具體的功能及寄存器設置,請用戶參考 GD32E50x 用戶手冊。
5.7 串行外設接口/片上音頻接口(SPI/I2S)
GD32E503 較 GD32F303,I2S 支持全雙工模式,I2S1 和 I2S2 為了支持全雙工運行模式,需要兩個額外的片上I2S模塊:I2S_ADD1 和 I2S_ADD2。I2S_ADD_SD引腳是I2S_ADD模塊的數(shù)據(jù)引腳,具體功能以及寄存器設置,請用戶參考GD32E50x用戶手冊。
GD32F303 系列產(chǎn)品中只有一個 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 字節(jié)空間內(nèi),CPU 執(zhí)行指令零等待,在此范圍外,CPU 讀取指令存在較長延時;而 GD32E503 在閃存的前 512K 字節(jié)空間內(nèi),CPU 執(zhí)行指令需要少量等待時間。另外 GD32E503 增加了 2K 字節(jié) OTP 塊(一次性編程),用于存儲用戶數(shù)據(jù);具體功能以及寄存器設置,請用戶參考 GD32E50x 用戶手冊。
5.10 其他
GD32E503 還增加了 SHRTIMER、TMU 和 SQPI 等功能,具體功能以及寄存器設置,請用戶參考 GD32E50x 用戶手冊。
本教程由GD32 MCU方案商聚沃科技原創(chuàng)發(fā)布,了解更多GD32 MCU教程,關注聚沃科技官網(wǎng)
-
單片機
+關注
關注
6037文章
44558瀏覽量
635285 -
嵌入式
+關注
關注
5082文章
19126瀏覽量
305184 -
移植
+關注
關注
1文章
379瀏覽量
28131 -
開發(fā)板
+關注
關注
25文章
5050瀏覽量
97468 -
GD32
+關注
關注
7文章
403瀏覽量
24351
發(fā)布評論請先 登錄
相關推薦
評論