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 方面闡述程序移植過程。
4.1 GD32F30x_Firmware_Library_V2.0.2 移植步驟
1. 本文將使用 GD32F30x_Firmware_Library_V2.0.2 固件庫文件 Template 里的工程做示例,如下圖 4.1 所示
2. 電腦安裝 keil5.26 及以上版本 MDK、GD32E50x 插件
3. 原有工程項(xiàng)目可能是 keil4 建立的,直接在 keil4 工程后綴名添加 x,即變成 keil5 項(xiàng)目;
4. 根據(jù)實(shí)際情況修改使用的芯片型號(hào)以及 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)時(shí)鐘配置
經(jīng)過上訴的步驟后,我們的 GD32F303 已經(jīng)完成了基本的 keil5 工程配置,下面將開始 RCU時(shí)鐘的配置,GD32F303 系列和 GD32E503 系列的時(shí)鐘配置過程基本相同,但是 GD32E503的 PMU 寄存器及 FMC 時(shí)鐘配置有差異,另外 GD32E503 支持更高的系統(tǒng)時(shí)鐘。用戶在配置的時(shí)候可以按以下步驟進(jìn)行程序修改(以 GD32F303 移植到 GD32E503、使用外部 8MHz高速晶振 HXTAL 為例,其他對(duì)應(yīng)型號(hào)、使用內(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 作為更高級(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)
圖 5.1 GD32E503 GPIO 口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.2 GD32F303 GPIO 口設(shè)置為 I2C 功能設(shè)置圖 5.3 GD32F503 GPIO 口設(shè)置為 I2C 功能設(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 可通過配置 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ā)生過載或欠載時(shí)將產(chǎn)生中斷。具體功能以及寄存器設(shè)置,請(qǐng)用戶參考 GD32E50x 用戶手冊(cè)。
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 多增加了 “檢測(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 位)訪問。GD32E503 的 I2C 寄存器只能按字(32 位)訪問,具體的功能及寄存器設(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è)。
5.8 控制器局域網(wǎng)絡(luò) (CAN)
GD32F303 系列產(chǎn)品中只有一個(gè) CAN0 功能,具有 14 個(gè)過濾器,GD32E503 具有兩個(gè) CAN,CAN0 和 CAN1,他們共享 28 個(gè)過濾器,GD32E503 較 GD32F303 還支持支持 CAN-FD幀,CAN-FD 幀通信波特率最大為 6Mbit/s,支持傳輸延遲補(bǔ)償機(jī)制,具體功能以及寄存器設(shè)置,請(qǐng)用戶參考 GD32E50x 用戶手冊(cè)。
5.9 閃存控制器(FMC)
GD32F303 bank0 的閃存頁大小為 2KB,bank1 的閃存頁大小為 4KB;GD32E503 的閃存頁大小為 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)注
6035文章
44554瀏覽量
634614 -
嵌入式
+關(guān)注
關(guān)注
5082文章
19104瀏覽量
304791 -
移植
+關(guān)注
關(guān)注
1文章
379瀏覽量
28124 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5032瀏覽量
97371 -
GD32
+關(guān)注
關(guān)注
7文章
403瀏覽量
24326
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論