国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

無刷電機小車開發記錄01——制作RTT內GD32E503器件的BSP

RTThread物聯網操作系統 ? 來源:未知 ? 2023-08-31 13:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前情提要


最近計劃開始做一個無刷電機的小車玩玩,不用網上的現有方案,一切從零開始自己做方案。硬件方案打算用GD32E503和EG2134柵極驅動IC等一系列國產器件去做,這樣就面臨一個問題,不太好用ArduinoSimpleFOC快速出原型。所以軟件方案想基于RTT開發,這樣只需移植一些硬件驅動和FOC以及卡爾曼濾波等算法,其它的很多功能還是可以用RThread組件實現的,總不能所有輪子都自己造,畢竟玩這個小車的目的也只是想深入玩玩這些控制算法。這個小車的整個開發周期可能會很長,至少是以年為度量單位的,第一是因為工作比較忙,只能用一些零散時間搞,第二是因為計劃用到什么學什么,有意思的地方都深入的研究研究,不以速成為目的。整個開發過程也都記錄一下,圖文形式的記錄可能會在RTThread論壇進行記錄,視頻形式的記錄就發布在B站上,希望有興趣的小伙伴也可以一起玩一玩哈。

前期工作


前段時間,大概花了一周的時間已經把第一版測試用的硬件電路和機械結構設計完畢,如下是硬件電路的3D視圖。

wKgaomTwIKyAfCxfAAFHGubt_uc763.jpg

如下是三輪小車形態的車底盤3D渲染圖:

wKgaomTwIKyAAQr7AABGuAqIHUQ123.jpg

下圖是平衡車形態的車底盤3D渲染圖:

wKgaomTwIKyANoVzAABsQh8r7F0279.jpg

下圖為二階平衡車形態的車底盤3D渲染圖:

wKgaomTwIKyAHzLvAABGH0Sflxo910.jpg

目前第一版的硬件測試電路已焊接完畢,第一版測試小車也完成了組裝,下圖是剛組裝起來的平衡車形態的無刷電機小車,就計劃先拿它開刀了,其它形態后面再慢慢玩。小車還算小巧,等測試通過后計劃再做一版集成度更高更小巧的玩玩。

wKgaomTwIK2APNs-AAFHCjPe8UY907.jpg

千里之行始于創建BSP


一切就緒,準備開始擼程序了,那遇到的第一個問題就是目前RTThread的BSP內并沒有我想用的這款GD32E503的處理器(用這款處理器是想玩一玩它的三角函數加速器,有硬件計算電路,就不用查詢法去計算三角函數了,感覺跑FOC會舒服很多)。所以第一步就是要學習一下添加自己的BSP了。

下載GD32E503固件庫和RTT源碼包


做BSP的第一步,自然是下載RTThread源碼和GD32E503的固件庫了。目前RTThread的穩定發行版應該是4.1.0,但我這里只是玩玩,對穩定度要求不高,果斷去碼云上下載了最新的master版本,目前的版本是5.0.1:

wKgaomTwIK2Ab5WwAACq6_kHrlU554.jpg


		1/*RT-Threadversioninformation*/ 2#defineRT_VERSION_MAJOR5/** 3#defineRT_VERSION_MINOR0/** 4#defineRT_VERSION_PATCH1/**

GD32E503的固件庫包含在開發板Demo資料里,最新版本是V1.2.2:

wKgaomTwIK2AP9jpAAD9v8qn-Bo499.jpg

添加GD32E503器件到MDK


GD32E50x的AddOn資源包,目前最新版本是1.3.3,如果還沒有安裝MDK需要先安裝一下MDK,這里不做過多表述,然后再安裝AddOn資源包內的兩個”.pack”文件(也可以只安裝E50x版本的):

wKgaomTwIK2APIKNAAESzxGcyTQ614.jpg

如下圖所示,MDK內的DeviceDatabase內能找到GD32E50x系列的器件列表,證明資源包安裝成功。

