嵌入式開發中,usb通信中輸出端點和輸入端點

一. 簡介

本文簡單學習一下,嵌入式開發中,usb的輸出端點和輸入端點。

在嵌入式開發的 USB 通信場景中,輸出端點(OUT Endpoint)?和?輸入端點(IN Endpoint)?是 USB 設備與主機(如電腦、嵌入式主控)進行數據交互的核心 “通道”,其設計和使用直接決定了設備的通信能力。兩者的核心區別圍繞數據流向展開,同時需結合嵌入式設備的硬件特性、USB 協議規范及驅動邏輯來理解。

二.?嵌入式開發中,usb通信中輸出端點和輸入端點

1.?核心定義:數據流向是根本區別

在嵌入式開發中,USB通信的“輸入”(IN)和“輸出”(OUT)端點是以USB主機(Host)為參考基準來定義的。

端點類型
數據流向
核心作用(嵌入式場景)
典型應用舉例
輸出端點(OUT)主機 → 嵌入式設備接收主機下發的控制指令、配置參數或待處理數據主機向嵌入式設備發送控制命令(如電機轉速設置)、向 U 盤寫入文件數據
輸入端點(IN)嵌入式設備 → 主機向主機上報設備狀態、傳感器數據或處理結果嵌入式設備向主機上傳溫濕度數據、U 盤向主機讀取文件數據、攝像頭向主機傳輸圖像幀

2.?嵌入式場景下的共性特性

無論是輸入還是輸出端點,在嵌入式 USB 通信中均需遵循以下共性規則,這些規則由 USB 協議和嵌入式硬件限制共同決定:

(1)?端點是 “單向、專用” 的通道(除了端點0,它用于控制傳輸,可雙向)

  • 每個端點僅支持一個方向的傳輸(要么 IN,要么 OUT),無法雙向復用(除了端點0,它用于控制傳輸,可雙向);
  • 嵌入式設備的端點數量有限(受 USB 控制器硬件限制,如多數低端控制器支持 4~8 個端點),需根據需求分配(如一個設備可同時包含 1 個 OUT 端點和 1 個 IN 端點,實現雙向通信)。

(2)?與傳輸類型強綁定

嵌入式設備的端點必須關聯 USB 協議定義的傳輸類型(不同傳輸類型對應不同的端點類型),輸入 / 輸出端點僅存在于以下 3 種傳輸類型中(控制傳輸的端點有特殊規則,見下文):

傳輸類型
支持的端點方向
嵌入式場景用途
批量傳輸(Bulk)IN 端點、OUT 端點大量數據傳輸(如 U 盤、數據記錄儀),需保證數據完整性
中斷傳輸(Interrupt)IN 端點、OUT 端點小批量、周期性數據(如鍵盤(IN)、鼠標(IN)、設備狀態上報)
同步傳輸(Isochronous)IN 端點、OUT 端點實時性數據(如 USB 麥克風(IN)、USB 音箱(OUT)),不保證數據完整性

(3)?控制傳輸的特殊端點:端點 0(默認控制端點)

所有 USB 設備必須包含一個端點 0(默認控制端點),它是雙向的(可同時實現 IN 和 OUT 功能),僅用于設備枚舉、配置、命令交互(如主機查詢設備信息、發送復位命令),不用于普通數據傳輸。

3.?嵌入式開發中的關鍵差異(OUT 端點 vs IN 端點)

在嵌入式硬件設計、協議棧配置和驅動開發中,輸入 / 輸出端點的處理邏輯存在顯著差異,具體體現在以下 4 個維度:

對比維度
輸出端點(OUT)
輸入端點(IN)
硬件觸發邏輯主機向設備發送數據時,USB 控制器產生?OUT 中斷,嵌入式 MCU 需中斷服務函數中讀取數據設備有數據待上傳時,需主動向 USB 控制器 “提交” 數據,或等待主機發起 IN 事務后,控制器產生?IN 中斷觸發數據發送
數據緩沖區需在嵌入式設備中分配 “接收緩沖區”(用于存儲主機發來的數據),緩沖區大小需 ≥ 端點的 “最大包大小”需分配 “發送緩沖區”(用于存儲待上傳到主機的數據),緩沖區大小需 ≥ 端點的 “最大包大小”
協議棧配置需在 USB 設備描述符(Endpoint Descriptor)中設置?bEndpointAddress?最高位為?0(如端點地址?0x02?表示端點 2,OUT 方向)需設置?bEndpointAddress?最高位為?1(如端點地址?0x82?表示端點 2,IN 方向)
錯誤處理若主機發送的數據錯誤(如 CRC 校驗失敗),嵌入式設備無需處理,主機將自動重傳(批量 / 中斷傳輸)若設備發送的數據錯誤,主機可能丟棄(同步傳輸)或要求重傳(批量 / 中斷傳輸),需在驅動中處理重傳邏輯

