女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

聚沃科技 ? 2024-09-06 09:40 ? 次閱讀

1.本文簡介

GD32F4xx 系列 MCU 是基于 Arm? Cortex?-M4 處理器的 32 位通用微控制器,與 STM32F4xx系列 MCU 保持高度兼容。本文主要從以下三個方面進行介紹:硬件資源對比、外設及性能對比以及從 STM32F4xx 移植到 GD32F4xx 的移植步驟,旨在讓開發者能夠快速從 STM32F4xx移植到 GD32F4xx,縮短研發周期,加快產品開發進度。

2.GD32F4xx vs STM32F4xx 硬件資源對比

GD32F4xx 和 STM32F4xx 硬件引腳對比如表 2-1. GD32F4xx 和 STM32F4xx pin 對比所示,由該表可知,GD32F4xx 與 STM32F4xx 完全硬件兼容。

表 2-1. GD32F4xx 和 STM32F4xx pin 對比

wKgaombaW6iAWGY6AABJy383CG4620.png

注意:

1. NC 代表可接高、可接地、可不接。

2. STM32F4xx 的 VCAP_1/2 引腳一般是通過阻容接地,若采用 GD32F4xx 替代,建議可直接通過電阻接地,電容可省略。

3. STM32F4xx 的 BYPASS_REG 引腳一般接地或接高,不影響替換。

4. 注意 PDR_ON 引腳需通過 10K 電阻上拉。

3.GD32F4xx vs STM32F4xx 外設及性能對比

GD32F4xx 外設資源豐富,可實現對 STM32F4xx 外設資源的覆蓋,具體系統及外設資源對比如表 3-1. GD32F4xx 和 STM32F4xx 系統及外設資源對比所示。

表 3-1. GD32F4xx 和 STM32F4xx 系統及外設資源對比

wKgaombaW4WAHJn_AAAsffPi_c0992.png

4.從 STM32F4xx 到 GD32F4xx 系列移植步驟

GD32F4xx 和 STM32F4xx 均基于 Arm? Cortex?-M4 內核 MCU,可采用相同的集成開發環境和燒錄調試工具,一般集成開發環境為 IAR、Keil和Eclipse等,燒錄和調試工具可選用ULINK、J-Link、ST-LINK、GD-LINK 等。本節首先介紹使用 Keil 和 IAR 進行集成開發環境選型及工程配置,之后介紹各個外設在移植時可能碰到的問題以及解決方法。

讀者進行移植測試時可參考以下步驟進行:

(1)集成開發環境選型及工程配置(或保持之前配置);

(2)將編譯的工程代碼燒錄到芯片內進行測試;

(3)根據使用的外設以及測試的情況參考本節各外設移植問題及解決方法進行修改測試。

4.1 集成開發環境選型及工程配置

4.1.1 使用 Keil5 開發

首先安裝選型 pack 包,選型 pack 包可通過 https://pan.baidu.com/s/1mhQsNpu 網盤或GD32MCU.com 官網下載,若采用 Keil5 開發,也可通過 Pack Installer 進行在線更新(建議通過官網下載)。 下 載 后 解 壓 pack 包 如 圖 4-1. AddOn 選 型 安 裝 包 所示,其中

GigaDevice.GD32F4xx_Addon.3.0.0.exe為Keil4的選 型 安 裝包 、GigaDevice.GD32F4xx_DFP.3.0.0.pack 為 Keil5 的選型安裝包、IAR_GD32F4xx_ADDON.3.0.0.exe 為 IAR 的選型安裝包,在此選擇 GigaDevice.GD32F4xx_DFP.3.0.0.pack 進行安裝,安裝路徑默認選擇 Keil5 安裝路徑。

wKgZombaW-OAR5MeAAAwb3dp97o696.png

安裝選型安裝包后,打開具體軟件工程,點擊 Project->Option for Target 打開配置對話框,點擊 Device 進行工程選型,如圖 4-2. Keil5 下選型配置所示可選擇對應 GD32F4xx 選型,點擊OK。

wKgaombaW_KAGysZAACjxyqAjtE600.png

選型后,再次打開 Option for Target 配置對話框,點擊 Debug 選擇所使用的燒錄器,之后點擊Utilities->Setting,彈出如圖4-3. 下載算法選擇窗口對話框,點擊add選擇對應的下載算法

