CH32F208R USBFS 發(fā)送數(shù)據(jù) 丟幀問題

在usb中斷處理函數(shù)里面設(shè)置了發(fā)送完成標(biāo)志,但是我不確定這樣是否正確請指教,程序現(xiàn)在出現(xiàn)有時候上一幀數(shù)據(jù)丟幀現(xiàn)象,也就是實際上上一幀并沒有發(fā)送出去,直接就發(fā)送下一幀了,也就是第一幀丟失,請教一下到底如何判斷usb已經(jīng)上傳發(fā)送數(shù)據(jù)完成。


? ? ? ? ? ? ? ? ? ? case USBHD_UIS_TOKEN_IN | 3:?

? ? ? ? ? ? ? ? ? ? ? ? USBOTG_FS->UEP3_TX_CTRL ^= USBHD_UEP_T_TOG;

? ? ? ? ? ? ? ? ? ? ? ? USBOTG_FS->UEP3_TX_CTRL = (USBOTG_FS->UEP3_TX_CTRL & ~USBHD_UEP_T_RES_MASK) | USBHD_UEP_T_RES_NAK;

? ? USBFS_Endp_Busy[ DEF_UEP3 ] = 0;

uep3_sendok=0;

? ? ? ? ? ? ? ? ? ? ? ? break;

在發(fā)送函數(shù)里面 判斷發(fā)送完成標(biāo)志,發(fā)送完成才能發(fā)送接下來的數(shù)據(jù)。


if(bEpNum == ENDP3)?

{

//if(USBOTG_FS->UEP3_TX_CTRL & USBHD_UEP_T_RES_MASK == USBHD_UEP_T_RES_ACK) return FAILURE;?

? ?//while(USBOTG_FS->UEP3_TX_CTRL & USBHD_UEP_T_RES_MASK == USBHD_UEP_T_RES_ACK);

? ? while((uep3_sendok!=0)&&(i>0)){--i;delay_us(150); }// 發(fā)送完成標(biāo)志,如果連續(xù)延時5次發(fā)送失敗 超時

//USBFS_Endp_DataUp(DEF_UEP3, data, dataNum, 1 );

memcpy( pEP3_IN_DataBuf, data,dataNum);? ?

DevEP3_IN_Deal(dataNum); //設(shè)置NAK表示端點3正忙。

// delay_ns(250);

uep3_sendok=1;

? ?return SUCCESS;


現(xiàn)在是每幀最大傳輸32字節(jié),當(dāng)需要上傳的數(shù)據(jù)包長度大于32字節(jié)時,會將數(shù)據(jù)包拆分成若干幀發(fā)送。有時候會出現(xiàn)丟幀的情況


還有請教一下,有時候出現(xiàn)usb上傳不知道什么原因崩潰了,無法在上傳任何數(shù)據(jù),這個時候必須從啟芯片才可以恢復(fù)請問該如何排查問題


你好

大致機制:USB裝載數(shù)據(jù),設(shè)置長度,設(shè)置ACK,busy標(biāo)志位置1,等主機下發(fā)IN包之后,數(shù)據(jù)發(fā)送成功,進(jìn)入IN中斷,設(shè)置NAK,清除busy標(biāo)志位。

具體可以參考這里面

https://www.cnblogs.com/wchmcu/p/17508110.html



?我是在官方的例程里面修改到自己的應(yīng)用的。當(dāng)大部分usb是好的,就是有時候發(fā)送不出去任何數(shù)據(jù)不知道怎么處理是什么原因?qū)е碌摹?/p>


你好,可以把工程發(fā)我郵箱

zc@wch.cn


因為我這個是配合上位機調(diào)試的,不知道是否和上位機的驅(qū)動存在配合上的問題還有幫我看下發(fā)送完成標(biāo)志這樣置位對嗎

? case USBHD_UIS_TOKEN_IN | 3:?

? ? ? ? ? ? ? ? ? ? ? ? USBOTG_FS->UEP3_TX_CTRL ^= USBHD_UEP_T_TOG;

? ? ? ? ? ? ? ? ? ? ? ? USBOTG_FS->UEP3_TX_CTRL = (USBOTG_FS->UEP3_TX_CTRL & ~USBHD_UEP_T_RES_MASK) | USBHD_UEP_T_RES_NAK;

? ? USBFS_Endp_Busy[ DEF_UEP3 ] = 0;

uep3_sendok=0;

? ? ? ? ? ? ? ? ? ? ? ? break;



這個沒問題,F(xiàn)S的收發(fā)可以參考一下這個https://www.cnblogs.com/wchmcu/p/17913838.html


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

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