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

STM32H723+Lwip+ETH+CUBE 完整配置

[复制链接]
STMCU小助手 发布时间:2022-12-16 12:00
开发环境:9 R: L- D' y: d
适用CUBE版本:STM32CubeIDE 1.9.0 及以上- \7 ]5 k! s/ C( |: s1 {% @
stm32芯片型号:H723ZET63 h8 `' M7 ^. D! p6 c

, W& }6 J" M" d3 W& e一、配置部分9 g7 `6 a6 }' t: s2 e
(一)常规配置,RCC和SYS
0 b% D* m/ e# G9 W4 H/ E7 SRCC启用外部高速时钟
% _1 A+ G/ X$ T& ]
9 ]! _! }( }) C: N) b! _
682d9955e9cf43a0a65d9b4e456132fc.png ; G" ], P  @8 P
; |( g! [( u, E. H# I
(二)串口

8 H( I1 y; \$ d8 l. V串口的配置和代码实现本文不加以说明+ J& v  i, d- ~0 m! f1 ^( O

; K) E/ a$ _8 F' L
f8c167d859944e54baa895907399183f.png
* T; M4 W' V$ \0 A5 \& P1 f: T$ L% R. D& P( u

1 E/ w. Q- g2 q" g) D: i(三)ETH配置
. y) q7 v' ~$ N3 X# V: w* l2 K* F: OMAC随意,不必和图中一样
' g( }* n% N- M. j: o4 s/ ^7 I) s( D% Q3 d# p+ P9 Q
5ea8cef005dd40baafdbecdfed7c3da1.png ; V+ s( y  H9 M$ t) a

6 L& }5 n3 l% t, d+ F/ }3 U+ p2 X( u0 w
5 n) _) C) U+ X8 g/ ^) J
(四)LWIP(重点来了)
; ~2 I" ]# _# \首先是LWIP的常规配置,设置IP,其他默认。
: u% I/ o; f7 Z0 J# B  p$ M9 \+ O4 Z6 ~4 u+ c) t
8d1d230137ec469b994b80d163e9e888.png # W9 M! Z: u$ [. q% Z6 H7 A8 V9 n

+ R" |+ B+ _& D% g
6 |# Y3 `4 T; \) c$ d
排坑一:H723系列不同于H7系列,官方库默认配置是0x30044000,我相信有不少朋友试过:代码编译正常,烧录正常,但是代码一执行就进入Handler。这是因为H723的内存不同于其他H7系列。H723的RAM_D2的地址范围是0x30000000~0x30008000,而其他的H7空间比这个大得多。
4 o# @  b! C, l; q! s* S" \7 {) f2 ~& W$ M, `& w
ef39f745958b4784bdb3100a262af769.png
; e2 I. J! U- j3 y/ a0 r& }# O( H" p$ ~4 n2 Y. O* w
然后注意LWIP_NETIF_LINK_CALLBACK(检测网线插拔的)要使能就行,其他配置默认
* x' N/ |+ I) R/ O, ~) n8 ?# Q; s0 u8 [
f53768e37e804931ac641cac44c4cc48.png , R9 \7 r7 W7 t5 }$ J; c
1 `, `; w/ c* l4 W: ~" v# m
排坑二:你实际用的PHY不一定是LAN8742,但官方配置就是默认且必须选择LAN8742,恶心死我了,所以到时要去修改它源码的PHY地址,后面会说到在哪里改。, Q' _+ e& m* J0 d( z/ a

& q# f/ @- ]! z. y2 k% E
75303c76a1a8446085c396d2315ff064.png 7 q' ?1 ?: r9 ^, r9 ~3 p

  J, l% {* e, k' {5 u) N$ V' ?: u然后这里也默认就行+ v  O& }& Q" D+ ~" l# n