wKgaombaXAiARB3kAABMp1pCQT4133.png

之后可將修改的工程其他配置與原工程進行對比,排查預定義宏、工程優化、FPU 配置等是否一致,不同的地方可進行修改調整,修改后可進行燒錄測試。

4.1.2 使用 IAR 開發

首先安裝 IAR 選型包,如圖 4-1. AddOn 選型安裝包所示,AddOn 選型包中雙擊IAR_GD32F4xx_ADDON. 3.0.0.exe 選擇 IAR 安裝路徑默認安裝即可。

安裝選型包后,打開應用工程,打開 option 對話框,選擇 general options->Target,可進行設備選型,如圖 4-4. IAR 工程選型所示。

wKgZombaXCWADDhTAABzdFrVF4E148.png

選型之后,可以 check 下鏈接文件以及下載文件是否已更換,如圖 4-5. 鏈接文件選擇圖 4-6.下載文件選擇所示,選擇 GD32 對應鏈接文件以及下載文件。

圖 4-5. 鏈接文件選擇

wKgZombaXDmAa_K4AABTmjHbiGQ029.png

圖 4-6. 下載文件選擇

wKgaombaXD-ARXBeAABXsMQHqww586.png

配置完成后,即可進行燒錄下載及調試測試。

注意:若原始工程選型 GD32 MCU 編譯異常,也可以選型 STM32 對應型號進行編譯下載測試。若希望調試時對應 GD32 寄存器或者使用 GD32 所有特有的外設或功能可以選擇 GD32對應型號,切換選型后有關燒錄器選擇或其他工程配置需要參考之前的配置進行修改。

4.2 SPI 模塊移植注意事項

4.2.1 SPI 重配異常處理

若用戶在使用時切換 SPI 配置,重配 SPI 后,SPI 時鐘改變,建議在重配 SPI 之前先關閉 SPI模塊,配置完成后,再使能 SPI。修改代碼如下所示。

wKgaombaXF6AaFIgAAASrqzMy7Y588.png

4.3 ADC 模塊移植注意事項

4.3.1 ADC 8 位對齊模式處理

ADC 在設置為 8bit 模式右對齊時,GD32F4xx 是取 12bit 數據中的高 8bit,使用時請注意,如表 4-1. 右對齊時 ADC 采樣數據寄存器所示??刹捎米髮R,讀取高字節數據,如表 4-2. 左對齊時 ADC 采樣數據寄存器所示

wKgZombaXH2AKwdzAAAcjsfk40g817.pngwKgaombaXIOAcQAyAAAdnOOQdi8716.png

4.3.2 ADC 軟件觸發時機處理

在 ADC IDLE 的時候,軟件寫一下 swstart,硬件會檢測到 swstart 的上升沿,然后開始采樣,并在采樣開始的時候將 swstart 清 0。如果在 ADC 正在轉換時寫 swstart,此時 ADC 無法檢測上升沿,當 ADC 轉換完當前通道后,swstart 雖為高電平,但檢測不到上升沿, ADC 也無法啟動轉換,因此置位 swstart 之前需要等待 EOC 標志置位,即 ADC 轉換完成。

4.3.3 ADC 規則組查詢 EOC 讀取數據異常處理

ADC 規則組采樣數據后先置位 EOC,然后在下個 ADCCLK 將數據填充到數據寄存器,如果ADC 時鐘較慢且主頻較高情況下,可能存在無法讀取 ADC 規則組采樣數據的情況,可以通過在 EOC 后延遲超過 1 個 ADCCLK 時間然后再讀取 ADC 規則組數據解決。

4.4 USART 模塊移植注意事項

4.4.1 串口 DMA 發送數據丟失處理

GD32F4xx MCU 的 USART 使用 DMA 發送,如果先使能 DMA,后使能串口的 Tx 功能,會導致由于 DMA 先于 USART 打開的時間差,造成在 USART 沒準備好發送的情況下 DMA 事先傳輸數據,進而導致數據丟失,軟件上可修改 DMA 和串口配置順序,先配置串口,然后配置DMA。

4.4.2 串口通信由于時鐘波特率誤差導致數據錯亂處理

本項適用于 GD32F405/407/450 系列。在一些存在波特率誤差(高低位時間偏差)的應用場景下,比如 485 長距離通信、強干擾等,可能會存在串口 START 位檢測異常導致數據錯亂的情況,該情況下可通過以下方法進行改善:

