0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【GD32 MCU 移植教程】2、從 GD32F303 移植到 GD32F503

聚沃科技 ? 2024-08-31 09:36 ? 次閱讀

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ū)別

wKgZombScD-AVADbAAQItyqWchA567.png

3. 內(nèi)部資源兼容性

下表給出了 GD32F303 與 GD32F503 的資源對比總覽(以 GD32F303xE 和 GD32F503xE 對比為例):

表 2 GD32F303 系列和 GD32E503 系列內(nèi)部資源對比總覽

wKgZombScGGAO95rAACjxR1TvO4027.png

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 所示

wKgZombScHyADeDIAABul9ETRUo116.png

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

wKgaombScJ-AGg13AAAJQdom5Io367.png

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

wKgaombScLGAazBDAACngVhEhdE730.png

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

wKgaombScL6AFXzdAAB3qB29TfU800.png

wKgZombScL6AQsbPAABaC8xWYwE333.png

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

x: \GD32F30x_Firmware_Library_V2.0.2\Firmware\CMSIS

wKgZombScOWAcyjcAAC2q2r5REU709.png

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

wKgaombScPOAC_QCAAGbl_yr510645.png

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

wKgZombScQGAcoWtAADi_9FVUFw096.png

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”中:

wKgaombScSGATDjgAAAbXaR9iiA649.png

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

wKgaombScS6AXUQtAAAb2Xj3UeI696.png

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

wKgZombScTmAdGHcAAAjarDWDjQ996.png

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

wKgZombScUaATw1TAAAv-_IKdOc158.png

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

wKgZombScViASMyXAAAT9LYadMI603.png

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 所示:

wKgaombScZ6AG8k-AAA018Ye9EA028.png

圖 4.13 在 system_gd32f30x.c 文件中增加宏定義

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

wKgZombScb6Af5-iAACZZU_gqJU987.png

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

wKgZombScdCAQcjdAAEOmn2KLa0298.png

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

wKgaombSceSAS80oAAA4pfM904o068.png

5. 外設(shè)差異性

GD32E503 與 GD32F303 在外設(shè)上都是兼容的,但 GD32E503 作為更高級的 MCU,較GD32F303 在很多外設(shè)上增加了部分功能,用戶可根據(jù)以下羅列出的外設(shè)差異性選擇是否使用這些功能。

5.1 電源管理單元(PMU)

GD32F303 的電源管理單元只提供了三種省電模式,而 GD32E503 的電源管理單元提供了五種省電模式,包括睡眠模式,深度睡眠模式,深度睡眠模式1,深度睡眠模式 2 和待機模式。下表為節(jié)電模式總結(jié),具體功能以及寄存器設(shè)置,請用戶參考 GD32E50x 用戶手冊。

wKgaombScgeAeFMVAAFHXmcKHLg661.png

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

wKgZombSchaAWMfvAACVdfRXfoA109.png圖 5.1 GD32E503 GPIO 口

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

wKgZombScjeAXCqJAAAzL-ApGP0659.png圖 5.2 GD32F303 GPIO 口設(shè)置為 I2C 功能設(shè)置

wKgZombScl2AcmQIAABIfR0_kdo602.png圖 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. 時鐘頻率

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 則是一個模塊框圖。

4. 模擬看門狗

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用戶手冊。

5.8 控制器局域網(wǎng)絡(luò)CAN

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)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6026

    文章

    44450

    瀏覽量

    630743
  • 嵌入式
    +關(guān)注

    關(guān)注

    5052

    文章

    18904

    瀏覽量

    300688
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    375

    瀏覽量

    28072
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4833

    瀏覽量

    96819
  • GD32
    +關(guān)注

    關(guān)注

    7

    文章

    403

    瀏覽量

    24048