三.?嵌入式開發實戰關鍵點

1. 端點參數配置(核心是 “最大包大小”)

嵌入式設備的每個輸入 / 輸出端點必須配置?最大包大小(Max Packet Size),該值由 USB 設備速度和傳輸類型決定,直接影響通信效率,協議規定的默認值如下:

USB 設備速度批量傳輸(Bulk)最大包大小中斷傳輸(Interrupt)最大包大小同步傳輸(Isochronous)最大包大小
低速(Low-Speed,1.5Mbps)不支持批量 / 同步傳輸≤ 8 字節不支持
全速(Full-Speed,12Mbps)≤ 64 字節≤ 64 字節≤ 1023 字節
高速(High-Speed,480Mbps)≤ 512 字節≤ 1024 字節≤ 1024 字節
超高速(Super-Speed,5Gbps)≤ 1024 字節≤ 1024 字節≤ 1024 字節

例:一個全速嵌入式數據采集設備,若用批量 IN 端點上傳數據,最大包大小可配置為 64 字節,每次最多上傳 64 字節;若數據量超過 64 字節,需拆分為多個包連續傳輸。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94194.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【自用】Maven常用依賴

【自用】Maven常用依賴 工具類 Guava Guava(Google Guava)是由Google團隊開發的一套Java開源工具庫,旨在簡化和增強Java開發者的日常工作。它提供了許多實用的工具和基礎設施,覆蓋了集合、并發、字符串處理、I/O、數學運算等多個…

Java 18 新特性及具體應用

目錄 1. UTF-8 默認編碼 (JEP 400) 2. 簡單 Web 服務器 (JEP 408) 3. Javadoc 代碼片段 (JEP 413) 4. switch 模式匹配 (JEP 420, 第二次預覽) 5. 向量 API (JEP 417, 第三次孵化) 總結 Java 18 于 2022 年 3 月發布,引入了多項新特性,旨在提升開發…

unistd.h 常用函數速查表

在這篇文章中,我們將整理一份 unistd.h 常用函數速查表,便于快速查找和記憶,涵蓋文件 I/O、進程管理、系統信息、用戶/組信息等方面。unistd.h 常用函數速查表(POSIX/Linux/macOS) 1. 文件與 I/O 操作函數說明示例int …

【電子通識】芯片生產考驗“三重門”之CP、FT與WAT測試

在我們日常生活中,從手機、電腦到汽車、家電,都離不開一顆顆小小的芯片。你可曾想過,這些功能強大的芯片在出廠前要經過怎樣嚴苛的“體檢”才能保證質量可靠?今天,我們就來聊聊芯片制造過程中三道至關重要的測試關卡&a…

Java RESTful API 構建從入門到精通:一步步打造高效后端服務

還在為高昂的AI開發成本發愁?這本書教你如何在個人電腦上引爆DeepSeek的澎湃算力! 在當今數字化時代,RESTful API 已成為現代Web應用的核心組成部分,它提供了一種標準化、靈活的方式來實現前后端分離和跨平臺數據交互。本文作為一篇完整的指南,將從基礎概念入手,詳細闡述…

TypeScript 接口(interface)