wKgaomTwIK2AUPCjAABjJq9d2KE394.png

添加libraries


拷貝固件庫到BSP的libraries目錄內

解壓RTT源碼包和固件庫壓縮包,先拷貝固件庫的”GD32E50x_Firmware_Library”文件夾到RTT源碼包的”bsp/gd32/arm/libraries/“路徑下:

wKgaomTwIK2AcCLiAAEPcS4AO0I987.jpg

修改libraries目錄內的配置文件

這里可以看到libraries目錄下還有兩個配置文件“Kconfig”和“.ignore_format.yml”,Kconfig文件后面用menuconfig或RTthreadStudio IDE去配置肯定會用到,另外一個文件暫時不知道什么用途,但不妨一起修改了,Kconfig文件修改如下(文檔末尾添加GD32E5的配置信息):


		

1configSOC_FAMILY_GD32 2bool 3configSOC_SERIES_GD32F1 4bool 5selectARCH_ARM_CORTEX_M3 6selectSOC_FAMILY_GD32 7configSOC_SERIES_GD32F2 8bool 9selectARCH_ARM_CORTEX_M3 10selectSOC_FAMILY_GD32 11configSOC_SERIES_GD32F3 12bool 13selectARCH_ARM_CORTEX_M4 14selectSOC_FAMILY_GD32 15configSOC_SERIES_GD32F4 16bool 17selectARCH_ARM_CORTEX_M4 18selectSOC_FAMILY_GD32 19configSOC_SERIES_GD32E5#addbycjl 20bool 21selectARCH_ARM_CORTEX_M33 22selectSOC_FAMILY_GD32

“.yml”文件把GD32E50x的固件庫路徑名添加到數組末尾:


		

1dir_path: 2-GD32F10x_Firmware_Library 3-GD32F20x_Firmware_Library 4-GD32F30x_Firmware_Library 5-GD32F4xx_Firmware_Library 6-GD32E50x_Firmware_Library

給固件庫添加SConscript構建配置文件

從其它固件庫文件內(我用的F4xx)拷貝一份”SConscript”文件到新加入的固件庫路徑內:

wKgaomTwIK6AUpADAAA40YDyVo4124.png


		

1importrtconfig 2frombuildingimport* 3#getcurrentdirectory 4cwd=GetCurrentDir() 5#ThesetofsourcefilesassociatedwiththisSConscriptfile. 6src=Split(''' 7CMSIS/GD/GD32E50x/Source/system_gd32e50x.c 8GD32E50x_standard_peripheral/Source/gd32e50x_gpio.c 9GD32E50x_standard_peripheral/Source/gd32e50x_rcu.c 10GD32E50x_standard_peripheral/Source/gd32e50x_exti.c 11GD32E50x_standard_peripheral/Source/gd32e50x_misc.c 12''') 13#remove:GD32E50x_standard_peripheral/Source/gd32e50x_syscfg.c 14ifGetDepend(['RT_USING_SERIAL']): 15src+=['GD32E50x_standard_peripheral/Source/gd32e50x_usart.c'] 16ifGetDepend(['RT_USING_I2C']): 17src+=['GD32E50x_standard_peripheral/Source/gd32e50x_i2c.c'] 18ifGetDepend(['RT_USING_SPI']): 19src+=['GD32E50x_standard_peripheral/Source/gd32e50x_spi.c'] 20ifGetDepend(['RT_USING_CAN']): 21src+=['GD32E50x_standard_peripheral/Source/gd32e50x_can.c'] 22ifGetDepend(['BSP_USING_ETH']): 23src+=['GD32E50x_standard_peripheral/Source/gd32e50x_enet.c'] 24ifGetDepend(['RT_USING_ADC']): 25src+=['GD32E50x_standard_peripheral/Source/gd32e50x_adc.c'] 26ifGetDepend(['RT_USING_DAC']): 27src+=['GD32E50x_standard_peripheral/Source/gd32e50x_dac.c'] 28ifGetDepend(['RT_USING_RTC']): 29src+=['GD32E50x_standard_peripheral/Source/gd32e50x_rtc.c'] 30src+=['GD32E50x_standard_peripheral/Source/gd32e50x_pmu.c'] 31ifGetDepend(['RT_USING_WDT']): 32src+=['GD32E50x_standard_peripheral/Source/gd32e50x_wwdgt.c'] 33src+=['GD32E50x_standard_peripheral/Source/gd32e50x_fwdgt.c'] 34ifGetDepend(['RT_USING_SDIO']): 35src+=['GD32E50x_standard_peripheral/Source/gd32e50x_sdio.c'] 36src+=['GD32E50x_standard_peripheral/Source/gd32e50x_dma.c'] 37path=[ 38cwd+'/CMSIS/GD/GD32E50x/Include', 39cwd+'/CMSIS', 40cwd+'/GD32E50x_standard_peripheral/Include',] 41CPPDEFINES=['USE_STDPERIPH_DRIVER'] 42group=DefineGroup('Libraries',src,depend=[''],CPPPATH=path,CPPDEFINES=CPPDEFINES) 43Return('group')

