一、概述
在半個月前,先楫發布了rtthread bsp 1.3.0版本,該版本其中一個功能就是加入了hpm5300的支持,對應的板型是hpm5300evk,對應的芯片型號是hpm5361。從先楫官方的數據手冊可知,除了豐富的電機外設,也有對應的豐富通訊外設接口。這里只截圖了通訊接口部分,其他功能可以詳情看對應的數據手冊。
對應的rtthread設備驅動框架中,先楫也做好了不少外設,其中包括了gpio, uart, spi, timer, i2c, usb, canfd等。
本來主要著重于利用rtthread的芯片設備驅動,制作一個USB轉換器,USB CDC轉換SPI、IIC、CAN這三個設備,方便用戶可以簡單驗證外設功能以及調試需要。
本文的code例子,找到usb_converter鏈接:
https://gitee.com/RCSN/hpmicro_rtthread_demo
二、開發流程
(一)鏈接
1、rtthread的bsp包安裝教程詳看先楫官方公眾號發布的文章:【重磅來襲】RT-Thread BSP v1.3.0 發布
2、既然是USB轉換器,那就需要一個PC端的上位機進行數據簡易轉換收發,主要實現了USB轉SPI/IIC/CAN,使用QT開發,code倉庫也提供代碼盒可執行文件。
(二)新建工程
這里使用模板工程進行新建,調試器選擇FT2232。
(三)外設驅動加入
這里使用到了USB、SPI、I2C、CAN,故在硬件的芯片設備驅動中需要選擇以下:
組件中,確保CAN、I2C、SPI的設備驅動程序對應使能
(四)添加軟件包(cherryusb加入和配置)
在軟件包中搜索cherryusb,進行添加。
點擊右鍵選擇配置項
分別使能USB device模式,速度選擇HS,USB IP選擇HPM,并使能usb cdc設備類型。
(五)加入應用
1、以上配置完成后,進行編譯下,發現會報錯提示沒有usb_config.h這個頭文件
該頭文件主要是需要用戶自行配置USB相關參數,cherryusb也提供了該模板文件,在倉庫的主目錄中cherryusb_config_template.h
2、由此我們可以在工程下右鍵新建一個文件夾,可叫usb2xxx,里面再新建一個inc和src文件夾,以及再新建個SConscript文件
SConscript文件中寫入添加Inc包含,以及src下的所有文件加入。
cherryusb_config_template.h改名為usb_config.h,并放在usb2xxx的inc中
需要注意配置的是,USB的printf和malloc free需要切換為rtthread的對應API
先楫有自身的usb vid參數,可以在config中加入。
3、USB打開與關閉設備操作流程
這里以SPI設備作為例子
USB tools的設備打開和關閉操作主要通過轉換cdc的配置參數進行,比如設置波特率、parity和stop位來表示SPI的數據模式和傳輸模式。在QT的源碼中可以看到:
下位機中, cherryusb的串口配置同樣提供了回調 usbd_cdc_acm_set_line_coding這個API,我們需要把對應的串口配置保存起來,在一個線程里面進行處理判斷USB設備的打開和關閉。
這些串口參數根據上位機進行解析判斷打開或者關閉的是哪個設備,比如SPI。
驗證打開下SPI。
通過msh打印可知道,下位機解析設備完成,同樣I2C和CAN也是如此
4、外設收發與初始化
在設備框架中,rtthread對于設備的操作無非就是open, close, config, write, read等操作,同樣先楫也對應做好了適配
(1)SPI
在rtthread官方文檔中
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/spi/spi
配置SPI設備使用的是rt_spi_configure這個API
對于config參數如下解釋
如此一來可以封裝如下:
對于SPI的收發,rtthread同樣也提供了對應接口
同樣進行封裝
(2)I2C
在rtthread官方文檔中
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/i2c/i2c
對于I2C的數據收發,提供了rt_i2c_master_send和rt_i2c_master_recv兩個API,以此可以進行封裝
(3)CAN
同樣rtthread也有對應的文檔說明
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/can/can
先楫在適配CAN設備的時候,支持了硬件濾波組
在接收上,可以設置接收回調函數,該函數可以發送一個事件或者信號量通知CAN數據處理線程有數據到達,可以進行接收。
5、USB數據轉換
通過以上的外設數據收發API封裝,可以在USB的接收中,也類似做個回調,發送信號量通知處理
三、驗證
在I2C中,另外一塊HPM5300EVK燒錄hpm_sdk的從機例子,讀取地址為0x16,讀取8字節,接收消息中可以顯示到
在SPI中,另外一塊HPM5300EVK燒錄hpm_sdk的從機例子,進行數據收發,USB轉換器可以正常顯示收發
在CAN中,使用CAN盒進行收發,也可正常顯示收發。
四、結論
1、先楫對接rtthread的設備驅動豐富,基本的通訊外設都可以使用rtthread的外設設備框架,保證項目的無縫切換。
2、使用rtthread的設備驅動框架,可以無需太多理解底層,只需關注應用開發,實現快速開發。
3、rtthread的文檔相對豐富,從快速上手到內核、設備驅動、組件、軟件包等都有對應的說明。
鏈接:https://www.rt-thread.org/document/site/#/
———————End———————
新生態,創未來 | 2023RT-Thread 開發者大會開啟報名
邀請你參加 2023 RT-Thread 開發者大會的六大理由
1、刷新RT-Thread最新技術動態和產業服務能力
2、聆聽行業大咖分享,洞察產業趨勢
3、豐富的技術和產品展示,前沿技術發展和應用
5、精美伴手禮人手一份開發板盲盒和免費午餐
6、黑科技滿點~滴水湖地鐵口安排無人車接送至會場
立刻掃碼報名吧
點擊閱讀原文報名
-
RT-Thread
+關注
關注
31文章
1305瀏覽量
40338
原文標題:hpm5361在rtthread輕松搞起USB轉換器
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論