1. 將 16 倍過采樣配置為 8 倍過采樣,注意過采樣配置需要在波特率配置之前,可提高對波特率誤差的容錯能力;

2. 降低波特率;

3. 硬件整改,減少實際波形波特率偏差;

4. 更換 GD32F425/427/470 系列測試。

4.4.3 串口 DMA 接收不定長數據 DMA 無法重配處理

串口 DMA 接收不定長數據一般在串口超時中斷或 IDLE 中斷中重新配置 DMA,以準備接收下一幀數據,由于關閉 DMA 將會置位 DMA 傳輸完成標志,進而導致 DMA 無法重新配置,可以通過在關閉 DMA 后清除 DMA 傳輸完成標志進行解決。

4.5 ENET 模塊移植注意事項

4.5.1 以太網 Ping 不通的相關處理

若出現以太網 ping 不通的問題,若排除硬件問題,軟件有以下兩種可能:

(1)由于 GD32F4xx芯片主頻較高,在代碼端,應該保證將 ENET_DMA_CTL 寄存器的第 20 位 FTF 置 1,清空發送 FIFO 后,必須軟件等待該位被硬件清 0 后適當延遲再進行其他操作。否則,有概率性導致ENET 發送異常,從而出現 PING 不通的情況,修改代碼如下所示。

wKgZombaXM-AK-v6AAAWhxNekio085.png

(2)若客戶以太網采用半雙工通信,若打開載波偵聽,會導致發送異常,按照 802.1 以太網協議,需關閉載波監聽功能,修改代碼如下所示。

wKgZombaXOGALMlyAAAVBOv5BYw689.png

4.5.2 以太網硬件 checksum 異常處理

由于在 GD32F4 上硬件 checksum 使用更嚴格,可建議使用軟件 checksum,或軟件上使能ENET_DMA_CTL 里面的 FERF 位,并對錯誤幀進行相應處理。

4.6 USBFS 模塊移植注意事項

4.6.1 USB 發送數據偶爾出錯異常處理

若出現 USB 端點發送數據偶爾出錯的情況,請排查 DCD_EP_Flush();函數使用情況,該函數僅需在 USB 初始化中端點緩沖區配置完成后,進行 Flush,其他地方 Flush 緩沖區可能會造成USB緩沖區異常,因而建議只需在USB初始化時進行一次緩沖區Flush操作,其他地方的Flush操作可屏蔽。

4.7 IIC 模塊移植注意事項

4.7.1 作為主機讀取 2 個字節數據 IIC 總線卡死處理

該問題出現的原因是由于在設置 POS 之前被其他中斷打斷,導致 POS 控制異常,對緊接著的數據回復了 NACK 導致總線掛死,可以有以下兩種解決方法:

1、在地址發送之前禁用中斷,并在 POS 配置之后使能中斷;

2、修改配置流程,將 POS 配置放置在 Start 發送之前。

4.8 HXTAL 時鐘移植注意事項

4.8.1 HXTAL 超時等待宏定義配置較短導致溢出處理

在 stm32f4xx.h 中的 HSE_STARTUP_TIMEOUT 超時宏定義建議從 0x0500 改成 0xfffff,修改代碼如下所示。

wKgZombaXSyAacvHAAAOMtQoDz4267.png

4.9 CAN 模塊移植注意事項

4.9.1 CAN 連續發送概率性丟幀處理

若使用 STM32 Cube 庫,在連續發送且不判斷上一幀數據發送完成的情況下,可能存在概率性丟幀情況,該問題的原因在于 NUM[1:0]控制位 GD32 和 STM32 的行為不一致,在有 mailbox為空的情況下,STM32 的 Code 位為最小的那個空的 mailbox,而 GD32 的 NUM[1:0]位是正在處理的那個 mailbox。因而建議可通過判斷 TME0/1/2 來選擇郵箱,具體修改代碼如圖 4-7. 修改代碼示例所示。

wKgZombaXSOAYPfxAAEMx2YjdOM636.png

4.9.2 CAN 無法接收異常處理

若使用 STM32 Cube 庫,建議將 CAN 初始化中 SlaveStartFilterBank 由 0 改成 14,否則會出現 CAN0 沒有過濾器可用導致無法接收數據,具體修改如圖 4-8. 修改代碼示例所示。

