0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32以太网MAC Loopback的实现

STM32单片机 来源:STM32单片机 作者:STM32单片机 2020-12-29 10:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

STM32 以太网 MAC Loopback的实现

前言

在STM32以太网调试中经常会遇到“设备接收不到数据”,或者“设备发出的数据对端设备收不到”之类的问题。遇到这类问题首先要做的是定位问题发生的部位,这样做的好处就是可以指明下一步调试的方向,缩小分析的范围。以下图为例我们做个简单的说明,设备A和设备B通过以太网通信,现发现设备B无法接收设备A发送的消息,问题可能出现在几个地方:

应用层的程序,或者协议栈出错,数据根本没有到STM32以太网外设。这种情况我们在调试的时候,在以太网输出函数low_level_output中打个断点就可以检查出来。

STM32以太网MAC出现问题,没有把数据发送出去。对于这种情况,可以通过STM32以太网的MAC loopback功能来检查MAC的收发是否正常。

STM32以太网MAC和外部PHY之间的通信出现问题。可以通过PHY提供的loopback功能来检查。

设备A端的收发没有问题,问题可能出现在线路上或者设备B。可以通过在网口的接线上做网线交叉,也就是将RJ-45接口中TX+与RX+连接,TX-与RX-连接,来进行检查。

本文将主要介绍上面提到的STM32 MAC loopback方法。

MAC loopback模式

MAC loopback模式的使能很简单,将ETH_MACCR寄存器的LM位置位就可以了。

MAC loopback模式使能后,MAC发送的数据帧通过MII接口发送给外部PHY的同时也发送到MAC接收端。这里需要注意的是STM32 MAC loopback模式只支持在MII接口下工作。

但要正确的接收到loopback的数据,还需要注意一下几个地方:

MAC loopback模式下,MII接口的接收时钟(RX_CLK)和发送时钟(TX_CLK)还需要外部PHY来提供,所以PHY的初始化不能省。

以太网帧中的目标MAC地址应该和源MAC地址一样,或者设定为广播地址(FFFFFF:FF),否则MAC默认将会过滤接收到的数据。或者将ETH_MACFFR寄存器的RA置位,以接收所有的以太网帧。

对于F7,H7这类带有cache的MCU型号,需要注意接收/发送描述符和接收/发送buffer的地址,以及cache属性。因为这部分存放在SRAM的数据CPU和以太网DMA都会去读写,如果使能cache(回写)可能会出现数据不一致的情况。也不能将其定义在STM32F769的DTCM RAM区域。

MAC loopback例程

例程说明

本文基于STM32F769I-EVAL板提供了一个以太网外设测试工程。工程中没有用到TCP/IP协议栈,只通过STM32F7的HAL驱动层,实现了以太网MAC层的数据收发,同时也实现了MAC loopback的功能。这个测试工程的目的是,检测STM32以太网外设的配置是否正确,工作是否正常。

这个例程提供两种工作模式:

正常模式

在这种模式下,可以正常与另一个设备(PC或者其他的开发板)通信,也就是可以发送和接收以太网帧。用户可以发送自定义的以太网帧数据,程序会自动构建以太网帧并发送。因为没有实现任何TCP/IP协议,如果想发送IP包或者TCP/UDP包,就需要自己先按照这些包的格式构建好数据。

MAC loopback模式

在这种模式下,STM32F769I-EVAL板子发送的数据被直接送回到MII接口的接收端。如果此时网口还连接到另一个设备的话,该设备也是可以接收到数据的。

例程配置

打开例程后,先要做以下的配置:

设置目标MAC地址(dst_addr)

如果发送广播,dst_addr设置为FFFFFF:FF。如果在MAC loopback模式下,dst_addr设置成和src_addr一样。

定义帧数据的类型(frame_type)

可以发送自定义的帧数据类型,或者通用的预先定义好的帧数据类型。比如,如果发送的是IPv4的数据,frame_type就是0x0800;如果发送自定义的类型,则可以使用未被分配的数值。在这个demo中,用的是0x0601。

初始化要发送的数据buffer

