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