$ T6 P. X" ~$ w" C
4117b0796281493f8dc8704fd96a01c0.png ; e' I. w( q, F% s1 x# v0 T4 G; F4 x
' I' y) M# o' ?% ^
(五)PHY的复位引脚配置
- E9 H/ e1 f6 b4 H+ O4 E0 O" [+ ^( _我看很多教程都没详细写这一步,经常不知道这个复位是哪来的,实际上是必要的,除非硬件上设置了自动复位。设置一个引脚为输出模式,常态高电平。(具体哪个是复位引脚要看你们自己的硬件设计)( \. y: b. }! G4 d7 C
3 ?1 @6 k  d$ _8 y
269af4c945d54d74b1e7b7e76abf5790.png
- w8 ]2 C3 N. L2 N# z* o
% l  w/ ^7 q: |. G  }并且常态设置为高电平
5 j- R1 a# H4 o
' ]* [. w" n  y5 S8 U% @
4534a37853b746ac891621786877ba75.png 1 A. I; D! c+ H- @# _0 c6 [
8 q6 R& j3 ]6 V, O
(六)MPU配置
$ x0 @& G+ \" A! y& j7 T排坑三:H7系列的芯片想用LWIP必须配置MPU,而H723的配置与其他H7系列又有些不同,但哪里不同不需要管了,按我下面配置就完事
" N  `" O3 i# q2 E5 q: q0 C- F& x" H; Y) g% K2 S( Z0 M4 w5 N
410bbedee33847fea39d13c5e0d74f78.png 5 m. _& ?, W8 R/ ?
& V" \( G& L0 l9 c2 v
就这两个% H8 ]2 x; J9 X' b+ E
) e( ~7 R. J6 s: D0 ~+ b7 B
94279f8d188a4053aa74ba32c539f1ad.png # `; J4 I: `9 N  N( |  \

( @' ?1 a& g" S9 J4 Q$ d. D& G(七)时钟树配置0 {1 x* ?2 a% n3 f. E
这个没啥好说的,常规操作。
: F0 L! S" J/ \; }+ o
- p" }$ w) ~- a& y7 _) [
f28a9fe3db8e4049a82fe04119718839.png
" s4 o5 f! m, D; G& O* k3 `  m/ v
8 ^) q; F2 V; ?(八)生成代码
) p" C( R4 E" h7 B5 R+ v. i8 H; D这里可以改大点
! w4 f/ X0 Y* I+ m8 V" q3 ~9 W& y. F' k8 a
0a5246b5c9cb4bf3a225dd9548e65686.png
" a1 q- K- r$ i# j
& P; `. ~4 M, i: k1 Q然后勾选划分模块
+ a& T( W& |/ d5 b+ i& i6 B) _4 r& Z7 G4 B0 |7 b
5f51d9a5ab004353a8ebee1b01840af8.png
; ~6 V- S9 }; T; ~: N# O" b
! W4 t9 C: c5 u& w2 K# [2 S3 |保存后就可以生成代码了。后面来到代码部分:
# h* J6 }/ C: b+ I* m1 [
( U4 `* I$ k6 z1 R" W* j# j1 q
: ]' m/ S; t" c) e$ r6 o
二、代码部分2 `) I1 q. O1 u, P6 X
(一)main函数的修改
" F7 E# H% F9 ^, L/ V$ B使能D2SRAM1时钟:( g2 G# b" n7 u( C/ T$ S

5 z2 N1 r4 R: l0 Z; F
5c020495c3e646a6bea6538a894f09a7.png , _; y$ C. ]% e8 I4 ?  A' i

0 a9 g& H. {: k- [7 v' b; D后面再加上这几行,清空DVache和PHY复位3 j; i; [: X/ H3 b
6 x, L5 ^, O' r' P/ ?, ~
33b17d8e956e4b48bf8db8b1c305b39e.png
4 J6 K$ x* E) i& i
2 I7 [/ L) N& Q4 L  K9 U当然还有MX_LWIP_Process(),加在循环里面6 V+ D( |% K& p5 d" c3 U6 N0 e

% X# C) A* h) P: e  J
fcc193bfe8e544b196813935cebbb6fe.png 1 {* {9 e3 S2 Z  b$ M  K

6 R% T% q) M3 Q" c

! `8 P3 P6 X) M, s(二) 修改phy地址
- p6 L7 O& ^( m( A因为我用的phy地址是0x1,所以需要修改才能用,在这里修改:
- W" r4 p* h; w1 ?/ J" s
8 }3 @$ j9 p' Z
fbb3f33ead9f477a8e413962a5b6127a.png
' F0 y; C! p- q' T5 s' y$ i8 k) _# G: N
" }7 R0 X* ?6 T0 m' P
找到函数LAN8742_Init(lan8742_Object_t *pObj)1 U) y' b/ {  B8 t
在这个位置,强行修改phy的地址为0x1,很不好的是如果重新配置了ioc生成代码,又要重新在这里添加修改# X) M! F/ K) h& b
9 m; v: E; q5 w! P7 ?
dc68a6399c2f4bea8a802e6ec2d9fc47.png
7 z, l* a% e7 [
; F5 N: C3 I' W7 R% Y

2 n9 y0 z9 c$ A0 k7 c: Z  M; [(三)修改ld文件
8 Q6 d# [6 @9 a' M很多人都不知道要改这里,少了这里不管怎么样配置都无法正常使用以太网,巨恶心,就是这个文件:  l0 j6 S) t. p  h. X

0 p/ @6 {3 p) Q6 F
5c78f4fa39cb438da4c8763446d9bd97.png , G% g/ H7 r1 B( f  I6 ]

' C( \! R# Y+ {$ B( }8 X
9 j1 E3 y& l; }
拉到最下面的这个位置,添加以下代码(目的是将lwip的内存放进RAM_D2里面):0 W3 C9 i+ v3 t
% M8 x& i) T4 |5 }% s
afe96e76510343a4b3ecfe18adae5f17.png # h+ a  A+ D& z" d: P! v6 \
/ j. k  y/ o1 }- U
到这里,所有的配置就完成了,可以编译烧录,尝试ping网络:
5 x) A  A7 x3 W: i  L% `( U' ?% M3 _% Q6 Z* c& W2 z8 R9 g- u4 C/ x
8ea813603ac14c45aa277d503fe3c800.png
# R+ _7 B2 z3 c+ t; ^
8 ^2 l9 y, F1 ^1 r4 `搞定。; i( q9 H# R: N# [+ k
————————————————/ s1 \7 z- x9 d" E" X
版权声明:青云客_Hugh6 x& ?) }. [- A* n+ e/ H9 U0 z; [
5 W$ ?" Z! I* Z" j

, v2 |# s0 l7 M3 I$ i# K, H
收藏 评论0 发布时间:2022-12-16 12:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版