收藏 人收藏

    評論

    相關(guān)推薦

    GD32 MCU 移植教程】1、 GD32F10x 移植 GD32F30x

    應(yīng)用程序移植新的微控制器。本應(yīng)用筆記旨在幫助您快速將應(yīng)用程序 GD32F10x 系列微控制器移植
    的頭像 發(fā)表于 08-30 09:52 ?1321次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】1、<b class='flag-5'>從</b> <b class='flag-5'>GD32F</b>10x <b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F</b>30x

    GD32F303】星空派介紹

    GD32官方資料的基礎(chǔ)上,提供GD32F303的庫函數(shù)開發(fā)資料、例程講解、視頻課程等。同時還提供RT-Thread相關(guān)的驅(qū)動開發(fā)、應(yīng)用開發(fā)、移植等相關(guān)例程。(1)提供20多個基于GD
    發(fā)表于 09-11 17:55

    GD32移植STM32開發(fā)平臺

    GD32移植STM32開發(fā)平臺
    發(fā)表于 12-02 14:51 ?28次下載
    <b class='flag-5'>GD32</b><b class='flag-5'>移植</b><b class='flag-5'>到</b>STM32開發(fā)平臺

    AN011 GD32F10x系列移植GD32F30x系列

    AN011 GD32F10x系列移植GD32F30x系列
    發(fā)表于 02-23 18:59 ?2次下載
    AN011 <b class='flag-5'>GD32F</b>10x系列<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>GD32F</b>30x系列

    AN029 GD32F103程序在GD32F303GD32F403芯片上運行DSP

    AN029 GD32F103程序在GD32F303GD32F403芯片上運行DSP
    發(fā)表于 02-27 18:33 ?0次下載
    AN029 <b class='flag-5'>GD32F</b>103程序在<b class='flag-5'>GD32F303</b>和<b class='flag-5'>GD32F</b>403芯片上運行DSP

    GD32F303固件庫開發(fā)

    /qq_24312945/article/details/124325797] GD32F303固件庫開發(fā)(2)----讀保護與寫保護 芯片讀保護以后,flash將不可以外部讀取,這樣可以防止別人讀取或者盜取芯片代碼,如果想再
    的頭像 發(fā)表于 07-27 09:27 ?1045次閱讀
    <b class='flag-5'>GD32F303</b>固件庫開發(fā)

    STM32CUBEMX開發(fā)GD32F303

    在這使用STM32CUBEMX進行配置STM32F103,移植兆易創(chuàng)新GD32F303,然后進行測試。
    的頭像 發(fā)表于 07-27 09:32 ?1453次閱讀
    STM32CUBEMX開發(fā)<b class='flag-5'>GD32F303</b>

    AN011 GD32F10x系列移植GD32F30x系列

    兆易創(chuàng)新AN011GD32F10x系列移植GD32F30x系列AN011GD32F10x系列移植
    發(fā)表于 10-19 17:26 ?3次下載

    GD32F303為什么啟動慢?

    MCU開發(fā)中,有一項非常重要的參數(shù)——MCU啟動時間,即MCU上電后到程序開始運行這段時間。我們來看下GD32F303的datasheet中對啟動時間的描述:
    的頭像 發(fā)表于 02-22 11:11 ?1168次閱讀
    <b class='flag-5'>GD32F303</b>為什么啟動慢?

    GD32 MCU 移植教程】5、GD32E230 系列移植 GD32F330 系列

    移植 GD32F330 系列的需求,本文 檔專門針對既有的 GD32E230 代碼如何移植
    的頭像 發(fā)表于 09-03 10:05 ?676次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】5、<b class='flag-5'>GD</b>32E230 系列<b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F</b>330 系列

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

    和低成本,所以在存量客戶 中可能會有越來越多的客戶會有 GD32F1x0 和 GD32F3x0 移植
    的頭像 發(fā)表于 09-04 09:38 ?295次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】6、<b class='flag-5'>從</b><b class='flag-5'>GD32F</b>1x0和<b class='flag-5'>GD32F</b>3x0<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>GD</b>32E230

    GD32 MCU 移植教程】7、 GD32F10x 移植 GD32E103

    本應(yīng)用筆記旨在幫助您快速將基于 GD32F10x 2.0 版本及以上固件庫開發(fā)的應(yīng)用程序GD32F10x 系列微控制器移植
    的頭像 發(fā)表于 09-05 09:40 ?295次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】7、<b class='flag-5'>從</b> <b class='flag-5'>GD32F</b>10x <b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD</b>32E103

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

    、外設(shè)及性能對比以及 STM32F4xx 移植 GD32F4xx 的移植步驟,旨在讓開發(fā)者能
    的頭像 發(fā)表于 09-06 09:40 ?729次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】8、<b class='flag-5'>從</b> STM32<b class='flag-5'>F</b>4xx 系列<b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F</b>4xx 系

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

    對比、外設(shè)及性能對比以及 STM32F10x 移植 GD32F30x 的移植步驟,旨在讓開發(fā)
    的頭像 發(fā)表于 09-07 09:57 ?346次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】9、<b class='flag-5'>從</b> STM32<b class='flag-5'>F</b>10x 系列<b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F</b>30x 系列

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

    GD32E230 對比 STM32F030 有著很好的兼容性和更高的性價比,內(nèi)核和外設(shè)都有所增強。本人曾做過產(chǎn)品的 MCU 替換,將基于 STM32F0xx 1.5.0 固件庫的應(yīng)用程
    的頭像 發(fā)表于 09-07 10:24 ?391次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】10、<b class='flag-5'>從</b>STM32<b class='flag-5'>F</b>030系列<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>GD</b>32E230系列