网络中传递着各种各样的数据包,当设备连接到网络后,为了减少对接收到的数据进行处理的负荷,就需要对设备接收到的数据包进行过滤。 STM32MCU 的以太网外设提供多种数据包过滤的模式。可以根据以太网帧的目标 MAC 地址,源 MAC 地址进行过滤, STM32H7 系列还提供对 VLAN tag 和 IP 地址, UDP/TCP 端口的过滤。
拿 MAC 地址过滤来说, SM32MCU 支持:单播目标地址过滤,多播目标地址过滤,单播源地址过滤和广播地址过滤。单播目标地址过滤和多播目标地址过滤又分为: Perfect 地址过滤和 Hash 地址过滤。
perfect 地址过滤就是把接收到的以太网帧中的目标地址与 MAC 地址寄存器中保存的地址进行比较,如果匹配,数据包就被接受,否则就被丢掉。还可以通过设置“反向过滤”,来翻转过滤的结果,接收到的以太网帧中的目标地址与MAC 地址寄存器中保存的地址如果不匹配,数据包就被接收,否则就被丢掉。
Hash 地址过滤不是直接比较 MAC 地址,而是计算目标 MAC 地址的 CRC32 值,取其高 6 位作为索引去查询 Hash 表寄存器中对应的值,来判断是否接收该数据帧。 Hash 地址过滤的方法稍微复杂,本文接下来将基于STM32H743Nucleo 板,通过具体的例程介绍如何实现 Hash 地址过滤
|