ch32v307以太網(wǎng)收到的數(shù)據(jù)長(zhǎng)度不正確

DMA描述符的 RDes0 FL 幀長(zhǎng)域 的長(zhǎng)度 跟 DMA描述符緩沖區(qū)里面實(shí)際ip數(shù)據(jù)包不匹配。幾率不是很大,現(xiàn)在能正常通訊的,就是會(huì)丟包。


int ETHPoll(uint8_t* pkt) {


? ? int rc = 0;


? ? //描述屬于CPU

? ? if((DMARxDescToGet->Status & ETH_DMARxDesc_OWN) == (uint32_t)RESET) {


? ? ? ? if(((DMARxDescToGet->Status & ETH_DMARxDesc_ES) == (uint32_t)RESET) &&

? ? ? ? ? ?((DMARxDescToGet->Status & ETH_DMARxDesc_LS) ) &&

? ? ? ? ? ?((DMARxDescToGet->Status & ETH_DMARxDesc_FS) )) {


? ? ? ? ? ? if(DMARxDescToGet->Status & ETH_DMARxDesc_LE) {

? ? ? ? ? ? ? ? CLOG_WRN("LE\n");

? ? ? ? ? ? }

? ? ? ? ? ? if(DMARxDescToGet->Status & ETH_DMARxDesc_OE) {

? ? ? ? ? ? ? ? CLOG_WRN("OE\n");

? ? ? ? ? ? }


? ? ? ? ? ? if(DMARxDescToGet->Status & ETH_DMARxDesc_IPV4HCE) {

? ? ? ? ? ? ? ? CLOG_WRN("IPV4HCE\n");

? ? ? ? ? ? }


? ? ? ? ? ? rc = (int)((DMARxDescToGet->Status & ETH_DMARxDesc_FL) >> ETH_DMARXDESC_FRAME_LENGTHSHIFT) - 4;

? ? ??

? ? ? ? ? ? rt_memcpy(pkt, (uint8_t*)DMARxDescToGet->Buffer1Addr, rc);


? ? ? ? }else {

? ? ? ? ? ? CLOG_WRN("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n");

? ? ? ? }

? ? ? ? DMARxDescToGet->Status |= ETH_DMARxDesc_OWN;


? ? ? ? if((ETH->DMASR & ETH_DMASR_RBUS) != (uint32_t)RESET) {

? ? ? ? ? ? ETH->DMASR = ETH_DMASR_RBUS;

? ? ? ? ? ? ETH->DMARPDR = 0;

? ? ? ? ? ? g_rbus++;

? ? ? ? }


? ? ? ? DMARxDescToGet = (ETH_DMADESCTypeDef *)(DMARxDescToGet->Buffer2NextDescAddr);

? ? }


? ? return rc;


}


您好,關(guān)于mac層的接收可以看一下最新例程總mac_raw的例程,里面有想要的接收函數(shù),可以用此例程再測(cè)試一下看是否還有丟包的情況,后續(xù)有問(wèn)題可以郵箱聯(lián)系:kx@wch.cn

image.png


參照mac_raw例程, 處理好 IT_RBU ,數(shù)據(jù)正常了,調(diào)大RXBUFNB ,不丟包了,基本跑滿10M了,謝謝。



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

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