創建BSP


拷貝BSP模板

任意拷貝一份BSP文件夾(我同樣也是用的407)重命名為E503:

wKgaomTwIK6AUW_0AAEH11BbmTY785.jpg

修改board.h頭文件

其中主要需要修改的內容都在board路徑下。先看board.h文件,我這里沒有做外部SDRAM,所以注釋掉相關定義,我板子實際焊的是GD32E503RCT6,所以SRAM大小改為96KB,再把相關頭文件名修改一下:


		

1#ifndef__BOARD_H__ 2#define__BOARD_H__ 3#include"gd32e50x.h" 4#include"drv_usart.h" 5#include"drv_gpio.h" 6#include"gd32e50x_exti.h" 7//#defineEXT_SDRAM_BEGIN(0xC0000000U)/*thebeginingaddressofexternalSDRAM*/ 8//#defineEXT_SDRAM_END(EXT_SDRAM_BEGIN+(32U*1024*1024))/*theendaddressofexternalSDRAM*/ 9//InternalSRAMmemorysize[Kbytes]<8-64> 10//Default:64 11#ifdef__ICCARM__ 12//Use*.icframsymbal,toavoidhardcode. 13externchar__ICFEDIT_region_RAM_end__; 14#defineGD32_SRAM_END&__ICFEDIT_region_RAM_end__ 15#else 16#defineGD32_SRAM_SIZE96//96forGD32E503xC128forGD32E503xE... 17#defineGD32_SRAM_END(0x20000000+GD32_SRAM_SIZE*1024) 18#endif 19#ifdef__ARMCC_VERSION 20externintImage$$RW_IRAM1$$ZI$$Limit; 21#defineHEAP_BEGIN(&Image$$RW_IRAM1$$ZI$$Limit) 22#elif__ICCARM__ 23#pragmasection="HEAP" 24#defineHEAP_BEGIN(__segment_end("HEAP")) 25#else 26externint__bss_end; 27#defineHEAP_BEGIN(&__bss_end) 28#endif 29#defineHEAP_ENDGD32_SRAM_END 30#endif

添加gd32e50x_libopt.h

在固件庫內的隨便一個例程路徑內拷貝一份”gd32e50x_libopt.h”到當前bsp的board路徑內,替換掉原有的“gd32f4xx_libopt.h”

wKgaomTwIK6ANqY9AACmplBaY7k771.png

修改board目錄下的Kconfig和SConscript配置文件

而對于board目錄下的“Kconfig”和“SConscript”配置文件也要稍作修改,基本都是把F4xx的字符串改成E50x的。稍需注意的是“SConscript”文件內對于啟動文件相關的配置,E50x有高密度(hd)和互聯(cl)兩個版本。我這里用的E503RC或者是RE都是高密度版本,所以選擇hd的匯編啟動文件。而且還需要說明的是,雖然我這里沒有注釋掉gcc編譯器下的啟動文件,但其實E503的固件庫內并沒有提供gcc版本的啟動文件,也就是說后面不能用RTT的IDE去開發了。等什么時候有了再加進來吧。或者后面看需要,不行就自己改一版gcc編譯器的啟動文件。目前這兩個文件就暫且修改這么多,后面再看情況,如有問題再進行修改。

