0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

USB Host不停NAK的問題

冬至子 ? 來源:huo2023 ? 作者:huo2023 ? 2023-10-12 15:17 ? 次閱讀

我用U盤導(dǎo)出數(shù)據(jù),現(xiàn)象是第一次導(dǎo)出成功,不拔出U盤的情況下,直接導(dǎo)出第二次失敗,之后的每一次都失敗。拔出U盤后重新插入,仍是第一次正常,之后每一次失敗。

查到是drv_usbh.c文件中的drv_pipe_xfer()函數(shù),NAK死循環(huán)。

1、增加了NAK后重試的代碼

論壇中其他方法效果不明顯,還是會NAK。

if (++retry_times >= 100)
{
return -2;
}
continue;

2、增加延時

打開RT_DEBUG_USB后發(fā)現(xiàn),U盤讀寫正常了,但是枚舉有時不正確,概率大概是插入5次,會有1次枚舉不成功。

所以在rt_usb_hcd_pipe_xfer()函數(shù)內(nèi)打印處增加延時,關(guān)閉RT_DEBUG_USB后,讀寫、枚舉全部正常。

RT_DEBUG_LOG(RT_DEBUG_USB,("pipe transform remain size,: %dn", remain_size));
if (!RT_DEBUG_USB)
{
rt_thread_mdelay(5);
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • USB接口
    +關(guān)注

    關(guān)注

    9

    文章

    699

    瀏覽量

    55537
  • DRV
    DRV
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    20635
  • DEBUG
    +關(guān)注

    關(guān)注

    3

    文章

    89

    瀏覽量

    19849
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1261

    瀏覽量

    39839
收藏 人收藏

    評論

    相關(guān)推薦

    請問ESP32-S3 USB HOST是否支持USB2.0?

    規(guī)格書介紹ESP32-S2指定USB HOST支持的USB1.1,ESP32-S3的USB HOST支持
    發(fā)表于 07-19 06:53

    STM32F407作USB host驅(qū)動聲卡,USB就會出錯的原因?

    我用STM32F407 作USB host,配置為FS。用它接聲卡。如果STM32F407 單向給 聲卡傳送音頻,輸出聲音正常?;蛘?407單向接收聲卡的音頻,工作也正常。但是同時發(fā)送和接收聲音(即
    發(fā)表于 07-04 06:56

    CY7C65215A作為從站,在主站寫入時響應(yīng)NAK是怎么回事?

    。數(shù)據(jù)傳輸正常。雙方(USB 賽普拉斯和主控單片機)的數(shù)據(jù)讀寫都正常,包括最后一個 NAK 字節(jié),賽普拉斯將其作為 ACK 處理。 困擾我的原因是,我的主控單片機無法確認(rèn)所有字節(jié)都已正確傳輸?shù)綇目貑纹瑱C(賽
    發(fā)表于 07-04 06:30

    STM32跟wifi模塊通過USB在沒有host的前提下如何交互呢?

    后不需要再插拔。是不是可以通過USB簡單的進行設(shè)備與設(shè)備的連接,不用考慮是否是host? 2. 如果1假設(shè)成立,那STM32跟wifi模塊通過USB在沒有host的前提下如何交互呢?
    發(fā)表于 05-13 08:25

    STM32_USB-FS-Device_Lib_V4.1.0為何不在端點恢復(fù)后將發(fā)送端點設(shè)置為NAK?

    (EP_TX_VALID) after recover from HALT; i wonder why we don\'t set the status to NAK; The USB spec
    發(fā)表于 05-06 08:55

    STM32F407 USB HOST HID部分鼠標(biāo)鍵盤無法讀取數(shù)據(jù)的原因?

    ) { UNMASK_HOST_INT_CHH (num); USB_OTG_HC_Halt(pdev, num); CLEAR_HC_INT(hcreg , nak); pdev-&
    發(fā)表于 04-22 08:22

    ST-usb-host-hid庫如何解決usb掃碼槍這類的usb-hid-keyboard設(shè)備?

    用cube生成的usb-host-hid調(diào)試掃碼槍的時候只能支持小部分的usb掃碼槍,有好幾種掃碼槍的現(xiàn)象是:枚舉成功了,但是在獲取設(shè)備信息:USBH_HID_GetHIDDescriptor
    發(fā)表于 04-17 06:49

    stm32l4如何下載到usb host的固件庫?

    各位大神,請教下stm32l4如何下載到usb host的固件庫,還想請教下stm32有沒有開源的rndis和ecm代碼
    發(fā)表于 04-11 07:19

    請問USB CDC host怎么與多串口的從機通信?

    USB CDC host怎么與多串口的從機通信? 有一個從設(shè)備的USB虛擬了3個串口,作為主設(shè)備,如何分別識別出每個串口,分別于每個串口通信? 我的主設(shè)備使用的是官方單獨的USB標(biāo)準(zhǔn)庫
    發(fā)表于 04-11 06:11

    使用STM32F407 USB HOST遇到的疑問求解

    我用的是STM32F407 使用STM32FCUBE產(chǎn)生的工程 起重 USB_OTG_HS 選擇的是 Host Only SOF 和 VBUS 都沒勾選 USB_OTG_FS 選擇
    發(fā)表于 04-03 06:11

    需要用f4xx做usb vcp host端,請問有沒有辦法讓host端不輪詢讀呢?

    請教一下 我們需要用f4xx做usb vcp host端,用cubeide生成了usb host端的 virtual com port代碼工程,能夠正常識別插入的vcp設(shè)備,但是發(fā)現(xiàn)
    發(fā)表于 03-26 08:25

    如何實現(xiàn)STM32 USB host對另外的一個USB虛擬串口設(shè)備的通訊?

    如何實現(xiàn)STM32 USB host 對另外的一個USB 虛擬串口設(shè)備的通訊
    發(fā)表于 03-07 06:10

    什么是USB HOST、USB Slave和USB OTG?它們之間有什么區(qū)別?

    什么是USB HOST、USB Slave和USB OTG?它們之間有什么區(qū)別? USB(通用串行總線)是一種用于連接設(shè)備的通信接口標(biāo)準(zhǔn),它
    的頭像 發(fā)表于 02-02 15:32 ?1.2w次閱讀

    NUC220VE3AN如何做到USB HOST?

    現(xiàn)時我使用NUC220VE3AN并想儲存它的AD數(shù)據(jù)在USB隨身碟,但我不知道如何修改,使它可以做到USB HOST的功能,令我可以讀寫USB隨身碟。請各位多多指教。
    發(fā)表于 01-15 06:29

    DshanMCU-R128s2 USB外設(shè)功能配置

    USB 功能簡介 USB 功能模塊包括了USB Host,USB Device 和OTG 功能。 USB
    的頭像 發(fā)表于 12-22 19:05 ?2049次閱讀
    DshanMCU-R128s2 <b class='flag-5'>USB</b>外設(shè)功能配置