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

【经验分享】STM32 以太网学习

[复制链接]
STMCU小助手 发布时间:2022-1-24 19:00
STM32进行以太网通信,需要  了解一下内容:
  硬件层:MAC控制器  和  PHY 和 变压器 .
  软件层:网络协议栈,例如:lwip协议栈,RL-TCPnet协议栈,FreeRTOS-TCP协议栈,uIP协议栈。

MAC控制器
  STM32F107/STM32F407自带 MAC控制器,有的芯片把MAC和PHY做到了一起,像ENC28J60。
728723-20190408101624770-654526955.png

紧接着 以太网通信  依据 TCP\IP协议,但是这个协议太大了,STM32上运行不了,而有一个简化版的TCP/IP协议是  LWIP协议,这个LWIP 协议是可以运行在STM32上面的。
下面就是LWIP协议移植到STM32F107上  。。。。  
首先下载LWIP协议栈({{{后面发现没啥用,因为ST 给移植好了}}})和STM32F107为以太网外设专门做的库({{{后面发现不是库,是移植LWIP好的工程}}})。


      笔者再下载之前,以为这个文件(stsw-stm32026.zip)只是一个库函数(一个eth.C文件,一个eth.H文件) ,让我们调用.实际不是这样的,是一个移植好LWIP协议的一个好的(可以编译通过)keil工程。
     笔者正在阅读这个工程,在阅读这个工程之前下载了这个工程的说明文档(和下载工程在同一个界面(AN3102Application note)),但是是英文的,笔者C和英文不是学的很好
  ethernetif.c 和stm32_eth.c:在这个工程文档中有这样的一段话,协议栈(LWIP)和以太网控制器(MAC)的连接文件是ethernetif.c 和stm32_eth.c。     英文原句:For the STM32F107xx, the ethernetif.c (under Utilities\lwip-1.3.1\src\netif) and stm32_eth.c(under Libraries\STM32_ETH_Driver) files constitute the low-level layer, which is theinterface between the stack and the Ethernet controller. 这两个文件怎么连接的,现在还不清楚!
     netconf.c:为了使LWIP协议栈的周期任务能正常工作,还利用一个定时器为协议栈工作,有一个函数负责调度LWIP协议的任务。这个函数是LwIP_Periodic_Handle,定义在netconf.c中,注意这个文件不是协议栈LWIP的文件。主要功能包括:LWIP初始化,MAC地址和IP地址设置等等。
  opt.h:协议栈的初始化参数在opt.h中可以找到,依靠opt.h修改后的新文件lwipopts.h,这个文件包含了LWIP协议栈为STM32F107做的一些修改!修改内容如下:
                 1、DHCP是否被使能,参数设置是LWIP_DHCP      2、TCP和UDP的连接数量,分别参数是MEMP_NUM_TCP_PCB 和MEMP_NUM_UDP_PCB
      3、堆栈的数量设置参数是MEM_SIZE
                 4、缓冲区的数量和大小,参数是 PBUF_POOL_SIZE和PBUF_POOL_BUFSIZE        5、更详细的请参考文件lwipopts.h 。
PHY 接口配置:MII 和RMII 为STM32F107连接PHY的 两种接口模式,在stm32f107.c文件中有两个宏定义,想用哪个接口,就把另外一个接口宏定义屏蔽掉。此次编辑时间:2015年8月19日15:10:08
看了上面的源代码简单说明,笔者准备找个开发板试验一下(开发板硬件说明: 芯片STM32F107,DM9161,HR911105A分别对应 MAC,PHY,以太网变压器)。
2015年8月23日08:00:34 ,之所以这次更新和上次相差了很多的时间,是因为笔者想把这个工程下载到开发板运行起来,我想是不是得修改STM32F107(MAC)和DM9161(PHY)之间的连线,看了一段时间后发现开发板上的线和代码上的线是一样的,只不过PHY有个地址是1(某个引脚控制的拉高是1,拉低是0)),开发板上是1,程序里面是0,就修改这个,编译,下载到开发板,代码跑起来了,现在程序跑起来了,很是激动,虽然没我多大的贡献。MAC,PHY,以太网变压器怎么连接的稍后会加进来.
2015年8月26日11:11:33,代码跑起来了,准备进行  UDP  数据传输。
打开 ST公司官方提供的以太网例程stsw-stm32070,工程里面有两个选项,一个是FreeRTOS和Standalone,可以理解为一个是操作系统,一个是“裸奔”,笔者还没有学习过操作系统,因此在这时暂停STM32F407以太网的学习,去学习实时操作系统。

收藏 评论0 发布时间:2022-1-24 19:00

举报

0个回答

所属标签

相似分享

官网相关资源

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