对的确实是透传,收到之后转发给另外一个设备。
mac里面有Rx FIFO,DMA有接收缓冲区,程序设置是当RxFIFO收到完整一帧数据时,启动DMA读取FIFO,之后应用程序再做处理,设置
ETH_InitStructure.ETH_FlushReceivedFrame = ETH_FlushReceivedFrame_Disable;
使得DMA缓冲区有完之后进入休眠状态,而不丢弃FIFO中的内容。从而造成FIFO变满,触发MAC发送pause帧。我是一样人为地,但是这样一直不能产生pause帧。我也没有什么方法,确定RXFIFO变满过。
我通过手动设置ETH_DMAFCR寄存器中的bit0,能够手动发送一个pause帧,而且抓包工具也确实抓到了pause帧。但是好像没有效果。
真心不知道怎么回事了。
这个话题好像有点偏,大家都不这么用。通过datasheet也不知道怎么确定FIFO满。真实愁人哎。
|