STM32网络开发LWIP
文章平均质量分 93
本系列主要讲述在STM32F207VCT6平台上利用LWIP库实现TCP/IP通讯协议。遵循的原则是由浅入深,循序渐进,重实践。相信大家手里都有开发板,认真阅读本文,也可以在自己手中的类似的硬件上利用LWIP库实现TCP/IP通讯。
strongercjd
资深嵌入式软件开发工程师,分享嵌入式软硬件方面知识。
展开
-
STM32网络ETH
芯片是:STM32F207VCT6本人主要介绍STM32F207VCT6的ETH部分,基本是把ETH部分英文翻译一下,加上自己的理解。欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转1、基础介绍通过DMA控制器进行介质访问控制这部分内容应用于STM32F20X和STM32F21系列,其他的 不适用28.1 以太网简介部分版权 2004 2005 新思科技(美国公司)。所有权利保留,使用需...原创 2018-04-06 12:01:52 · 27964 阅读 · 0 评论 -
STM32网络之DMA控制器
STM32网络控制器框图如下:前面的文章我们已经讲解了:①External PHY Intereface:《STM32网络电路设计》②MAC控制器:《STM32MAC控制器》下面我们讲解第③部分,STM32网络的DMA控制器。01、DMA控制器操作DMA具有自主的发送和接收引擎,还有一个CSR(控制和状态寄存器)空间。发送引擎将数据从系统存储器传送到 TxFIFO,而接收引擎将数据从Rx FIFO传送到系统存储器。控制器(也就是DMA)利用描述符有效的将数据从源地址移动到目的原创 2021-04-06 14:45:03 · 2591 阅读 · 0 评论 -
LWIP初体验-修改ST官方demo
目录01、硬件说明02、修改步骤03、效果显示04、使用中断方式05、Keil工程的修改06、移植TCP客户机代码01、硬件说明为什么要写这篇文章?STM32的网络应用还是个复杂的外设的,拿到一个板子需要验证网络部分是否正常,硬件设计是否有问题,对于很熟悉LWIP的同学可以直接移植LWIP,验证硬件。但快速且方便的办法是修改ST的官方demo来验证硬件。(ST提供了CubeMX工具,如果使用该工具的话,也很方便,不在本文的考虑范围内)。本文的硬件测试环境 主控:ST原创 2021-03-18 14:28:47 · 1606 阅读 · 1 评论 -
RTL8201网络芯片讲解
目录01、基础问题1.1、芯片数据接口1.2、芯片地址1.3、时钟源的选择02、寄存器01、基础问题1.1、芯片数据接口RTL8201E(L)是一种单芯片/单端口快速以太网物理接收器,支持MII接口,RMII接口,SNI接口。MII接口和RMII接口切换在8.1.1章节有讲到,如下图:选择MII接口,把COL/SNI脚拉低。RTL8201E的框图如下和MCU连接的系统框图如下:①RJ45也就是网口,就是我们常见的网口,如下图:②ma原创 2021-03-10 17:11:31 · 11754 阅读 · 1 评论 -
PHY寄存器
在之前的文章,我们讲解了STM32的网络外设部分。文章有《STM32网络电路设计》《STM32网络之MAC控制器》《STM32网络之DMA控制器》《STM32网络之中断》。STM32只有网络外设时不能进行网络通信的,因为STM32只提供了SMI接口,MII和RMII接口。我们还需要与之通信的外部网络芯片,简称PHY芯片。我熟悉的PHY型号有:RTL8201F,RTL8201E,RTL8201G,DP83848,YT8512C等,原计划讲解RTL8201F的,但是内容太多,先把PHY寄..原创 2021-02-26 09:49:05 · 6931 阅读 · 1 评论 -
STM32网络之中断
之前的推文已经将STM32网络的三大件讲完了①PHY接口,《STM32网络电路设计》②MAC控制器,《STM32网络之MAC控制器》③DMA控制器,《STM32网络之DMA控制器》本文将聚焦STM32网络的中断系统,简单聊一下中断系统和用法。01、简介网络中断向量:一个用于正常的网络操作,另一个当它映射到EXIT线路19的时候,用于以太网唤醒事件(带有唤醒帧或魔术数据包检测)第一个网络中断保留为MAC和DMA产生的中断,正如在MAC中断和DMA中断部分。第二个中断保.原创 2021-02-05 15:29:59 · 8066 阅读 · 5 评论 -
STM32网络之MAC控制器
目录01、STM32的MAC概述02、MAC地址过滤03、有效载荷检查04、Checksum校验和之前的文章主要介绍了STM32的ExternalPHY Intereface部分,《STM32网络电路设计》也就是下图区域1。本文将重点讲解STM32的MAC控制器,也就是下图区域2。01、STM32的MAC概述STM32的MAC控制器全称是:MediaAccess Control。STM32F207的MAC控制器支持的模式 符合IEEE 802.3 MAC原创 2021-01-28 09:23:45 · 11841 阅读 · 1 评论 -
STM32网络电路设计
目录01、MII接口方案02、RMII接口方案2.1、外部晶振(2个晶振)2.2、外部晶振(1个晶振)2.3、需要强力PHY在之前的推文中《STM32网络之SMI接口》《STM32网络之MII和RMII接口》,介绍了STM32以太网和外部PHY的所有接口。如果有同学对SMI,MII和RMII接口不熟悉,建议看一下上面提到的两篇文章,不然可能看不太懂下文。区域1:我们称为SMI接口,用于配置外部PHY芯片。区域2:是数据交换接口,也就是上面我们说的MII接口和RMII接原创 2021-01-22 17:44:19 · 10823 阅读 · 0 评论 -
STM32网络之MII和RMII接口
在上篇文章《STM32网络之SMI接口》中,我们介绍了STM32网络控制器的SMI接口,SMI接口主要是用于和外部PHY芯片通信,配置PHY寄存器用的。真正网络通信的数据流并不是通过SMI接口传输的,是通过MII接口或者RMII通信的。1、MII接口介质独立接口(MII)定义了10 Mbit/s和100 Mbit/s的数据传输速率下MAC子层与PHY之间的互连。管脚定义介绍: MII_TX_CLK:连续时钟信号。该信号提供进行TX数据传输时的参考时序。标称频率为:速率...原创 2021-01-21 09:52:00 · 27013 阅读 · 2 评论 -
STM32网络之SMI接口
目录01、以太网简介02、STM32F207的ETH介绍03、SMI接口3.1、站管理接口:SMI3.2、SMI帧结构3.3、SMI写操作3.4、SMI读操作3.5、SMI时钟选择04、代码01、以太网简介STM32F20X和STM32F21的以太网外设可接受和发送数据按照IEE802.3-2002标准。以太网提供一个完整的、灵活的外设去满足不同应用和要求。它支持与外部相连(PHY)的两个标准的工业接口:默认情况使用在IEEE802.3规范中定义的独立介质接口原创 2021-01-20 09:13:44 · 13004 阅读 · 0 评论 -
我是如何使用wireshark软件的
目录1、简介2、Wireshark窗口3、Wireshark显示过滤4、过滤表达式的规则5、封包详细信息6、自动保存7、Wireshark的统计功能1、简介这篇文章介绍一个好用的抓包工具Wireshark,用来获取网络数据封包,包括HTTP、TCP、UDP等网络协议包。开始界面wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。直接双击上面的某个网卡即可。2、Wireshark窗口Wireshark..原创 2021-01-15 10:21:08 · 9072 阅读 · 0 评论 -
谈谈DHCP协议
目录01、DHCP协议简介02、DHCP工作原理03、Wireshark抓包分析04、DHCP缺点01、DHCP协议简介DHCP(DynamicHost ConfigurationProtocol),动态主机配置协议,是一个应用层协议,具体可以参考《TCP/IP四层模型》文章。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。DHCP的几个概念:DHCPClient:DHCP客户端,通过DHCP协原创 2021-01-12 13:04:42 · 2189 阅读 · 0 评论 -
TCP VS UDP
目录01、简介02、各自的特点03、TCP和UDP的区别04、TCP的应用05、UDP的应用06、总结1、简介简述TCP的工作流程:在三次握手的帮助下建立了TCP连接。这是一个启动和确认连接的过程。建立连接后,数据传输开始,传输过程完成后,通过四次挥手关闭已建立的连接。关于TCP的内容请看之前的文章《TCP协议详解》。简述UDP的工作流程:UDP使用简单的传输方法,无需进行握手对话即可进行通信。UDP还假定错误检查和更正在应用程序中并不重要,UDP提供数据完.原创 2021-01-08 09:08:09 · 1927 阅读 · 0 评论 -
我是如何查找RFC官方资料的
目录01、关于TCP协议头中保留位02、Wireshark工具03、RFC官方协议下载01、关于TCP协议头中保留位读者疑问:部分读者对上一篇《TCP协议详解》中的保留字节和标志位有疑问。关于这一点,详细说下,大部分同学看过1999年译的《TCP/IP详解卷1:协议》,这本书中TCP部分保留位为6位,如下:TCP/IP详解卷-第一版-此书里面明确讲解了,TCP协议头有6个保留字节。这本书讲的没有错,因为在TCP标准文档(RFC793)中也是这样原创 2021-01-05 10:41:19 · 4103 阅读 · 0 评论 -
1万字30张图说清TCP协议
目录01、简介02、TCP协议头03、TCP数据包的编号(SEQ)04、三次握手建立连接05、四次挥手断开连接06、TCP可靠性的保证07、滑动窗口技术08、窗口滑动的数据重发09、TCP流控制10、网线“断”了怎么办01、简介TCP(Transmission Control Protocol传输控制协议)是一种基于IP的传输层协议,TCP协议面向连接、正面确认与重传、缓冲机制、流量控制、差错控制、拥塞控制,可保证高可靠性(数据无丢失、数据无失序、数据无错误.原创 2021-01-04 09:12:47 · 7782 阅读 · 0 评论 -
UDP协议详解
目录1、简介2、UDP协议3、端口4、UDP和ARP之间的交互5、UDP适用场景6、UDP洪水1、简介UDP(UserDatagramProtocol)是一个简单的面向消息的传输层协议,尽管UDP提供标头和有效负载的完整性验证(通过校验和),但它不保证向上层协议提供消息传递,并且UDP层在发送后不会保留UDP 消息的状态。因此,UDP有时被称为不可靠的数据报协议。如果需要传输可靠性,则必须在用户应用程序中实现。UDP使用具有最小协议机制的简单无连接通信模型。UDP提供数据原创 2020-12-25 14:39:47 · 17610 阅读 · 1 评论 -
互联网医生-ICMP协议
目录01、简介02、协议结构03、差错报文3.1、目的站不可到达3.2、数据报超时04、查询报文4.1、ping4.2、Traceroute05、ICMP洪水1、简介在《IP协议详解》入门文章中,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是网际报文控制协议(InternetControl Message ProtocoL,ICMP )。首先说明,ICMP只是保证数据被送达的一个原创 2020-12-09 10:18:11 · 4294 阅读 · 0 评论 -
TCP/IP协议簇中ARP协议
目录1、ARP协议简介2、ARP协议结构3、wireshark抓包分析4、ARP协议分类5、ARP协议应用6、ARP攻击1、ARP协议简介在《IP协议》中我们讲解了IP地址相关内容,IP协议中包含了目的IP地址和源IP地址,但是当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据报中的目的IP地址。还记得数据链路层的以太网的协议中,每一个数据包都有一个MAC地址头么?我们知道每一块以太网卡原创 2020-12-03 09:39:54 · 4052 阅读 · 0 评论 -
5000字“肝”了这篇IP协议
目录01、IP地址1.1、简介1.2、IP地址的组成1.3、IP地址分类1.4、特殊IP地址1.5、子网掩码02、IP数据包组成03、IP分片解析04、IP分片攻击之前的文章《以太网数据包结构》可以看出图表示IP协议的数据结构IP协议(Internet Protocol)又称之为网际协议,IP协议处于IP层工作,它是整个TCP/IP协议栈的核心协议之一,上层协议都要依赖IP协议提供的服务,IP协议负责将数据报从源主机发送到目标主机,通过IP地址作为唯一识别码。原创 2020-11-30 09:02:29 · 19687 阅读 · 11 评论 -
lwip-1.4.1文档sys_arch翻译
欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转sys_arch interface for lwIP 0.6++lwIP 0.6++ 的 sys_arch 接口Author: Adam Dunkels作者:Adam DunkelsThe operating system emulation layer provides a common interfacebetween the lw...原创 2018-04-14 11:08:23 · 4956 阅读 · 0 评论 -
LWIP源代码文件目录解析
欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转doc文件夹结构contrib.txtFILESrawapi.txt告诉读者怎样使用协议栈的Raw/Callback API进行编程,因为Raw/Callback API是协议栈提供的三种编程接口中最复杂的一种,它直接与协议栈内核函数交互以实现编程savannah.txtsnmp_agent.txtsys_arch.txt包括移植说...原创 2018-04-07 12:37:35 · 5953 阅读 · 0 评论 -
STM32使用LWIP库新建tcp_sever
欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转main函数区域1是lwip的初始化void LwIP_Init(void){ struct ip_addr ipaddr; struct ip_addr netmask; struct ip_addr gw; mem_init();//内存堆初始化 memp_init();//内存池初始化 IP4_ADDR(...原创 2018-04-07 12:37:20 · 28122 阅读 · 0 评论 -
STM32移植LWIP
本文使用的是STM32F207VCT6平台,MII接口的RTL8201EL网络芯片,LWIP版本是1.4.1基础工程是:已经实现了10ms定时,led灯1s闪烁,还有串口打印欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转本文使用的IDE是IAR7.2,考虑到很多很使用Keil,本文末尾也有keil版本的说明添加以太网驱动库添加进工程,增加新库的头文件路径将LWIP源码放入目录中我们把s...原创 2018-04-06 11:56:50 · 80424 阅读 · 1 评论 -
RTL8201EL介绍
欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转1、基础问题1.1、芯片数据接口支持MII接口,RMII接口,SNI接口。选择MII接口,把COL/SNI脚拉低1.2、芯片地址MCU如何选择PHY芯片的地址,参看芯片的SMI接口RTL8201的PHY地址经过两个管脚配置的在这里我们看出,这两个管脚和LED灯的管脚是复用的为了减少RTL8201EL的引脚数,LED引脚和PHY地址引脚复用。...原创 2018-04-06 12:02:21 · 12157 阅读 · 3 评论 -
LWIP综述
欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转1、使用raw/callback API编程,用户编程的方法是向内核注册各种自定义的回调函数,回调函数是与内核实现交换的唯一方式。recv_udp, accept_function, sent_tcp, recv_tcp, do_connected, poll_tcp, err_tcp!2、协议栈API(sequential API)是基于...原创 2018-04-06 12:02:35 · 3759 阅读 · 0 评论 -
LWIP的TCP相关API
欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转1、tcp_arg() 该函数用于传递给应用程序的具体状态,在控制块标志建立以后调用,即在函数tcp_new()调用之后才能调用功能指定应该传递给所有回调函数的应用程序的具体状态原型void tcp_arg(struct tcp_pcb *pcb, void *arg)参数pcb: 当前TCP连接的控制块arg: 需要传递给回调...原创 2018-04-06 12:02:50 · 21002 阅读 · 0 评论 -
LWIP的UDP相关API
欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转1、udp_new() 该函数用于建立一个用于UDP通信的UDP控制块(pcb),但是这个pcb并没有被激活,除非该pcb已经被绑定到一个本地地址上或者连接到一个固定地址的远程主机。在定义一个udp_pcb控制块后该函数应该首先被调用,以建立该控制块的连接标志功能建立一个用于UDP通信的UDP控制块(pcb)原型struct udp...原创 2018-04-06 12:03:12 · 17242 阅读 · 0 评论 -
lwip的内存管理
欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转1、内存池 LWIP中的内存池(POOL)分配策略简单,但是内存的分配、释放效率高,可以有效的防止内存碎片的产生。在内存的策略下用户只能申请固定大小的空间,内存池方法主要用于LWIP内核中固定数据结构的分配,比如UDP控制块,TCP控制块等。LWIP内核在初始化的时候已经为每个数据结构类型都初始化了一定数量的POOL,文件memp...原创 2018-04-06 12:03:27 · 6301 阅读 · 1 评论 -
LWIP的数据包管理
欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转1、数据包结构-pbuf1.1、pbuf结构 LWIP是TCP/IP协议栈的一种具体实现,本质就是对数据包的处理,在LWIP中使用一个被称为pbuf的结构管理数据包,LWIP源码中的pbuf.c和pbuf.h这两个文件就是关于pbuf的,pbuf结构如下:在pbuf.h文件中1.2、tot_len说一下tot_len的讲解大家最好理解...原创 2018-04-06 12:03:46 · 6126 阅读 · 0 评论 -
LWIP的网络接口
欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转1、网络接口结构1.1、网络接口简介 TCP/IP参考模型中网络分为4层:应用层、传输层、网络层和网络接口层。网络接口层就对应着我们实际的网卡,LWIP支持多网口设计,LWIP中使用netif来描述每种网络接口的特性,如接口的IP地址、接口状态等等。那么如果有多个网卡的话LWIP是如何来组织这些网卡呢?在LWIP中用链表neti...原创 2018-04-06 12:03:59 · 7998 阅读 · 0 评论 -
lwip-1.4.1文档rawapi中文翻译
Raw TCP/IP interface for lwIPLwIP原始 TCP/IP接口如果您想要了解相关内容,可以点击跳转本文所在的系列的检索目录,点击跳转Authors: Adam Dunkels, Leon Woestenberg, Christiaan SimonslwIP provides three Application Program's Interfaces (APIs) fo...原创 2017-12-24 15:31:52 · 2992 阅读 · 0 评论 -
TCP和UDP服务器性能测试工具
TCP和UDP服务器性能测试工具本文涉及工具不是本人开发,在网上免费下载的工具在编写一个网络服务的时候都比较关心这个服务能达到多少并发连接,而在这连接的基础上又能达到一个怎样的交互能力.编写服务已经是一件很花力气的事情,而还要去编写一个能够体现结果的测试工具就更加消耗工作时间.下面介绍一个测试工具只需要简单地设置一下就能对tcp/udp服务进行高并发和高吐吞的性能测试,并通过图形化的方式反映...原创 2018-01-03 18:01:47 · 22732 阅读 · 1 评论 -
以太网头数据和802.3的区别
如果您想要了解相关内容,可以点击跳转本文所在的系列的检索目录,点击跳转网络数据分两种:IEEE 802.2/802.3(RFC 1042)和以太网的封装格式(RFC 894)我们这里只讲以太网的封装格式(RFC 894)以太网头三部分组成 :源MAC Address | 目的 MAC Address | 所使用的协议.特别说明:上面的目的地址和源地址是MAC,不是IP!!!!长度/类型有两个意义...原创 2018-02-28 15:09:45 · 5522 阅读 · 0 评论 -
以太网数据包架构
以太网数据包架构如果您想要了解相关内容,可以点击跳转本文所在的系列的检索目录,点击跳转 互连网早期的时候,主机间的互连使用的是NCP协议。这种协议本身有很多缺陷,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能。为了改善这种缺点,大牛弄出了TCP/IP协议。现在几乎所有的操作系统都实现了TCP/IP协议栈。TCP/IP不是一个单一协议,而是一个协议族的统称。里面包括了IP协议,IMC...原创 2018-02-28 14:40:04 · 7075 阅读 · 2 评论