一、接口基礎概念接口(interface)是 TypeScript 的核心類型系統工具,用于定義對象的結構規范。它不關心具體實現細節,只強制要求符合接口定義的對象必須包含指定屬性和方法。例如:interface Person {name: string;age:…

selenium3.141.0執行JS無法傳遞element解決方法

問題:在Chrome 131版本以下執行下面代碼沒有問題,但是在131版本以上出現element無法傳遞問題,執行下面代碼會出現 "Message: javascript error: Cannot read properties of undefined (reading click)"# xpath匹配元素,…

汽車主機廠為何開始押注平臺化視覺?

近年來,隨著智能制造、出口質量標準、新能源整車結構復雜度等多重因素疊加,越來越多主機廠開始從“點狀部署”轉向“系統化導入”,平臺化的AI視覺檢測體系正逐步成為整車廠的標準化選項。在過去,汽車制造四大車間——焊裝、涂裝、…

STM32 - Embedded IDE - GCC - 重定向printf到串口

導言如上所示,在不同的編譯器下,重定向printf到串口時,使用的函數不一樣。 ARMCC(Keil-MDK)使用fputc()GCC使用_write() 總之,GCC/newlib的printf()走_write(),不是fputc()。

51單片機-中斷系統

本質概述思維導圖:51單片機中斷系統中斷系統概述中斷系統是為使CPU具有對外界緊急事件的實時處理能力而設置的。當中央處理機CPU正在處理某件事的時候外界發生了緊急事件請求,要求CPU暫停當前的工作,轉而去處理這個緊急事件,處理完…

ubuntu - 終端工具 KConsole安裝

地址: https://konsole.kde.org/download.html 直接使用自帶安裝管理器安裝即可

QT-左右側邊欄動畫

QT-左右側邊欄動畫演示效果一、核心程序二、鏈接演示效果 一、核心程序 #ifndef SLIDEPANEL_H #define SLIDEPANEL_H#include <QWidget> #include <QPropertyAnimation> #include <QPushButton> #include <QVBoxLayout>class SlidePanel : public QWi…

WebRTC 結合云手機:釋放實時通信與虛擬手機的強大協同效能

開發一個基于 WebRTC 技術的云手機群控系統&#xff0c;實現通過瀏覽器遠程控制多臺云手機&#xff0c;并提供文件管理、代理管理、備份管理等功能。這里只詳細分享 WebRTC 技術。 https://github.com/LingyuCoder?tabrepositories&qsky&type&language&sort …

Kafka中zk的作用是什么

Zookeeper是分布式協調&#xff0c;注意它不是數據庫 kafka中使用了zookeeper的分布式鎖和分布式配置及統一命名的分布式協調解決方案 在kafka的broker集群中的controller的選擇&#xff0c;是通過zk的臨時節點爭搶獲得的 brokerID等如果自增的話也是通過zk的節點version實現的…

【lucene】lucene常用查詢一覽

Lucene 里除了常見的 **TermQuery / BooleanQuery / PhraseQuery / FuzzyQuery / SpanNearQuery** 之外&#xff0c;還有不少“特殊家族”。下面按“族”歸納&#xff0c;一眼就能知道它們各自解決什么問題、跟普通倒排檢索的差別在哪。────────────────── …

base64認識實際使用

Base64是網絡上最常見的用于傳輸8Bit字節碼的編碼方式之一&#xff0c;Base64就是一種基于64個可打印字符來表示二進制數據的方法。 Base64&#xff0c;就是包括小寫字母a-z、大寫字母A-Z、數字0-9、符號"“、”/"一共64個字符的字符集&#xff0c;&#xff08;任何…

LX8201微孔霧化驅動芯片應用筆記一DC5V供電

前言LX8201是深圳市樂?信科技服務有限公司最新?研的?款微孔霧化?專?驅動芯?&#xff0c;結合標準外圍電路&#xff0c;能有效驅動控制市?上各種微孔霧化?&#xff0c;基于獨特的電路設計和軟件算法&#xff0c;其在功耗以及成本上均具有明顯的優勢。本應用筆記將幫助用…

MySQL索引優化之索引條件字段類型不同

在sql的聯表查詢中&#xff0c;on后面相等的兩個字段如果字段類型不一致&#xff0c;盡管它們都加了索引&#xff0c;最終查詢的時候也不會走索引&#xff0c;這是因為會觸發隱式類型轉換導致索引失效。 例如 Select * from Orders o left join User u on o.user_id u.id; 假如…

【Linux】信號(二):Linux原生線程庫相關接口

【Linux】信號的控制使用一.線程的創建pthread_create()接口二.線程等待1.為什么要線程等待&#xff1f;2.pthread_join()三.線程中止1.return2.pthread_exit五.線程應用C自帶多線程在上次的博客中主要講解了什么是線程 這次的博客主要是帶大家把線程的相關接口簡單的使用一下 …

小程序被爬蟲攻擊,使用waf能防護嗎?

在移動互聯網時代&#xff0c;小程序以輕量化、高便捷性成為流量入口新寵&#xff0c;但也因此成為爬蟲攻擊的重災區。從電商平臺的價格數據爬取到內容平臺的版權盜用&#xff0c;爬蟲攻擊不僅消耗服務器資源&#xff0c;更可能導致商業機密泄露與用戶權益受損。面對這類威脅&a…