板子可以接收数据,但是通过 HAL_ETH_Transmit(&heth,&TxConfig,0)发送数据时,始终卡在/* Wait for data to be transmitted or timeout occured */while((dmatxdesc->DESC3 & ETH_DMATXNDESCWBF_OWN) != (uint32_t)RESET)这个地方,然后时间溢出返回HAL_ERROR,请问下各位大神这是哪里出了问题?在网上和官方资料中都没有找到有用的信息
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
移植到我的板子试过,可以的,但是我不需要lwip,我就想直接进行数据发送,所以我就把写成这样来测试一下:
int ETH_PHY_SEND(uint8_t* pack,uint16_t framelength)
{
int errval = HAL_ERROR;
ETH_BufferTypeDef Txbuffer[ETH_TX_DESC_CNT];
Txbuffer[0].buffer = pack;
Txbuffer[0].len = framelength;
Txbuffer[0].next = NULL;
TxConfig.TxBuffer = Txbuffer;
TxConfig.Length += framelength;
SCB_CleanInvalidateDCache();
errval = HAL_ETH_Transmit(&heth,&TxConfig,0);
return errval;
}
单步调试可以发现只有第一次可以发送数据,以后再进入这个函数就返回HAL_ERROR了,原子哥可以提点一下吗?
一周热门 更多>