STM32
直播中

云中云

8年用户 957经验值
私信 关注
[问答]

请问STM32F207+DP83848如何实现以太网硬件流控?

在我的应用中,我用UDP传送数据,STM32+DP83848采用UDP接收,如果PC端全速传送一个文件,STM32处理比较慢,会存在丢数据的情况。

我看STM32存在硬件流控设置,于是我就使能了硬件流控,但是流控并没有起作用。

请问,有没有这方面的例子,或者有经验的朋友,指点一下。谢谢。

回帖(1)

爱与友人

2024-5-11 17:33:38
为了实现STM32F207和DP83848之间的以太网硬件流控,我们需要按照以下步骤操作:

1. 配置STM32F207的以太网硬件流控:
   首先,确保STM32F207的以太网硬件流控功能已经启用。在HAL库中,可以通过以下代码启用硬件流控:

   ```c
   EthernetHandle.Instance->MAC->MACCR |= ETH_MACCR_TFC | ETH_MACCR_RFC;
   ```

   这将启用STM32F207的发送和接收流控。

2. 配置DP83848的硬件流控:
   接下来,需要配置DP83848以支持硬件流控。这通常涉及到通过I2C接口修改DP83848的寄存器设置。具体步骤如下:

   a. 初始化I2C接口。
   b. 编写一个函数,用于读取DP83848的寄存器值。
   c. 编写一个函数,用于向DP83848的寄存器写入新值。
   d. 读取DP83848的PHYCR寄存器值(地址0x1F)。
   e. 修改PHYCR寄存器值,启用硬件流控。这通常涉及到设置PHYCR寄存器的第14位(TX_FLOW_CONTROL)和第13位(RX_FLOW_CONTROL)。
   f. 将修改后的PHYCR寄存器值写回DP83848。

3. 测试硬件流控:
   在硬件流控配置完成后,可以通过发送大量数据来测试其效果。如果STM32F207和DP83848之间的硬件流控正常工作,那么在STM32处理速度较慢时,数据丢失的情况应该会减少。

4. 优化STM32F207的处理速度:
   如果硬件流控仍然无法满足需求,可以考虑优化STM32F207的处理速度。这可能包括使用DMA传输数据、优化数据处理算法或使用中断而不是轮询等方式。

5. 检查连接线和硬件:
   最后,确保以太网连接线和硬件没有问题。损坏的连接线或硬件故障可能导致流控不起作用。

通过以上步骤,应该可以实现STM32F207和DP83848之间的以太网硬件流控。如果仍然存在问题,建议查阅相关硬件的官方文档,或寻求专业人士的帮助。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分