wKgZombaXV2ADofOAAWmbprwuGM111.png

教程GD32 MCU方案商聚沃科技原創發布,了解更多GD32 MCU教程,關注聚沃科技官網

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6063

    文章

    44925

    瀏覽量

    647001
  • 嵌入式
    +關注

    關注

    5141

    文章

    19537

    瀏覽量

    315030
  • STM32
    +關注

    關注

    2290

    文章

    11017

    瀏覽量

    362404
  • 開發板
    +關注

    關注

    25

    文章

    5530

    瀏覽量

    102350
  • GD32
    +關注

    關注

    7

    文章

    418

    瀏覽量

    25161
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    GD32F4xx系列固件庫

    GD32F4xx系列固件庫包含GD32F403、GD32F405、GD32F407以及GD32F
    發表于 08-21 08:55 ?185次下載

    STM32F0xx系列移植GD32F1x0系列軟件操作說明

    本文檔介紹了STM32F0xx系列GD32F1x0系列的軟件移植操作。
    發表于 08-28 16:17 ?26次下載

    GD32F4xx 用戶 手冊

    GD32F4xx 用戶 手冊
    發表于 02-23 18:46 ?11次下載
    <b class='flag-5'>GD32F4xx</b> 用戶 手冊

    GD32F4xx 固件庫 用戶 指南

    GD32F4xx 固件庫 用戶 指南
    發表于 02-23 18:58 ?15次下載
    <b class='flag-5'>GD32F4xx</b> 固件庫 用戶 指南

    AN056 GD32F4xx系列硬件開發指南

    AN056 GD32F4xx系列硬件開發指南
    發表于 02-23 19:01 ?2次下載
    AN056 <b class='flag-5'>GD32F4xx</b><b class='flag-5'>系列</b>硬件開發指南

    AN018 GD32F4xx MPU使用說明

    AN018 GD32F4xx MPU使用說明
    發表于 02-27 18:22 ?3次下載
    AN018 <b class='flag-5'>GD32F4xx</b> MPU使用說明

    兆易創新GD32F4xx系列MCU固件庫使用指南

    兆易創新GD32F4xx系列MCU固件庫使用指南GD32F4xx系列MCU固件庫使用指南
    發表于 10-19 17:26 ?26次下載

    兆易創新GD32F4xx系列MCU用戶手冊

    兆易創新GD32F4xx系列MCU用戶手冊GD32F4xx系列MCU用戶手冊
    發表于 10-19 17:26 ?26次下載

    兆易創新GD32F4xx系列開發板套件

    兆易創新GD32F4xx系列開發板套件GD32F4xx系列開發板套件
    發表于 10-19 17:26 ?9次下載

    GD32 MCU 移植教程】2、 GD32F303 移植 GD32F503

    GD32E503 系列GD 推出的 Cortex_M33 系列產品,該系列資源上與 GD32F
    的頭像 發表于 08-31 09:36 ?2024次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】2、<b class='flag-5'>從</b> <b class='flag-5'>GD32F</b>303 <b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F</b>503

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

    GD32E230 系列GD 的 Cortex_M23 系列產品,GD32F330 系列
    的頭像 發表于 09-03 10:05 ?2353次閱讀
    【<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'>到</b> <b class='flag-5'>GD32F</b>330 <b class='flag-5'>系列</b>

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

    GD32F30x 系列 MCU 是基于 Arm? Cortex?-M4 處理器的 32 位通用微控制器,與 STM32F10x
    的頭像 發表于 09-07 09:57 ?1724次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】9、<b class='flag-5'>從</b> <b class='flag-5'>STM32F</b>10x <b class='flag-5'>系列</b><b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F</b>30x <b class='flag-5'>系列</b>

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

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

    GD32F4xx用戶手冊

    電子發燒友網站提供《GD32F4xx用戶手冊.pdf》資料免費下載
    發表于 01-16 14:49 ?14次下載
    <b class='flag-5'>GD32F4xx</b>用戶手冊

    GD32F4xx硬件開發指南

    電子發燒友網站提供《GD32F4xx硬件開發指南.pdf》資料免費下載
    發表于 02-07 17:20 ?0次下載
    <b class='flag-5'>GD32F4xx</b>硬件開發指南