實現穩定可靠的USB通信,既依賴于嚴謹的硬件電路設計,也離不開高效的軟件開發支持。本文將從電源管理、信號完整性等硬件角度出發,結合LuatOS平臺的API使用技巧,為開發者提供一站式USB開發指導。
本文以Air780EPM系列低功耗模組為例,分享USB接口的硬件設計要點以及LuatOS高效開發API,幫助開發者在設計中避開常見陷阱,快速構建穩定可靠的USB應用。

01. 模組管腳
Air780EPM系列模組與USB相關的管腳,如上方管腳圖右側淺綠色塊所示:
VBUS:PIN61;
USB_DM:PIN60;
USB_DP:PIN59;
特別說明:管腳圖中所示的USB_DN正確的寫法應該是USB_DM,歷史原因一直將錯誤寫法延續到了現在。
USB_DM:USB Data Minus,USB數據負信號;
USB_DP:USB Data Positive,USB數據正信號。
02. 功能說明
Air780EPM系列模組支持如下USB功能:
支持USB Full speed:全速模式,最高支持12Mbps,即1.5MB/s;
支持USB High speed:高速模式,最高支持480Mbps,即40MB/s;
支持USB下載軟件,Boot from USB;
支持USB RNDIS:搭配Windows/Linux實現快速上網;
僅支持USB Slave,不支持USB HOST。
03. 注意事項
與USB相關的操作,重點關注如下幾個方面:
上電開機前將USB_BOOT(GPIO0)上拉至 VDD_EXT,模組將進入USB下載模式(Boot from USB);
模組內部用于USB部分供電的電源是LDO33USB(3.3V輸出),該LDO只為USB功能提供電源,模組管腳未引出;
低功耗模式pm.WORK_MODE,1和PSM+模式pm.WORK_MODE,3 下,會將LDO33USB關閉;
模組VBAT最低2.3V左右(實測最低可至 2.1V)時仍可工作,但因此時LDO33USB的輸入(2.3V)已遠低于輸出(3.3V),所以USB已無法正常工作;
VBUS,在模組內部實際接的是WAKEUP1,USB_VBUS的5V經過分壓后接到WAKEUP1,用于USB插入檢測。
04. 硬件參考設計
USB接口相關硬件參考設計如下圖示,橫屏或點擊放大查看。

▼ 相關注意事項 ▼
USB接口硬件設計需要特別注意如下幾個方面:
1)阻抗匹配
USB接口的PCB設計中,差分信號線(USB_DP/USB_DM)的阻抗需控制在90Ω±10%(即81Ω~99),這是保證信號完整性的關鍵參數。
注意:阻抗不匹配將會導致信號反射、眼圖閉合、誤碼率上升,甚至通信失敗。
2)布線原則
差分對等長匹配:長度差控制在5mil以內,避免時序偏差和共模干擾;
減少換層過孔:每次換層加一對回流地過孔,維持信號回流路徑連續性,降低阻抗不連續風險;
保持完整參考平面:避免跨分割,優先內層布線,包地處理減少串擾。
3)TVS保護
USB接口容易引入靜電干擾,因此需要在電路上增加 TVS保護。
USB High speed差分數據線選擇TVS的最關鍵參數是結電容容值,需要小于1pF;我們驗證使用過的是芯禾微XESD124N-5V0。
VBUS電源上使用的TVS,我們使用過的是芯禾微XESD307D-5V0。
相關手冊詳見:
https://docs.openluat.com/air780epm/product/air780exxpins/#usb
05. 與USB相關的LuatOS API
LuatOS高度封裝與靈活的API設計,簡化了傳統USB開發的繁瑣流程。
▼ pm.USB ▼
API手冊詳見:
https://docs.openluat.com/osapi/core/pm/
常量含義:USB的供電使能;
數據類型:number;
常量取值:0;
適用:Air780EXX系列、Air700E系列、Air8000系列模組;
示例代碼:

▼ mobile.CONF_USB_ETHERNET ▼
API手冊詳見:
https://docs.openluat.com/osapi/core/mobile/
常量含義:蜂窩網絡模塊的USB以太網卡控制;
數據類型:number;
常量取值:11;
取值范圍:0x01:開啟RNDIS功能;0x03:開啟RNDIS功能,使用NAT模式(基站分配ip);0x05:開啟ECM功能;0x07:開啟ECM功能,使用NAT模式(基站分配ip)。
注意事項:控制設備的USB以太網卡功能,通過位操作來控制不同的功能;僅在開啟前可以修改;bit2:協議選擇(1ECM協議,0RNDIS協議);必須在飛行模式下設置才能生效。
適用:Air780EXX系列和Air8000系列模組。
示例代碼:

▼ uart.VUART_0 ▼
API手冊詳見:
https://docs.openluat.com/osapi/core/uart/
常量含義:USB虛擬串口;
數據類型:number;
常量取值:32;
適用:Air780EXX系列和Air8000系列模組。
示例代碼:

今天的內容就分享到這里了~
審核編輯 黃宇
-
usb
+關注
關注
60文章
8462瀏覽量
285493 -
LuatOS
+關注
關注
0文章
165瀏覽量
2733
發布評論請先 登錄
LuatOS:485 總線硬件設計要點與 exmodbus 庫開發實戰
LuatOS 框架的嵌入式系統架構設計原理
基于LuatOS的MQTT物聯網通信全解
輕松掌握——LuatOS socket基礎知識和應用開發
LuatOS AGPS 輔助定位開發實戰教程
嵌入式開發新選擇:LuatOS腳本框架入門教程
解鎖CAN接口開發高效路徑!五個核心要點一次講透
構建可靠USB應用:硬件設計要點與LuatOS開發技巧!
評論