|
看了之前以太网在线培训的视频教程,大家肯定是受益颇多吧有时间的吧8 C1 Z, X% H$ M% m 4 e8 H) M+ q6 C8 ^/ u3 k1 \9 E: e 可以跟着大佬一起完成培训中的动手实验>> * T8 C5 Y4 x% y& Z4 ^( l 小破把在线互动的问答整理如下,希望对大家有帮助~2 v+ r* q' o* q( t2 N# X% p2 ^ 5 V2 W# u3 x& ]: I8 j! c5 u L% p 1、问:LWIP协议与标准IP协议之间有什么差异? FAE:LWIP是对TCP/IP协议的开源实现。具体现在LWIP支持了哪些协议,你可以去http://savannah.nongnu.org/projects/lwip/做进一步了解。 2、问:LWIP协议怎么对memory进行动态分配管理的?# d9 }% e/ X) D0 |. D \( B# H FAE:LWIP协议提供两种动态内存管理的方式:动态内存堆和动态内存池。简单的理解,他们的区别是,前者是按照你申请的大小来进行分配,后者是每次只能分配一个或多个固定大小的内存块。 3、问:LWIP协议的配置有没有特殊的要求或原则?2 q1 A8 D) r8 k1 v( h FAE:根据应用进行配置,LWIP 协议栈会对一些有相互关系的宏定义进行检测,但不是全部。 3 m \4 u/ z8 _' a 4、问:RMI和MII的速率谁快?7 h2 H* b; z8 E& l O, k FAE:理论上来说是一样的。RMII虽然只用了4根数据线,但是它的时钟比MII提高了一倍。 . W- S& w0 M P, P, U 5、问:RMII 需要50M晶振。不能使用HSE 50M晶振直接MCO提供吗?1 o! W7 y& n4 l6 C% K* m FAE:STM32外接晶振不能超过26MHz, 所以你可以通过直接提供50MHz的时钟给STM32和PHY$ k! f$ }/ l. k# m$ J ( p0 w: x. `3 c" S0 @: j( u 6、问:STM32支持以太网接口的MCU有那几个系列? FAE:F1/F2/F4/F7都有,我们的STMCU FINDER工具可以帮你快速的进行选型 7、问:怎么使用UDP的各种常用功能,有没有可以参考的资料?( a* G8 K( ]- ]8 v# ~# T* Q" l/ d FAE:可以参考我们Cube库里的LWIP的例程,里面有UDP client/server的demo 8、问:请问一下STM32支持IP协议的芯片系列都同时支持MII和RMII两种标准吗?( H: P! g: p2 x: W0 P2 z% T: @" X FAE:是的 9、问:这么说Nucleo 144带Ethernet接口的电路板是使用第一种模式,25MHz了?) x% k3 i& e5 `2 ]: T6 K$ n7 v FAE:Nucleo144带以太网接口的板子,都是用的RMII接口,PHY使用的是LAN8742A,该款PHY可以将25MHz的时钟倍频到50MHz,所以外部用了一个25MHz的晶振& O8 R: r* {9 y" G3 P7 D 10、问:最新的,如F7系列,一般都支持MII和RMII? FAE:stm32的以太网外设都支持MII和RMII这两种接口# _. O- H7 [$ W4 o2 c. b# X8 g9 u3 @ 6 d0 {* p* B, e4 {" J& {6 {/ y 11、问:STM32驱动不同的PHY时在软件上需要注意或修改的部分有哪些? FAE:需要你结合PHY的数据手册和板子的原理图来具体分析。比如:PHY和STM32的MAC的接口是否不同,是否用到PHY中断引脚,PHY 的bootstrap,PHY的寄存器的不同等等,具体的内容今天下午的PHY移植这部分会做详细介绍。9 }4 J/ q5 \% D- }; Q+ j I" C ) ^$ `! g% p, K7 l; a 12、问:MII和RMII两种标准的接口除了PIN脚的差异还有其他差异吗? FAE:使用的时钟不一样。 13、问:ST有没有类似TI的 EtherCAT实时工业以太网的支持?或者说,何时能提供类似EtherCAT实时工业以太网的支持?6 L' k C9 G& N0 L- i FAE:现在我们有合作伙伴提供的有这方面的解决方案。 + L5 r# s& Z4 ?2 r. B1 R 14、问:crc一般是什么格式?- t6 X3 r- I* P FAE:在用户手册的以太网章节对使用到的CRC有具体介绍。生成多项式如下:Gx = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 10 |/ a- S0 t+ g/ M8 D 15、问:CRC那么多,automatic crc,默认是哪种? FAE:在用户手册的以太网章节对使用到的CRC有具体介绍。生成多项式如下:Gx = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1% r5 }+ {" y0 |3 t9 n. {9 y 1 o6 R+ b2 d4 _$ l, w 16、问:CRC还有多种么?. h6 A7 I& u7 i) z/ t, L FAE:CRC有两种方式,一种是硬件CRC(MAC计算),二是软件CRC,mcu计算) _# {3 M! n6 m! k- [& e, a 17、问:IP datapram header error and payload error during transmission 当出现error的时候,我们应该怎么处理) y9 Z6 I( o. P0 [ FAE:请实现HAL_ETH_ErrorCallback回调函数,并且检查AIS中的具体的bit位,以确认是什么错误?4 f- R+ m- z* i. @ ETH_DMA_FLAG_AIS这个包含的哪些异常信息,请参考RM0090, P1212,DocID018909 Rev 95 E V+ m/ c' l4 A6 d 18、问:请问 STM32L4系列 哪个型号集成以太网收发器包含以太网功能? FAE:STM32L系列目前不支持以太网 19、问:用STM32做以太网口转4串口,单核能做吗?目前要做一个以太网转4串口透传模块,一个STM32能搞定吗?是不是需要什么内核? FAE:1.从外设资源上,需要有足够的串口和有以太网支持。 2.系统资源上,需要评估你的应用占用的总线带宽,看带宽,速率和 SRAM,是否满足应用需求。都满足的情况下,一颗STM32的MCU理论上是可以实现的。- D. ~4 Y9 D7 L5 P+ D3 {. R4 A 20、问:在以太网驱动的设计中DMA链驱动FIFO只是用来接收吗?3 P' ^ _0 M0 I- h0 f FAE:DMA 实现接收、发送功能,以解放mcu负荷。 21、问:CUBEMX是不是不支持STM32F107以太网的管脚重新映射?; u$ T- Z3 W: |, V4 y" x3 j FAE:CubeMX 4.21.0不支持。 : y$ \: N7 F4 m0 T 22、问:目前正在调试207的以太网,PHY芯片用的是AR8032。lwip移植。目前是10M配置的 ping 不会丢包, 但是100M的话 ping就会经常丢包,求教大家有没有遇到这个情况?* d5 Q' f0 R- g$ C7 s, ] FAE:这个需要详细分析,MII/RMII接口?晶振?lwIP配置?AR8032的注意事项等,建议先请代理FAE帮助分析定位。 # C% c5 ], l" o1 ^0 p4 s6 u 23、问:哪些 nucleo板子有带以太网Phy的呢3 [$ s& {7 a4 O6 K2 }; B4 o' Y FAE:NUCLEO-F2907ZG, NUCLEO-F429ZI, NUCLEO-F746ZG, NUCLEO-F767ZI 24、问:lwip协议那个版本最稳定?2.0还是1.4.1? FAE:2.0版本较1.4.1有新属性,二者都比较稳定。 * x" L: B3 `9 U a0 J! p! A1 u 25、问:stm32以太网接收断续,使用stm32f429的片子,用cube生成包括lwip的示例,无操作系统。不知道什么原因cube的lwip不能选择igmp,只好手动打开此开关,同时为了编译通过关闭了dhcp?7 e1 F& f1 \: y; T5 Z* ^# j FAE:这个或许是CubeMX的功能待进一步提高。 26、问:PTP 与 EtherCAT 是什么关系? FAE:PTP跟etherCAT没有关系,PTP是关于timestamp问题,etherCAT是工业以太网标准 27、问:以太网低功耗模式唤醒有历程吗?官方的7 c2 p( G; K& o- M* d& G0 O; @" Y FAE:目前没有 7 g2 `: \/ F# Y, F4 u: W 28、问:IEEE 1588的精确时序协议(PTP)通过以太网使分布式设备的时序同步精度达到纳秒级,从而满足分布式应用系统的要求。 刚才讲解是达到ms级,然而1588目标是ns级,要达到ns级需要什么做什么?* a; r7 U" c9 {- F FAE:IEEE1588 V2能达到亚微妙级的精度,PTP是MAC里的一个模块,如果要达到纳秒级,对硬件的时钟频率、电气、机械特性要求更高,当然成本更高。 . J' q" m# H) \ l 29、问:2K的Rx fifo和 2K的Tx Fif 是需要软件开辟缓存的吗?还是硬件自动分配好ram?1 V7 m: V* {, b. v( k FAE:这两个缓冲区对用户不可见,可以不用关心,专用的缓冲区 30、问:CubeMX中以太网的Extended Register应该如何配置?& v3 e& K7 e- g/ F9 H' V FAE:这个请参考ieee关于扩展寄存器的定义。 31、问:Threshold mode 和Store-and-Forward mode 2种传输模式 在 具体工程哪里有定义?% u3 [& T* G& D, l9 D: O7 u p FAE:在驱动文件stm32f7xx_hal_eth.c里,函数ETH_MACDMAConfig里,代码片段为:( `7 U# z0 P" i8 q; q
32、问:STM32以太网协议栈是uIP用的多还是lwIP用的多?# W' A8 D+ d7 M% o/ m8 n FAE:STM32协议栈是使用LwIP ; O" J1 f- l7 R$ F; z 33、问:uIP也是免费的?cubeMX有uIP吗? FAE:uIP是开源的。CubeMX目前不支持。# X& R( J& i. \7 X' N% R4 K # q% A( ~' j: D j1 b# T 34、问:目前方案中2种 TCP/IP 协议栈都有用,但稳定性都不太满意,特别是工业应用,不知道为什么。希望能在这块改进,提高稳定性 。 FAE:lwIP和uIP都是免费的TCP/IP解决方案,一般如果没有特殊需求是可以满足功能要求的,如果性能、) @7 _% v8 V. x0 ~2 d# c 特性要求苛刻,建议使用商用版本,如micium TCP/IP, Oryx TCP/IP等等,但是这些涉及license,请斟酌。 4 e/ m$ Z; F0 ]7 Z* o 35、问:以太网试验中ping是什么原因?提示无法访问目标主机?但是数据却接受 FAE:一种可能的原因是,PING过程的延时太长,看到产生无法访问主机。可以使用抓包工具看下数据包的情况。2 J2 Z( E" X/ b/ Z ) W7 A; c( B Y1 }$ Q6 I' B 36、问:请问如何解决stm32F7 用了cubemx库以后在mdk下编译缓慢的问题? FAE:Cube库为了提供在各系列MCU之间的移植性,对底层驱动做了封装,代码量相对来说变大。你也可以使用我们的LL编程接口,来直接操作底层寄存器,来获得更高效的代码,但同时也要求编程者要十分熟悉STM32的使用。% k2 R. j/ e# ]* H2 M$ o 2 w: c7 @) k, g/ i. B0 ^' Z 37、问:针对 TCP/IP协议栈,只有MCU的适用性,不同的MCU有针对性地优化吧?- p% l! d# _5 O1 e FAE:您的问题是指MCU层面对应用程序的优化吗?比如对memory的划分,通过开CACHE来提高程序性能?这个可以根据不同的MCU进行,比如有的MCU提供CCM RAM(只有CPU能访问,并且不经过系统的busmatrix),你可以把程序的堆栈放在这里。可以参考我们不同系列MCU的对应AN(在官网上找到你所使用的MCU,就可以找到和它相关的所有AN)6 v1 S) o; H z9 u3 `& O 4 r8 o) D X8 u 38、问:STM32F407以太网有两个中断向量,但是有一个是用于唤醒的,所以只有一个中断向量能用。现在想用中断发送数据,但是找不到中断源,不能进入中断,怎样触发也不知道? FAE:底层发送数据是通过low_level_output完成的,它会将协议栈要发送的数据,保存到发送的descriptor中,剩下的事情就是DMA在做了,你只需要在初始化时,设置好FIFO数据弹出的模式就可以了。6 e4 a1 O* [9 g. x 39、问:为什么不直接传给FIFO,还得用descriptor来管理DMA?& z N" _: x9 S2 g3 D, F5 d FAE:DMA做的就是将数据从STM32系统RAM发送到FIFO的工作 l m( Q. L# _( a( F8 @ - q ~, Z7 d! r7 {- G, q& u 40、问:以太网传输ADC采样数据偏差,我用stm32f4的以太网传输ADC采用数据,在通讯的时候会造成采样数据偏差,以太网采用的是lwip协议栈,FAE:ADC采样六通道正弦波,每500ms通讯一次,在通讯期间的ADC采样数据会发生偏差,给ADC采样数据做递推平均值算法后,不稳定- j% q# v w7 Z6 Y% W# `4 b3 a* A) \; N 你的问题是ADC采样数据在传输中出错(校验出错),还是有采样数据在传输中丢失?用的UDP还是TCP? 41、问:压力测试如何 会不会丢包? FAE:应用程序写的不好,也会丢包。这个问题要跟具体的应用来分析。# T2 H; p, Q8 g/ U2 m4 Q) ` 42、问:stm32有自带的以太网模块,为什么还要用ENC28J60?! E; `$ W$ j A" g FAE:这个是看客户所选用的具体型号和他的具体应用。Stm32并不是所有的系列都有以太网外设,而且以太网外设的只有MAC控制部分,还需要外接一个PHY。如果客户想要支持多个网口,就会选择使用ENC28J60等芯片了。 L, o4 }6 O/ X1 X7 M2 z2 P3 k 43、问:请问STM32F407可以配LAN8720A以太网PHY吗?用RMII模式,我把INT脚用作50MHz REFCLK输出给STM32,所以没有PHY没有中断输出给STM32了。我看例程里是要有中断的,该怎么修改例程呢? FAE:首先肯定是可以用LAN8720A的。如果没有中断信号给MCU,就需要使用轮询的方式来查询PHY的中断状态。, [( i9 ?0 f6 X6 m + L, [1 Q2 h9 ]1 b7 N 44、问:接上一个问题 还有驱动里面的寄存器定义是不是跟8720不一样?我怎么检测出来是10M全双工,实际应该是100M全双工, N: F+ [# k' l7 c FAE:请确认例程中的PHY型号是不是8720.如果不是8720,那么寄存器定义会有不同,请参考Amanda讲课的移植指南进行改动。 * g% g0 a1 c7 g 45、问:如何实现以太网功能的,是用F107或F407芯片自己移植Lwip还是采用SPI转以太网模块?+ w) `- N z+ q7 f* V FAE:建议使用自带的以太网外设,节省BOM。 % c k2 B; g7 h) S0 c* r; E; V; I 46、问:8720问题,如果想使用100M全双工,你可以配置寄存器使其强制百兆模式? FAE:不要使用自动协商模式。 * y2 K! P) r* `1 c- ] 47、问:PHY芯片DM9612用于F407的效果和稳定性如何? FAE:稳定的。 $ L" a' p5 ^! s$ A1 s) O5 Q 48、问:自己做的STM32407,程序跑一段时间之后以太网无法通讯,ping不通,RJ45绿灯常亮,黄灯闪烁,其它部分正常,也就是程序通过IO能控制,通过CAN通讯也能控制,只有以太网部分死掉? FAE:建议把其他所有功能都关闭,只保留以太网功能做测试,再做分析。% q% i' `8 L& _, L) ?, t 49、问:stm32和dm9161实现以太网,但是ping不通d,m9161已经工作,工作在100M全双工模式,但是Ping不通,不知道为什么,初始化什么的都成功了? FAE:首先确认LwIP中的ICMP功能打开,然后用抓包工具抓包,分析问题,最后也要检查硬件连接是否正确,时钟是否有输出。0 Z- J5 m0 o8 s$ Y* _ 5 u" F8 z5 q3 z) y 50、问:cubemx能支持uIP吗?9 r2 J" i+ v# r$ D' n3 A; k FAE:目前不支持! [9 B: D0 c/ v6 x& d+ E" X8 d 51、问:DM9612除了电压切换和时钟还有什么功能? FAE:请参考DM9612 datasheet# \5 k+ d6 L8 T5 Q. x/ h. \ + |; j3 U ^4 d! ^5 n! `$ { 52、问:STM32以太网中断问题,为什么我的以太网中断在最初系统复位进去3 -- 4次之后就再也进不去了。有没有常规的解决办法?& R8 T i4 G3 H FAE:使用调试模式分析,请确认硬件、驱动,lwIP配置 7 Q6 f8 W' Q: c6 j2 [0 B8 Q; Y 53、问:我用cubemx最新版初始化了串口,GPIO,ADC, RTC, IIC, 几个定时器,还有ETH,但程序根本不运行,我把ETH的相关初始化注释掉,程序就可以正常运行,这个现象一般是什么原因造成的? FAE:CubeMX的初衷帮助开发者生成应用程序框架,开发者还是需要仔细看一下时钟配置,GPIO配置,descriptor配置等。6 z2 v5 Z: ]5 b# @; i5 G - G/ a; M4 l+ u3 ~! c% m3 k 54、问:LWIP三种编程接口那种稳定最好,适合短时间内传输大量数据?; b8 I( H1 Z. c FAE:如果需要吞吐量大的话,建议raw接口,这样减少OS中任务切换开销,但是对开发者要求较高。 55、问:按照初阶培训的资料,新建工程,为啥一段时间和就会掉线呢?需要重启才会好?& A# P6 N5 ? B, R. { FAE:请确认硬件连接正常,驱动程序正常,lwIP配置合理。 56、问:有什么办法能解决开发板死掉的问题,UDP似乎没办法检测连接状态?$ N7 z/ l5 U3 W9 c9 T FAE:只有使用st-link或者j-link等调试工具,调试、分析、定位。 57、问:拿一块STM32+W5500,怎么写相关的程序(什么UDP,客户端之类的)? FAE:请google、bing、百度相关例程,或者看看W5500提供商能否提供 + L ?- R5 R, j 58、问:STM32的以太网如何动态切换速度和双工状态? FAE:请将ethernet配置为自动协商模式! w2 V/ O5 b( W+ V! o, @ 59、问:内存 分配 Heap/ Pools 2种方式,哪个更加可靠?0 |2 E5 U9 |! r FAE:都可靠,适合不同的场合。9 D x- i4 c; d! u! f" R0 I7 {6 D5 S 60、问:lwip如何根据自己的应用来配置参数,主要是buffer、window之类的?5 n: r/ n5 V0 \ FAE:请参考LAT https://www.stmcu.org.cn/module/forum/search.p...AA%8C 61、问:stm32与stm32之间可以通过以太网连接吗?5 U7 `7 I! z- o9 { FAE:两个设备同时都有以太网接口,就可以做以太网传输。一个做客户端,一个做服务器。 62、问:stm32f4与其他外设之间的传输可以用以太网来传输吗?6 E8 B2 A3 P! m5 G5 a FAE:需要支持以太网的设备,才能实现以太网传输。. O K* A0 E& X3 r0 ^2 [6 u5 I 63、问:STM32+LWIP通信正常,加上ADC+DMA后,以太网不通了。请教什么原因?- v5 F' x+ S2 M% d1 Y FAE:建议查看 管脚复用 + B5 _# E5 o; J 64、问:最近在做STM32F107的以太网通信,使用的是TLK110的PHY芯片,基本功能和DP83848类似,现在在SMI通信处卡壳了,进行写操作时,对STM32的MDIO和MDC管脚测量波形,都是正常的,但进行读操作时,无论我刚才写了什么数据,波形时钟不变,出去前面的引导码等等,数据部分时钟是低电平。不知道是不是还有什么地方没有设置,或者是我的硬件搭建有问题?( o s7 ?* I5 l! c FAE:请确认PHY的默认地址跟TLK100 datasheet一致,硬件bootstrap正常! S' F0 z* j- v. f; i0 ~& b$ C + X2 y4 I4 r3 d) j# p 65、问:怎么几个pool和pbuf混淆了呢?2 {7 H# R; P/ [% D! ]) a FAE:pbuf的内存时从pool里分配的,之所以建立不同pool,是适应不同的需求 . N# t) T% E( F0 L1 {( } 66、问:请教下我用的是STM32F407+DP83848做客户端,程序在那里打印可以,确定物理没有收到服务发过来的数据? 谢谢!$ b$ \ J5 P# A3 n FAE:你可以检查一下MAC还有PHY的配置。我们的F407的EVAL板上用的就是DP83848,Cube库里也有对应使用DP83848的demo,可以对比参考一下。 2 ?" _. Y6 I* R# |/ f5 G 67、问:请问ST 专家,STM32CubeMX中鼠标拉左 边的滑动条时经常自动关闭软件 的问题怎么解决,重装换电脑都 没用。谢谢4 \6 G" @1 B: f2 D FAE:请关闭电脑上的有道,金山词霸等应用。和CubeMX有冲突。, S$ d- j$ r; R# e: w 68、问:请问有没有如何根据自己的需求,来决定如何配置LWIP参数(内存,tcp window等)的教程? FAE:www.stmcu.com.cn上的实战经验里有LAT关于LWIP的配置,里面有一些相关介绍。8 ^6 [& r) B) i* @; F 69、问:stm32中断机制是否有demo? FAE:有的。请见STM32F756的Cube库里的LWIP的例子 70、问:STM32f746 EVAL board 的MCU频率和Nucelo 时钟频率一致么? FAE:没太看懂你的问题。你是指系统的时钟?系统时钟一样。指MAC和PHY接口的时钟?EVAL板是MII接口,使用25MHz时钟,NUCELO板是RMII接口,使用50MHz时钟 71、问:stm32带以太网控制器的用哪一款芯片好点? FAE:以太网外设都一样,其他根据你的应用来选型。 72、问:ping 包和 UDP 测试都会丢包,大家的也会这样吗? FAE:ping丢包有很多情况,有时是延时太长。UDP本来就不是可靠传输的协议。6 n0 G2 e$ R) o8 P/ @ ; t) ~- j/ M5 f- r+ P 73、问:第一条途径,通过高级语言熟悉socket编程,在嵌入式系统中应用 lwIP协议栈。第二种途径,通过分析嵌入式以太网代码,结合TCPIP协议栈规范逐步实践协议栈代码。这两种方式哪个更适合大型项目开发? FAE:前者。不要重复发明轮子,而且TCP/IP博大精深,玩转它不易。 $ E3 e/ c7 ?. @* v 74、问:stm32427以太网IO口线和AD采集口线挨着,会影响AD信号不?7 e) T5 E* _# i' F' k* z% n FAE:会 75、问:Enthernet 在PCB设计差分信号线宽有要求么? FAE:是的 ! r- a- d- [8 K( n! ]5 E) K 76、问:自动协商是什么意思?作用?$ K2 m% e" r* A2 K5 h7 E4 S FAE:简言之,就是网线连接的双方,协商诸如通信模式,速度等参数值2 ^2 P9 ]; E1 d1 u 77、问:接下来会有lora或nb-iot方面的培训吗? N! s, F. y3 d2 ~! t& P" M FAE:计划中,请关注ST官网" J/ A5 `' x# U 0 h3 A, r: s3 M* S. `0 b |
微信公众号
手机版
FAE帮忙给记录的