“SConscript”文件修改如下:


		

1importos 2importrtconfig 3frombuildingimport* 4Import('SDK_LIB') 5cwd=GetCurrentDir() 6#addgeneraldrivers 7src=Split(''' 8board.c 9''') 10path=[cwd] 11startup_path_prefix=SDK_LIB 12ifrtconfig.PLATFORMin['gcc']: 13src+=[startup_path_prefix+'/GD32E50x_Firmware_Library/CMSIS/GD/GD32E50x/Source/GCC/startup_gd32e50x_hd.s'] 14elifrtconfig.PLATFORMin['armcc','armclang']: 15src+=[startup_path_prefix+'/GD32E50x_Firmware_Library/CMSIS/GD/GD32E50x/Source/ARM/startup_gd32e50x_hd.s'] 16elifrtconfig.PLATFORMin['iccarm']: 17src+=[startup_path_prefix+'/GD32E50x_Firmware_Library/CMSIS/GD/GD32E50x/Source/IAR/startup_gd32e50x_hd.s'] 18CPPDEFINES=['GD32E50X','GD32E50X_HD'] 19group=DefineGroup('Drivers',src,depend=[''],CPPPATH=path,CPPDEFINES=CPPDEFINES) 20Return('group')

修改三種編譯器用的鏈接腳本

修改”board/linker_scripts”目錄下的連接文件,如無特殊要求可不對連接腳本做太多修改,只需要修改RAM和ROM地址和大小即可,以“link.sct”為例:


		

1LR_IROM10x080000000x00040000{;loadregionsize_region256KB 2ER_IROM10x080000000x00040000{;loadaddress=executionaddress 3*.o(RESET,+First) 4*(InRoot$$Sections) 5.ANY(+RO) 6} 7RW_IRAM10x200000000x00018000{;RWdata96KB 8.ANY(+RW+ZI) 9} 10}

修改BSP頂層SConstruct和rtconfig.py文件

修改新建bsp目錄下的SConstruct文件和rtconfig.py文件:

wKgaomTwIK6AYNZLAAAxBvhKST4830.png

SConstruct文件只需要修改“gd32_library”的值:


		

1gd32_library='GD32E50x_Firmware_Library'

wKgaomTwIK6AdAGiAACD1LInp1k542.png

修改工程模板

接下來修改工程模板文件,我這邊只修改MDK5版本的工程模板:

wKgaomTwIK6AMyA3AABSXqwBh4I583.png

修改Device為實際使用的GD32E503RC:

wKgaomTwIK-ABqPqAACtfcDdxCA575.png

調試工具改成DAP:

wKgaomTwIK-AeK8OAABtU9EJxYc709.png

利用env工具配置RTthread并生成MDK工程

在新鍵的bsp目錄下運行env工具(env工具的安裝與使用請參考RTT官方文檔),對RTT做初步配置:

wKgaomTwIK-ARhzGAABtngr3seI198.png

最后根據提示,輸入命令生成mdk5的工程,(如果想要提交自己制作的BSP,請參照官方BSP制作規范):

wKgaomTwIK-AYgJmAAAoGuQrzUI408.png

下載驗證


最后打開工程,稍微修改一下main.c內的內容,加一條調試語句,修改對應的LED引腳。編譯一下,如果能編譯通過說明上面修改的內容沒問題,如果有錯誤請仔細檢查上面格配置文件修改的內容是否正確或者自行根據錯誤提示進行修改。燒錄程序就可以看到運行效果了。


		