要发送的数据保存在teststring数组中。请注意,这个数组里只保存应用层要发送的数据,也就是以太网帧格式的数据段,不包括目标/源MAC地址,以太网帧数据类型和CRC校验码。

如果不使能MAC loopback功能,则在main.h中注释掉MAC_LOOPBACK_ENABLE宏

修改好以上的参数后,重新编译烧录后运行。

每次按下USER按键,触发一次数据发送。接收到的数据保存在rxbuffer,并且板子上的LD1灯会改变一次状态。

正常模式演示

在正常模式下,为了演示方便我们使用PC与STM32F769I-EVAL连接,在PC上运行XCAP来发送/接收以太网帧数据。

MAC例程端的配置如下:

1. 接收数据测试

打开xcap,构造一个发给STM32F769I-EVAL板的以太网帧。

目标MAC地址:020000:00

Frame Type: Custom(0x0601)

数据:10字节,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55

在xcap中,选择创建好的报文,点击发送。

53cb2c7e-48bf-11eb-8b86-12bb97331649.jpg

这时就可以在Wireshark里捕获的数据包中看到刚刚发送出去的这个。

53eb941e-48bf-11eb-8b86-12bb97331649.jpg

同时在STM32F769I-EVAL板这边也收到数据。

544b3d2e-48bf-11eb-8b86-12bb97331649.png

2.发送数据测试

按下板上的USER按键,触发一次发送。

此时运行在PC端的Wireshark可以捕获到STM32F769I-EVAL开发板发送的数据

547b7124-48bf-11eb-8b86-12bb97331649.jpg

MAC loopback模式演示

定义MAC_LOOPBACK_ENABLE宏,重新编译下载。

按下板上的USER按键,触发一次发送,数据被loopback到接收端。

查看rxbuffer接收到的数据:

54a33ba0-48bf-11eb-8b86-12bb97331649.png

责任编辑:xj

原文标题:工程师笔记 | STM32以太网 MAC Loopback的实现

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    41

    文章

    5926

    浏览量

    179565
  • STM32
    +关注

    关注

    2305

    文章

    11122

    浏览量

    371193
  • Mac
    Mac
    +关注

    关注

    0

    文章

    1125

    浏览量

    54880

