新手上路
- 积分
- 25
- 金钱
- 25
- 注册时间
- 2020-1-11
- 在线时间
- 7 小时
|

楼主 |
发表于 2021-10-16 21:00:55
|
显示全部楼层
本帖最后由 ocr123 于 2021-10-17 14:18 编辑
我在HAL_ETH_TransmitFrame函数中,置位ETH_DMATXDESC_FS时添加ETH_DMATXDESC_DC置位,数据就发送不出去了。
if (bufcount == 1)
{
/* Set LAST and FIRST segment */
heth->TxDesc->Status |=ETH_DMATXDESC_FS|ETH_DMATXDESC_LS|ETH_DMATXDESC_DP;
//heth->TxDesc->Status |= ETH_DMATXDESC_DP;
/* Set frame size */
heth->TxDesc->ControlBufferSize = (FrameLength & ETH_DMATXDESC_TBS1);
/* Set Own bit of the Tx descriptor Status: gives the buffer back to ETHERNET DMA */
heth->TxDesc->Status |= ETH_DMATXDESC_OWN;
/* Point to next descriptor */
heth->TxDesc= (ETH_DMADescTypeDef *)(heth->TxDesc->Buffer2NextDescAddr);
}
else
{
for (i=0; i< bufcount; i++)
{
/* Clear FIRST and LAST segment bits */
heth->TxDesc->Status &= ~(ETH_DMATXDESC_FS | ETH_DMATXDESC_LS);
if (i == 0)
{
/* Setting the first segment bit */
heth->TxDesc->Status |= ETH_DMATXDESC_FS|ETH_DMATXDESC_DP;
//heth->TxDesc->Status |= ETH_DMATXDESC_DP;
}
/* Program size */
heth->TxDesc->ControlBufferSize = (ETH_TX_BUF_SIZE & ETH_DMATXDESC_TBS1);
if (i == (bufcount-1))
{
/* Setting the last segment bit */
heth->TxDesc->Status |= ETH_DMATXDESC_LS;
size = FrameLength - (bufcount-1)*ETH_TX_BUF_SIZE;
heth->TxDesc->ControlBufferSize = (size & ETH_DMATXDESC_TBS1);
}
/* Set Own bit of the Tx descriptor Status: gives the buffer back to ETHERNET DMA */
heth->TxDesc->Status |= ETH_DMATXDESC_OWN;
/* point to next descriptor */
heth->TxDesc = (ETH_DMADescTypeDef *)(heth->TxDesc->Buffer2NextDescAddr);
}
} |
|