一、概述
在半個月前,先楫發(fā)布了rtthread bsp 1.3.0版本,該版本其中一個功能就是加入了hpm5300的支持,對應的板型是hpm5300evk,對應的芯片型號是hpm5361。從先楫官方的數(shù)據(jù)手冊可知,除了豐富的電機外設(shè),也有對應的豐富通訊外設(shè)接口。這里只截圖了通訊接口部分,其他功能可以詳情看對應的數(shù)據(jù)手冊。

對應的rtthread設(shè)備驅(qū)動框架中,先楫也做好了不少外設(shè),其中包括了gpio, uart, spi, timer, i2c, usb, canfd等。

本來主要著重于利用rtthread的芯片設(shè)備驅(qū)動,制作一個USB轉(zhuǎn)換器,USB CDC轉(zhuǎn)換SPI、IIC、CAN這三個設(shè)備,方便用戶可以簡單驗證外設(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)換器,那就需要一個PC端的上位機進行數(shù)據(jù)簡易轉(zhuǎn)換收發(fā),主要實現(xiàn)了USB轉(zhuǎn)SPI/IIC/CAN,使用QT開發(fā),code倉庫也提供代碼盒可執(zhí)行文件。

(二)新建工程
這里使用模板工程進行新建,調(diào)試器選擇FT2232。

(三)外設(shè)驅(qū)動加入
這里使用到了USB、SPI、I2C、CAN,故在硬件的芯片設(shè)備驅(qū)動中需要選擇以下:

組件中,確保CAN、I2C、SPI的設(shè)備驅(qū)動程序?qū)鼓?/p>

(四)添加軟件包(cherryusb加入和配置)
在軟件包中搜索cherryusb,進行添加。

點擊右鍵選擇配置項

分別使能USB device模式,速度選擇HS,USB IP選擇HPM,并使能usb cdc設(shè)備類型。

(五)加入應用
1、以上配置完成后,進行編譯下,發(fā)現(xiàn)會報錯提示沒有usb_config.h這個頭文件

該頭文件主要是需要用戶自行配置USB相關(guān)參數(shù),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參數(shù),可以在config中加入。

3、USB打開與關(guān)閉設(shè)備操作流程
這里以SPI設(shè)備作為例子
USB tools的設(shè)備打開和關(guān)閉操作主要通過轉(zhuǎn)換cdc的配置參數(shù)進行,比如設(shè)置波特率、parity和stop位來表示SPI的數(shù)據(jù)模式和傳輸模式。在QT的源碼中可以看到:

下位機中, cherryusb的串口配置同樣提供了回調(diào) usbd_cdc_acm_set_line_coding這個API,我們需要把對應的串口配置保存起來,在一個線程里面進行處理判斷USB設(shè)備的打開和關(guān)閉。

這些串口參數(shù)根據(jù)上位機進行解析判斷打開或者關(guān)閉的是哪個設(shè)備,比如SPI。

驗證打開下SPI。

通過msh打印可知道,下位機解析設(shè)備完成,同樣I2C和CAN也是如此

4、外設(shè)收發(fā)與初始化
在設(shè)備框架中,rtthread對于設(shè)備的操作無非就是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設(shè)備使用的是rt_spi_configure這個API

對于config參數(shù)如下解釋

如此一來可以封裝如下:

對于SPI的收發(fā),rtthread同樣也提供了對應接口

同樣進行封裝

(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兩個API,以此可以進行封裝

(3)CAN
同樣rtthread也有對應的文檔說明
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/can/can
先楫在適配CAN設(shè)備的時候,支持了硬件濾波組

在接收上,可以設(shè)置接收回調(diào)函數(shù),該函數(shù)可以發(fā)送一個事件或者信號量通知CAN數(shù)據(jù)處理線程有數(shù)據(jù)到達,可以進行接收。


5、USB數(shù)據(jù)轉(zhuǎn)換
通過以上的外設(shè)數(shù)據(jù)收發(fā)API封裝,可以在USB的接收中,也類似做個回調(diào),發(fā)送信號量通知處理

三、驗證
在I2C中,另外一塊HPM5300EVK燒錄hpm_sdk的從機例子,讀取地址為0x16,讀取8字節(jié),接收消息中可以顯示到

在SPI中,另外一塊HPM5300EVK燒錄hpm_sdk的從機例子,進行數(shù)據(jù)收發(fā),USB轉(zhuǎn)換器可以正常顯示收發(fā)

在CAN中,使用CAN盒進行收發(fā),也可正常顯示收發(fā)。

四、結(jié)論
1、先楫對接rtthread的設(shè)備驅(qū)動豐富,基本的通訊外設(shè)都可以使用rtthread的外設(shè)設(shè)備框架,保證項目的無縫切換。
2、使用rtthread的設(shè)備驅(qū)動框架,可以無需太多理解底層,只需關(guān)注應用開發(fā),實現(xiàn)快速開發(fā)。
3、rtthread的文檔相對豐富,從快速上手到內(nèi)核、設(shè)備驅(qū)動、組件、軟件包等都有對應的說明。
鏈接:https://www.rt-thread.org/document/site/#/
———————End———————
新生態(tài),創(chuàng)未來 | 2023RT-Thread 開發(fā)者大會開啟報名
邀請你參加 2023 RT-Thread 開發(fā)者大會的六大理由
1、刷新RT-Thread最新技術(shù)動態(tài)和產(chǎn)業(yè)服務能力
2、聆聽行業(yè)大咖分享,洞察產(chǎn)業(yè)趨勢
3、豐富的技術(shù)和產(chǎn)品展示,前沿技術(shù)發(fā)展和應用
5、精美伴手禮人手一份開發(fā)板盲盒和免費午餐
6、黑科技滿點~滴水湖地鐵口安排無人車接送至會場
立刻掃碼報名吧

點擊閱讀原文報名
原文標題:hpm5361在rtthread輕松搞起USB轉(zhuǎn)換器
文章出處:【微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
RT-Thread
+關(guān)注
關(guān)注
32文章
1616瀏覽量
44923
原文標題:hpm5361在rtthread輕松搞起USB轉(zhuǎn)換器
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
汽車級高電流降壓轉(zhuǎn)換器MAX16984:設(shè)計與應用詳解
北斗信號轉(zhuǎn)發(fā)器 多通道GNSS衛(wèi)星信號轉(zhuǎn)發(fā)器介紹 gps信號轉(zhuǎn)換器
如何使用多相升壓轉(zhuǎn)換器
國產(chǎn)電平轉(zhuǎn)換器雙雄登場!GS0104/GS0108 如何破解多場景電壓適配難題?
汽車USB充電新選擇:TPS2585x-Q1雙路3A USB Type-C充電端口轉(zhuǎn)換器解析
意法半導體50W GaN反激式轉(zhuǎn)換器簡化應用設(shè)計
CherryUSB和RTThread自帶的USB如何合理使用?
Texas Instruments TPS56837H 8 A同步降壓轉(zhuǎn)換器數(shù)據(jù)手冊
工業(yè)級USB轉(zhuǎn)RS-485/422轉(zhuǎn)換器DAM-3238的功能特性與應用解析
USB協(xié)議轉(zhuǎn)換器:USB轉(zhuǎn)TTL/232/485,光電隔離
如何使用 miniProg4 作為 USB-I2C 轉(zhuǎn)換器?
USB轉(zhuǎn)485/422轉(zhuǎn)換器拆解
hpm5361在rtthread輕松搞起USB轉(zhuǎn)換器
評論