原文标题:工程师笔记 | STM32以太网 MAC Loopback的实现

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于以太网芯片的应用层方案

    聚焦于以沁恒微电子以太网芯片(如CH394/CH395及集成型MCU CH32V317等)为基础构建的多种高效应用层方案,阐述其如何以简化的硬件与低成本,实现丰富的网络功能。
    的头像 发表于 12-09 14:47 121次阅读
    基于<b class='flag-5'>以太网</b>芯片的应用层方案

    ProfiNet嵌入式板卡,主流替代可实现ProfiNet工业以太网的应用实例

    ProfiNet嵌入式板卡,主流替代可实现ProfiNet工业以太网的应用实例
    的头像 发表于 12-01 17:11 909次阅读
    ProfiNet嵌入式板卡,主流替代可<b class='flag-5'>实现</b>ProfiNet工业<b class='flag-5'>以太网</b>的应用实例

    以太网通讯在FPGA上的实现

    数据量达到几十,甚至成百上千个字节。下图为以太网通过UDP传输单包数据的格式,可以看出,以太网的数据包就是对各层协议的逐层封装来实现数据的传输。本项目实现内容主要包括
    发表于 10-30 07:45

    以太网模块被忽视的角落 #电磁兼容EMC #电子工程师 #电子元器件 #磁珠 #滤波电容 #以太网

    以太网
    深圳市韬略科技有限公司
    发布于 :2025年07月25日 17:35:35

    Analog Devices Inc. ADIN1110低功耗10BASE-T1L以太网MAC-PHY数据手册

    Analog Devices Inc. ADIN1110低功耗10BASE-T1L以太网MAC-PHY集成了以太网PHY内核、MAC、所有相关模拟电路、输入和输出时钟缓冲。ADIN11
    的头像 发表于 07-02 11:20 1298次阅读
    Analog Devices Inc. ADIN1110低功耗10BASE-T1L<b class='flag-5'>以太网</b><b class='flag-5'>MAC</b>-PHY数据手册

    以太网入门:从零开始,掌握以太网基础知识!

    以太网作为现代通信技术的基石,其重要性不言而喻。无论是日常网络应用,还是AI对高速大带宽网络的需求,以太网都扮演着不可或缺的角色。本文将从零开始,带您了解以太网的基础知识,帮助您快速入门。什么是
    的头像 发表于 06-09 14:00 4117次阅读
    <b class='flag-5'>以太网</b>入门:从零开始,掌握<b class='flag-5'>以太网</b>基础知识!

    Microchip LAN9211-ABZJ 集成 10/100 以太网 PHY的以太网控制器

    Microchip LAN9211-ABZJ 集成 10/100 以太网 PHY的以太网控制器
    的头像 发表于 06-04 14:56 814次阅读
    Microchip LAN9211-ABZJ 集成 10/100 <b class='flag-5'>以太网</b> PHY的<b class='flag-5'>以太网</b>控制器

    ADIN1110可靠的工业低功耗10BASE-T1L 以太网 MAC-PHY技术手册

    ADIN1110是一款面向工业以太网应用的超低功耗单端口10BASE-T1L收发器,符合IEEE^®^ 802.3cg-2019 ^™^ 以太网标准,支持长程10 Mb/s单对以太网(SPE
    的头像 发表于 05-15 11:53 1064次阅读
    ADIN1110可靠的工业低功耗10BASE-T1L <b class='flag-5'>以太网</b> <b class='flag-5'>MAC</b>-PHY技术手册

    双通道CAN转以太网#CAN转以太网#三格电子

    以太网
    三格电子科技
    发布于 :2025年05月12日 13:17:05

    AD9574以太网 千兆以太网时钟发生器技术手册

    AD9574具有多路输出时钟发生器功能,内置专用锁相环(PLL)内核,针对以太网和千兆以太网线路卡应用进行了优化。 整数N PLL设计基于ADI公司成熟的高性能、低抖动频率合成器产品系列,确保实现高的网络性能。 AD9574还适
    的头像 发表于 04-10 10:43 813次阅读
    AD9574<b class='flag-5'>以太网</b> 千兆<b class='flag-5'>以太网</b>时钟发生器技术手册

    串口转以太网芯片选型指南:2025十大以太网模块品牌盘点与应用方案解析

    随着物联网(IoT)、工业自动化和智能设备的广泛普及,串口转以太网技术的需求持续增长。串口转以太网芯片作为实现串口设备联网的核心组件,在工业控制、数据采集、智能家居等领域起到了至关重要的作用。然而
    的头像 发表于 04-09 15:30 1650次阅读

    广成科技CAN转以太网模块的作用和应用

    CAN转以太网模块是一类能够将CAN总线数据转换为以太网数据的设备,通常用于实现CAN总线与以太网总线之间的互联互通。在智能锁柜和智能文件交换箱中,CAN转
    的头像 发表于 03-20 13:58 1013次阅读
    广成科技CAN转<b class='flag-5'>以太网</b>模块的作用和应用

    请问MAC回环或以太网PHY芯片回环怎么实现

    MAC回环或以太网PHY芯片回环怎么实现
    发表于 03-12 06:05

    汽车以太网的演化进程

    汽车以太网最早追溯至2012年的EAVB,2015年10月,第一个汽车以太网物理层标准802.3bw问世,速率是100Mbps。到2020年以后,100Mbps汽车以太网开始普及,如今除了汽车电子
    的头像 发表于 02-07 09:49 2467次阅读
    汽车<b class='flag-5'>以太网</b>的演化进程

    单对以太网供电技术的演进和应用

    单对以太网(SPE)是一种新兴的以太网通信标准,与通常使用四对线的传统以太网不同,它只使用一对线进行数据传输。对于那些空间和重量受限的应用,例如汽车、工业和物联网(IoT)设备,这是一项非常实用的技术。如果通过此方式还能
    的头像 发表于 01-15 14:17 3259次阅读
    单对<b class='flag-5'>以太网</b>供电技术的演进和应用