1#include 2#include 3#include 4#include 5/*definedtheLED2pin:PC6*/ 6#defineLED_PINGET_PIN(B,11) 7#defineBUZZER_PINGET_PIN(B,12) 8intmain(void) 9{ 10intcount=1; 11/*setLED2pinmodetooutput*/ 12rt_pin_mode(LED_PIN,PIN_MODE_OUTPUT); 13rt_pin_write(BUZZER_PIN,PIN_LOW); 14rt_pin_mode(BUZZER_PIN,PIN_MODE_OUTPUT); 15rt_kprintf("無刷電機小車測試程序! "); 16while(count++) 17{ 18rt_pin_write(LED_PIN,PIN_HIGH); 19rt_thread_mdelay(500); 20rt_pin_write(LED_PIN,PIN_LOW); 21rt_thread_mdelay(500); 22} 23returnRT_EOK; 24}

wKgaomTwIK-AQSVuAADwKUgIUAc456.jpg

今天就先玩到這里,后面再使用一段時間這個BSP,需要優化的地方優化一下,然后再往碼云上提交一份。

其它鏈接


視頻方面目前只有一個前期的開題視頻,簡單講了一下想做一些什么,過了一遍硬件電路的設計方案,想了解詳情的可以觀看下面的視頻哦!更多的階段性功能展示以及調試視頻后續再慢慢更新。

【無刷電機小車——搞起來!-嗶哩嗶哩】 https://b23.tv/ZmvhBS7

無刷電機小車開發記錄02——BSP導入RTThreadStudio:https://club.rt-thread.org/ask/article/4c90d45831ce0722.html

無刷電機小車開發記錄03——PWM信號輸入捕獲驅動:https://club.rt-thread.org/ask/article/dc39eb608f1eba75.html

無刷電機小車開發記錄04——互補PWM驅動移植:https://club.rt-thread.org/ask/article/004229252f06d18d.html

———————End——————


點擊閱讀原文進入官網


原文標題:無刷電機小車開發記錄01——制作RTT內GD32E503器件的BSP

文章出處:【微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。


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

    關注

    32

    文章

    1614

    瀏覽量

    44877

