USB連接打印機問題

我用ch376芯片來獲得打印機的設備描述符老師獲不得,我換U盤就可以獲得設備描述符,在獲得打印機設備描述符時中斷返回的狀態(tài)時20.下面是我寫的獲得打印機設備描述符的代碼,謝謝大家

void ch376_GET_DESCR(void) ? ? ? ? ? ? ? //3

{

char *buf;

char lenth;

int i = 0;

int status = 0;

CS_LOW;

spi_ReadSend_byte(GET_DESCR);

spi_ReadSend_byte(1);

CS_HIGH;

for( i = 0; i < 100*1000; i++)

{

delay_us(1);

status = ch376_get_status();

if( status == USB_INT_SUCCESS )

{

u3_printf("%02x\r\n", 22);

break;

}

}

if(i>=100*1000)

{

u3_printf("%02x\r\n", 8);

//return;

}

u3_printf("recv interrupt");

//return;

delay_ms(10);

u3_printf("%x\r\n",ch376_get_status());

ch376_write(RD_USB_DATA0);

lenth = ch376_read();

buf = &lenth;

u3_printf("%x\r\n",lenth);

for(int i = lenth;i > 0;i--)

{

*buf = ch376_read();

u3_printf("%x\r\n",*buf);

buf++;

}

}


不要循環(huán)執(zhí)行ch376_get_status();,換成等中斷IO變低電平,執(zhí)行一次ch376_get_status(),返回的就是中斷狀態(tài)值。

另外0X20表示設備響應超時,如果換一個設備就出現(xiàn)的現(xiàn)象,可以查一下U口插上瞬間供電電壓是否穩(wěn)定。可以并接電容嘗試。


我以前也遇到這樣的問題了,最后發(fā)現(xiàn)是因為連接打印機后還需要在復位一下,我復位之后就好了,各種描述符都能讀取了,希望你試試


"連接打印機后還需要在復位一下,我復位之后就好了"很可能是電源供電問題,因為這樣就沒有U口的拔插環(huán)節(jié)了,U口拔插的瞬間會有電壓波動的。


樓主,你好,請問你解決了嗎?我也是返回錯誤碼0x28,但是我復位了,樓主有什么意見嗎


先排查測試命令是否通過,模式設置設置模式6。設備速度是否檢測匹配?代碼上參考http://www.findthetime.net/bbs/thread-65122-1.html?。

如果測試命不過,可排查硬件原因,主要看供電、晶振起振起振。


? ? ? ? ? ? ? ? ? ? ? ? ? ?

先排查測試命令是否通過,模式設置設置模式6。設備速度是否檢測匹配?代碼上參考http://www.findthetime.net/bbs/thread-65122-1.html?。

如果測試命不過,可排查硬件原因,主要看供電、晶振起振起振。

? ? 怎么檢測設備速度是否檢測匹配呢?


RTX截圖未命名.png


? ? ? ? ? ? ? ? ? ? ? ? ? ?

RTX截圖未命名.png

? ? ? ? ? ? ? ? ? ? ? ?大佬可否加個QQ?我QQ1187987705


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频