你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 以太网 MAC Loopback 的实现

[复制链接]
STMCU小助手 发布时间:2022-7-29 15:59
前言
' k1 e6 Z- z" {) v- x$ O1 I8 Q在 STM32 以太网调试中经常会遇到“设备接收不到数据”,或者“设备发出的数据对端设备收不到”之类的问题。遇到这类. \3 k' a1 p. ]' m
问题首先要做的是定位问题发生的部位,这样做的好处就是可以指明下一步调试的方向,缩小分析的范围。以下图为例我们做个简单的说明,设备 A 和设备 B 通过以太网通信,现发现设备 B 无法接收设备 A 发送的消息,问题可能出现在几个地方:9 m' c0 W  r( u3 }3 r6 t
应用层的程序,或者协议栈出错,数据根本没有到 STM32 以太网外设。这种情况我们在调试的时候,在以太网输出函数 low_level_output 中打个断点就可以检查出来。$ o6 D) f7 ]- w: o1 d
STM32 以太网 MAC 出现问题,没有把数据发送出去。对于这种情况,可以通过 STM32 以太网的 MAC loopback 能来检查 MAC 的收发是否正常。/ ~; s6 m8 M+ M% T6 s% F
STM32 以太网 MAC 和外部 PHY 之间的通信出现问题。可以通过 PHY 提供的 loopback 功能来检查。! _" ~% `9 |% O9 b
设备 A 端的收发没有问题,问题可能出现在线路上或者设备 B。可以通过在网口的接线上做网线交叉,也就是将 RJ-45 接口中 TX+RX+连接,TX-RX-连接,来进行检查。
4 r' y# n7 s' ~7 ^2 G6 X( y" n$ s# F5 t' X1 ^) i
. ^5 j. x! J9 J% Z. }
K[@CIK(4{U4@P`QXH6W6UB8.png
8 q; W! F: o0 ?  J
& y% V" M. n! _
8 y' f8 O' B  w4 i3 _$ c( E
本文将主要介绍上面提到的 STM32 MAC loopback 方法。. t" k) B; H( Q$ F* p0 v% r
  ~( l' H2 T, F! R. e

" H& i4 P+ T) WMAC loopback 模式
( F5 D6 W/ l) q& gMAC loopback 模式的使能很简单,将 ETH_MACCR 寄存器的 LM 位置位就可以了。. E5 ~" ~, H6 ]! L1 \1 b
MAC loopback 模式使能后,MAC 发送的数据帧通过 MII 接口发送给外部 PHY 的同时也发送到 MAC 接收端。这里需要注意的是 STM32 MAC loopback 模式只支持在 MII 接口下工作。
" g; X' W' v6 r  I4 \9 L! R7 g% p5 e5 g2 ^% w1 s, U
7 }" m6 b, V/ P) }; T
76)JS8V8GTL}CY18@~WSJ_W.png   o* Z" z" ]" D: i8 S8 I$ K6 ~

- l6 E+ P& k% O$ I" p- T9 V

( t6 r) Y# i; {) P但要正确的接收到 loopback 的数据,还需要注意一下几个地方:
! Y( r3 X9 k0 K9 r. vMAC loopback 模式下,MII 接口的接收时钟(RX_CLK)和发送时钟(TX_CLK)还需要外部 PHY 来提供,所以PHY 的初始化不能省。
" j( A. S7 t5 S0 h+ x( S. p! B3 g5 D以太网帧中的目标 MAC 地址应该和源 MAC 地址一样,或者设定为广播地址(FF:FF:FF:FF:FF:FF),否则 MAC 认将会过滤接收到的数据。或者将 ETH_MACFFR 寄存器的 RA 置位,以接收所有的以太网帧。
4 D4 n4 K5 S& L8 L+ v8 c6 `: q• 对于 F7,H7 这类带有 cache 的 MCU 型号,需要注意接收/发送描述符和接收/发送 buffer 的地址,以及 cache 属性。因为这部分存放在 SRAM 的数据 CPU 和以太网 DMA 都会去读写,如果使能 cache(回写)可能会出现数据不一致的情况。也不能将其定义在 STM32F769 DTCM RAM 区域。
- N. s9 \! f# S% y0 l: @% p* A. [
. p. f. I5 L4 g

2 ?1 I9 K$ A; S: l. `, Z) eMAC loopback 例程 / W- Y. ^1 q* x" G, U4 u4 Q
例程说明 4 V) s% ]( d3 |2 D# ~' f
本文基于 STM32F769I-EVAL 板提供了一个以太网外设测试工程。工程中没有用到 TCP/IP 协议栈,只通过 STM32F7 的 HAL驱动层,实现了以太网 MAC 层的数据收发,同时也实现了 MAC loopback 的功能。这个测试工程的目的是,检测 STM32 : R5 A! ^  h0 q8 d1 X+ U
太网外设的配置是否正确,工作是否正常。
# a) A8 O" ~9 ~& a; T9 y这个例程提供两种工作模式:
- h2 U* P( R9 j. r4 L' J& T1 j正常模式& u8 r+ L5 K7 k& l2 t
在这种模式下,可以正常与另一个设备(PC 或者其他的开发板)通信,也就是可以发送和接收以太网帧。用户可以发送自定义的以太网帧数据,程序会自动构建以太网帧并发送。因为没有实现任何 TCP/IP 协议,如果想发送 IP
( B6 j, Y" N3 |( _: E3 Z或者 TCP/UDP 包,就需要自己先按照这些包的格式构建好数据。: y* Y, V0 |2 ?
MAC loopback 模式- Z0 D0 S6 @6 \; l4 W
在这种模式下,STM32F769I-EVAL 板子发送的数据被直接送回到 MII 接口的接收端。如果此时网口还连接到另一个设备的话,该设备也是可以接收到数据的。
# B2 J( X: A0 l9 {( [( @
1 Y' a/ `5 d$ N+ N9 r

# R/ S8 E- N" B- X! h例程配置
4 z! m0 M( I# m* U& o/ _2 E* m打开例程后,先要做以下的配置:
7 N7 X8 c6 R2 t* \% k7 [" e设置目标 MAC 地址(dst_addr
/ H% G6 Q  c' D1 p# k, P, P如果发送广播,dst_addr 设置为 FF:FF:FF:FF:FF:FF。
% R  i+ v9 B$ V4 t: r; E如果在 MAC loopback 模式下,dst_addr 设置成和 src_addr 一样。
6 c5 y9 g7 N+ ]% X7 ~5 ^定义帧数据的类型(frame_type
2 n; q5 p* C+ k, P可以发送自定义的帧数据类型,或者通用的预先定义好的帧数据类型。比如,如果发送的是 IPv4 的数据,frame_type 就是 0x0800;如果发送自定义的类型,则可以使用未被分配的数值。在这个 demo 中,用的是) I9 N* ]+ r3 Y( i
0x0601。
' [9 X4 G9 B$ ~) z) ?3 C+ u4 V& D初始化要发送的数据 buffer
7 M* u* u- ]0 b4 I% B要发送的数据保存在 teststring 数组中。请注意,这个数组里只保存应用层要发送的数据,也就是以太网帧格式的数据段,不包括目标/MAC 地址,以太网帧数据类型和 CRC 校验码。
  m7 n! K; p" n# t- f如果不使能 MAC loopback 功能,则在 main.h 中注释掉 MAC_LOOPBACK_ENABLE 修改好以上的参数后,重新编译烧录后运行。, }) i+ q  y6 k% ]
每次按下 USER 按键,触发一次数据发送。接收到的数据保存在 rxbuffer,并且板子上的 LD1 灯会改变一次状态。
9 ~- V  g1 e7 ~3 O0 N. S1 ^+ K0 F6 F6 P# A! ?6 r) B8 f2 c
完整版请查看:附件- ]- x. x' ~  V6 C% h+ J( L& ]. K

5 K5 V1 \! ?. \) q
4 X  Q+ F4 Q1 m7 {; _

/ T. W* z% \+ ]0 C+ z$ V' q/ D# D% F6 G$ q( U  F1 E, b

STM32以太网MAC Loopback的实现_V1.pdf

下载

445.91 KB, 下载次数: 36

收藏 评论2 发布时间:2022-7-29 15:59

举报

2个回答
wzhigen11 回答时间:2023-1-18 11:19:29
HAO DE
! G! D0 ]  T" U$ `/ m8 x
zxy309 回答时间:2024-10-30 11:16:01

好的 先看看

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版