原文標題:無刷電機小車開發記錄01——制作RTT內GD32E503器件的BSP

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    無刷電機PCBA板廠家

    作為專注于無刷電機PCBA板研發與生產的核心廠家,鈿馳科技推出了覆蓋多場景需求的無刷電機驅動板,涵蓋TC-BL2430、TC-BL3650、TC-BL3625、TC-BL2840、TC-BL3028
    的頭像 發表于 02-03 18:07 ?1068次閱讀
    <b class='flag-5'>無刷電機</b>PCBA板廠家

    兆易創新GD32 MCU家族高性能產品再添新銳:GD32F503/505系列芯片實力亮相

    業界領先的半導體器件供應商 兆易創新GigaDevice 今日宣布,正式推出GD32F503/505高性能系列32位通用微控制器,顯著擴大了基于Arm? Cortex?-M33內核的產品陣容,為
    的頭像 發表于 11-05 09:24 ?752次閱讀

    gd323230bsp編譯報錯如何處理?

    使用的是rt5.0的gd32e230kstart bsp在編譯的時候報錯了,顯示數據類型不匹配 沒有改動過,是編譯器設置的問題嗎
    發表于 10-13 07:52

    GD32的串口DMA收發數據失敗怎么解決?

    還是開發人員在開發GD32的BSP時所遺漏。 GD作為國產芯片,是替代某些國外芯片的國產主力軍,希望R
    發表于 09-17 06:04

    同芯片不同開發板的BSP能不能用?

    RTT studio中基于開發板創建項目,芯片選擇是一樣的,但是彈出的開發板和我購買到的不一樣,這種情況下會有問題嗎? 不用RTT studio,使用env工具,選擇
    發表于 09-16 06:40

    bsp制作下載運行出錯怎么解決?

    /stm32-bsp/STM32%E7%B3%BB%E5%88%97BSP%E5%88%B6%E
    發表于 09-11 06:33

    使用ENV工具scons —dist打包GD32F470的BSP一直報錯,是什么原因導致?

    最近使用ENV工具scons —dist打包GD32F470的BSP一直出現下面的錯誤,不知道是什么原因;STM32的BSP,scons —dist打包正常的。 $ scons --dist
    發表于 09-09 06:07

    無刷電機弱磁控制:技術原理與實戰應用

    電機控制領域,弱磁控制技術一直是備受關注的焦點之一。尤其是對于無刷電機來說,弱磁控制不僅能夠提升其性能,還能拓展其應用范圍。今天,就讓我們深入探討一下無刷電機弱磁控制的奧秘以及它所帶來的諸多
    的頭像 發表于 08-01 18:05 ?9707次閱讀
    <b class='flag-5'>無刷電機</b>弱磁控制:技術原理與實戰應用

    【RA-Eco-RA6M4開發板評測】SEGGER_RTT打印日志

    ;amp;g_ioport_ctrl,BSP_IO_PORT_01_PIN_06,BSP_IO_LEVEL_LOW); } } 編譯后下載到開發板中。 【RTT_view的配置】
    發表于 07-31 14:40

    無刷電機的驅動MOSFET

    講解當無葉風扇送出柔風時,內部13萬轉無刷電機正被MOSFET精準驅動;掃地機鉆進7cm縫隙,7組電機協同完成毫米級貼邊清掃;電動牙刷以31,000次/分鐘振動清潔齒縫,筋膜槍在50μs響應力度調節,而高空作業無人機正用高壓水
    的頭像 發表于 06-09 11:09 ?891次閱讀
    <b class='flag-5'>無刷電機</b>的驅動MOSFET

    【RA4L1-SENSOR】+ RA4L1-SENSOR開發版之使用Jlink的RTT打印功能代替串口

    */ R_BSP_NonSecureEnter(); #endif 編譯完成,燒錄軟件到板子 4。打開JLINK 的RTT View軟件 選擇R7FA4L1BD 無法連接,需要修改起始地址 打開map文件 找到它 填入地址 然后就看到打印了 詳情看視頻
    發表于 06-09 09:03

    無刷電機詳解及其應用

    無刷電機(Brushless Motor)作為現代電力驅動技術的核心部件之一,憑借高效率、長壽命和低維護成本等優勢,廣泛應用于無人機、電動汽車、工業自動化等領域。其工作原理與傳統有刷電機存在本質區別
    的頭像 發表于 06-07 16:30 ?8534次閱讀
    <b class='flag-5'>無刷電機</b>詳解及其應用

    無刷電機的驅動MOSFET

    當無葉風扇送出柔風時,內部13萬轉無刷電機正被MOSFET精準驅動;掃地機鉆進7cm縫隙,7組電機協同完成毫米級貼邊清掃;電動牙刷以31,000次/分鐘振動清潔齒縫,筋膜槍在50μs響應力度調節
    的頭像 發表于 06-06 16:26 ?942次閱讀
    <b class='flag-5'>無刷電機</b>的驅動MOSFET

    無刷電機FOC控制筆記

    矢量控制的核心思想是為了簡化無刷電機的控制模型,將一個需要換相的無刷電機通過各種算法變換,抽象為一個直流電機的控制模型,只需要控制簡單的兩個直流分量來控制無刷電機,其中Vq抽象為直流
    的頭像 發表于 05-21 19:33 ?2166次閱讀
    <b class='flag-5'>無刷電機</b>FOC控制筆記

    有刷電機無刷電機的區別工作總結

    時源芯微 專業EMC解決方案提供商 在電機技術日新月異的今天,有刷電機無刷電機作為兩類主流驅動裝置,廣泛應用于各類工業與民用設備中。二者雖同為電機,卻存在著本質上的差異。從基本的工作
    的頭像 發表于 04-14 14:59 ?3436次閱讀
    有刷<b class='flag-5'>電機</b>與<b class='flag-5'>無刷電機</b>的區別工作總結