<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于STM32Cube USB設(shè)備庫應(yīng)用中常見的幾個問題

          基于STM32Cube USB設(shè)備庫應(yīng)用中常見的幾個問題

          作者: 時間:2018-08-01 來源:網(wǎng)絡(luò) 收藏

          本文介紹了STM32Cube 設(shè)備庫應(yīng)用中常見的幾個問題及解決方法。

          本文引用地址:http://www.ex-cimer.com/article/201808/384809.htm

          1、如何動態(tài)地修改設(shè)備描述符或字符串描述符?

          在文件usbd_desc.c里,與設(shè)備和字符串相關(guān)的描述符可以通過GetDescriptor的回調(diào)函數(shù)進行動態(tài)調(diào)整。

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

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

          STORAGE_Inquirydata數(shù)組里包含了每個LUN的標準查詢數(shù)據(jù)【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、端點的地址在哪里定義?

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

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

          #define MSC_EPIN_ADDR 0x81 //For Endpoint 1 IN

          #defineMSC_EPOUT_ADDR 0x01 // For Endpoint 1 OUT

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

          是的,該庫支持USB OTG FS和USBOTG HS模式。其中,USB OTG FS內(nèi)核僅支持FS模式,USB OTG HS內(nèi)核既支持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設(shè)備類驅(qū)動里面修改或增加端點?

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

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

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

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

          注意配置TX和RX FIFO的大小時不得超過對應(yīng)的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設(shè)備庫與實時操作系統(tǒng)兼容嗎?

          是的,該USB 設(shè)備庫可以配合RTOS使用。其中CMSIS RTOS的封裝器實現(xiàn)對OS內(nèi)核的抽象。



          關(guān)鍵詞: 單片機 USB

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();