新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于STM32Cube USB設備庫應用中常見的幾個問題

        基于STM32Cube USB設備庫應用中常見的幾個問題

        作者: 時間:2018-08-01 來源:網絡 收藏

        本文介紹了STM32Cube 設備庫應用中常見的幾個問題及解決方法。

        本文引用地址:http://www.104case.com/article/201808/384809.htm

        1、如何動態地修改設備描述符或字符串描述符?

        在文件usbd_desc.c里,與設備和字符串相關的描述符可以通過GetDescriptor的回調函數進行動態調整。

        2、如何讓大容量存儲類驅動支持多個邏輯盤【LUN】?

        在文件usbd_msc_storage_xxx.c中修改STORAGE_LUN_NBR?!緓xx代表使用的存儲介質】

        STORAGE_Inquirydata數組里包含了每個LUN的標準查詢數據【inquiry data】。

        比如用到2個LUN。

        constint8_t STORAGE_Inquirydata[] = {

        /*LUN 0 */

        0x00,

        0x80,

        0x02,

        0x02,

        (D_STD_INQUIRY_LENGTH- 5),

        0x00,

        0x00,

        0x00,

        'S','T', 'M', ' ', ' ', ' ', ' ', ' ', /* Manufacturer:

        8bytes */

        'm','i', 'c', 'r', 'o', 'S', 'D', ' ', /* Product:

        16Bytes */

        'F','l', 'a', 's', 'h', ' ', ' ', ' ',

        '1','.', '0' ,'0', /* Version: 4 Bytes */

        /*LUN 1 */

        0x00,

        0x80,

        0x02,

        0x02,

        (D_STD_INQUIRY_LENGTH- 5),

        0x00,

        0x00,

        0x00,

        'S','T', 'M', ' ', ' ', ' ', ' ', ' ', /* Manufacturer:8 bytes */

        'N','a', 'n', 'd', ' ', ' ', ' ', ' ', /* Product:16 Bytes */

        'F','l', 'a', 's', 'h', ' ', ' ', ' ',

        '1','.', '0' ,'0', /* Version: 4 Bytes */

        };

        3、端點的地址在哪里定義?

        端點地址一般在各個類驅動的頭文件里定義。

        比如MSC類的端點定義就在 usbd_msc.h定義如下:

        #define MSC_EPIN_ADDR 0x81 //For Endpoint 1 IN

        #defineMSC_EPOUT_ADDR 0x01 // For Endpoint 1 OUT

        4、USB設備庫是否可以任意運行在FULL SPEED或HIGH SPEED模式?

        是的,該庫支持USB OTG FS和USBOTG HS模式。其中,USB OTG FS內核僅支持FS模式,USB OTG HS內核既支持FS模式也支持HS模式。

        用戶通過如下宏選擇合適的USB核:

        USE_USB_HS// USB High Speed (HS) Core

        USE_USB_FS// USB Full Speed (FS) Core

        USE_USB_HSand USE_USB_HS_IN_FS // USBHigh Speed (HS) Core in FS mode

        5、如何在USB設備類驅動里面修改或增加端點?

        a.使用USBD_LL_OpenEP()進行端點的初始化。

        b.在usb_conf.c里為新定義的端點配置發送或接收FIFO。

        以STM32F2、STM32F4等支持OTG功能的MCU為例。

        用到HAL_PCD_SetRxFiFo()和HAL_PCD_SetTxFiFo()配置TX/RX的FIFO。

        注意配置TX和RX FIFO的大小時不得超過對應的USB核所擁有的全部FIFO.

        USBOTG FS core的FIFO 為320 x 32 bits(1.25 Kbytes)

        USBOTG HS core的FIFO 為1024 x 32bits (4 Kbytes)

        對于僅支持FS核的STM32F0,STM32L0, STM32F1 and STM32F3系列,

        使用HAL_PCD_PMA_Config() 進行PMA的配置。

        6. USB設備庫與實時操作系統兼容嗎?

        是的,該USB 設備庫可以配合RTOS使用。其中CMSIS RTOS的封裝器實現對OS內核的抽象。



        關鍵詞: 單片機 USB

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 弥渡县| 炉霍县| 互助| 琼中| 安陆市| 景东| 金坛市| 同心县| 无为县| 佛学| 广西| 延寿县| 彭泽县| 禹城市| 柳江县| 汝南县| 肇东市| 泗洪县| 色达县| 新竹市| 剑阁县| 汝南县| 保定市| 定日县| 鹤峰县| 偏关县| 长岭县| 昂仁县| 大洼县| 天水市| 兴山县| 望奎县| 苍溪县| 化德县| 德钦县| 天祝| 阿克| 龙江县| 金湖县| 邵阳市| 台前县|