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 系列引腳區別
3. 內部資源兼容性
GD32E103 在資源上是和互聯型產品如 F105 接近。下表給出了 GD32F10x 與GD32E103 的資源對比總覽(以 GD32F105VB 和 GD32E103VB 對比為例):
表 2 GD32F10x 系列和 GD32E103 系列內部資源對比總覽
4. 程序移植
GD32E103 外設上和時鐘與 GD32F10x 互聯系列兼容,所以移植基于 GD32F10x 2.0版本及以上固件庫應用程序到 E103 上需要做部分修改和調整。
4.1 IDE 設置
(1) 使用 MDK 環境時,在工程選項 C/C++選項卡中 Preprocessor Symbol Define 中加入GD32F10X_CL 的宏定義。
圖 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 固件庫可從官網或網盤中獲取。
4.3 系統時鐘配置
GD32F10x 互聯型系列和 E103 系列的時鐘配置過程相同,但 E103 上新增了 Flash等待周期,需要在時鐘配置前加入相應的 Flash 等待周期,Flash 等待周期和主頻對應關系如圖 1。
圖 2 WSCNT 與 AHB 時鐘頻率對應關系
在 system_gd32f10x.c 文件中的時鐘配置函數里增加 Flash 等待周期的配置,如圖 3 所示:
圖 3 時鐘配置函數中增加 flash 等待周期配置
5. 外設差異性
GD32F10x 與 GD32E103 在外設上大部分兼容的,GD32E103 較 GD32F10x 在很多外設上增加部分功能,用戶可根據以下羅列出的外設差異性選擇是否使用這些功能。若需升級應用功能使用 E103 上增加的功能,建議將外設庫更換為 GD32E103 固件庫。
5.1 通用和備用輸入/輸出接口(GPIO 和 AFIO)
最大 50MHz),當 I/O 端口輸出速度大于 50MHz 時,建議使用 I/O 補償單元對 I/O 端口進行斜率控制,從而降低 I/O 端口噪聲對電源的影響。具體功能以及寄存器設置,請用戶參考GD32E103 用戶手冊。
為減輕 CPU 的負擔,GD32E103 較 GD32F10x 增加了片上硬件過采樣單元。它能夠處理多個轉換,并將多個轉換的結果取平均,得出一個 16 位寬的數據。片上硬件過采樣單元是以降低數據輸出率為代價,換取較高的數據分辨率。具體功能以及寄存器設置,請用戶參考 GD32E103 用戶手冊。
5.3 通用同步異步收發器 USART
GD32E103 較 GD32F10x 在 USART 上增加了塊模式(GD32F10x 只支持字節模式)、數據極性設置、數據位反轉以及 TX、RX 引腳電平反轉、接收超時等功能,因此,GD32E103多了三個寄存器,分別為:USART_CTL3、USART_RT、USART_STAT1。具體功能以及寄存器設置,請用戶參考 GD32E103 用戶手冊。
5.4 內部集成電路總線接口 I2C
GD32E103 和 GD32F10x 的 I2C 都支持標速(最高 100KHz)和快速(最高 400KHz),同時 GD32E103 可支持快速+模式(最高 1MHz),要使能快速+模式,需將 I2C_FMPCFG寄存器的 FMPEN 置 1。具體功能以及寄存器設置,請用戶參考 GD32E103 用戶手冊。
5.5 串行外設接口/片上音頻接口 SPI/I2S
GD32E103 和 GD32F10x 的 SPI/I2S 模塊差異性主要表現在 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 有所提升,如果對上電時序有嚴格要求可進行調整。
-
單片機
+關注
關注
6035文章
44554瀏覽量
634632 -
mcu
+關注
關注
146文章
17123瀏覽量
350980 -
嵌入式
+關注
關注
5082文章
19104瀏覽量
304798 -
STM32
+關注
關注
2270文章
10895瀏覽量
355729 -
GD32
+關注
關注
7文章
403瀏覽量
24328
發布評論請先 登錄
相關推薦
評論