tft每日頭條

 > 生活

 > usb組合設備的用途

usb組合設備的用途

生活 更新时间:2025-04-29 16:52:36

USB接口是上位機(如電腦)和下位機(如我們自己開發的單片機闆子)最常用的通信方式之一。USB有各種不同版本,有USB2.0,USB3.0,USB3.1等等。

USB2.0 又分為Low-Speed,Full-Speed,以及High-Speed。USB2.0 Full-speed理論上支持12Mbits/s,最大的有效數據速率為1.2MBytes/s。在通常的應用場景下,這個速率是足夠的,而且支持USB2.0 Full-speed的MCU比較多,如STM32F1系列,MCU設計成本也相對較低。因此,本次隻專注于USB2.0 Full-speed的介紹。

物理接口上,USB2.0的通信線路是USB接口上的D 和D-,USB2.0設備接入枚舉的終端電阻如下所示:HOST即我們通常意義上的電腦,Device為我們的下位機。(STM32F103系列的上拉電阻需要外接,其他MCU可能會集成進内部)

usb組合設備的用途(USB2.0系列HID設備)1

USB速度檢測

另外,USB2.0的Device耗電在配置前要小于100mA,配置後不能超過500mA。

USB的數據的傳輸類型分為4種:控制,中斷,批量,以及同步。在本文中講的HID設備是中斷的傳輸方式。傳輸速率為1.2Mbyte/s,每次通信的最大Bytes為64位。其實,我們日常生活中接觸到很多HID設備,如鼠标,鍵盤等。

那麼,為什麼會選擇HID設備作為通信方式呢?最主要的原因,HID設備的電腦驅動是通用的,不需要為專門的USB設備裝驅動,開發驅動等。我隻需要将下位機配置HID設備,電腦将會設别到,然後通過Vendor的方式進行通信即可。

STM32F103有專門的HID庫實現了HID設備,這樣,我們下位機的開發将方便很多,HID的描述符如下:(有了USB描述符,HOST就會知道設備VID,PID以及基本的數據格式,比如數據傳輸最高為幾位,最低為幾位,數值的大小範圍,數值是幾位的等等)

__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END = { /* USER CODE BEGIN 0 */ 0x05, 0x8c, //0x05:USAGE PAGE 0x09, 0x00, //0x09:USAGE 0xA1, 0x00, //0xA1:COLLECTION //下面開始數據配置 0x09, 0x00, //0x09:USAGE 0xA1, 0x00, //0xA1:COLLECTION 0x09, 0x00, //0x09:USAGE 0x15, 0x00, //0x15:LOGICAL MIN 最小數為0x00 0x26, 0xFF, 0x00, //0x26:LOGICAL MAX 最大數為0XFF 0x75, 0x08, //0x75:REPORT SIZE;0x08:8位bit 0x95, 0x40, //0x95:REPORT COUNT;0x40:最大64 bytes傳輸 0x91, 0x02, //0x91:OUTPUT;0x02:Var(可變量) //上面OUT格式 0x09, 0x00, //0x09:USAGE 0x15, 0x00, //0x15:LOGICAL MIN 0x26, 0xFF, 0x00, //0x26:LOGICAL MAX 0x75, 0x08, //0x75:REPORT SIZE 0x95, 0x40, //0x95:REPORT COUNT 0x81, 0x02, //0x81:INPUT; 0x02:Var(可變量) //上面IN格式 //有兩個 COLLECTION,就需要兩個END COLLECTION 0xC0, //END COLLECTION /* USER CODE END 0 */ 0xC0 /* END_COLLECTION */ };

上面就是其中一個HID的數據格式配置,确定是可用的,我裡面有注釋,大概介紹了每個數據含義。

還有設備的VID和PID描述,還是設備名稱等,在這裡不做介紹,因為這個在STM32F103的HAL庫裡面已經封裝好了,感興趣可以看一下。

後面文章會介紹STM32F103 HAL庫實現USB HID設備。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved