注意:学习路径
1.如果想要深入了解,学习LWIP的ARM API(对底层操作)
2.如果想要快速开发,学习LWIP的Socket API(针对操作系统)
一。LWIP协议栈
(1)LWIP应用场景
上述是以太网DTU,通过这个器件可以很快捷的把数据传递到以太网上,即DTU就是硬件与以太网传递的中介。大多通信方式都支持,比如I2C,SPI。下面是DTU的一些介绍。
上述为ESP8266,因为ESP8266模块是一款高性能的WIFI串口模块,可以不用知道太多WIFI相关知识就可以很好的上手。说白了,只是个WIFI转串口的设备,你只要知道串口怎么编程使用,就可以了,实现了所谓的透明传输。
(2)LWIP协议介绍
LWIP是轻量级的IP协议,重点是在保存TCP协议的主要功能上减少对RAM的占用,这使得LWIP协议非常适合在小型嵌入式系统中使用。
(3)LWIP编程接口
上述是LWIP在各层提供的接口,IP的模型是适用于LWIP。
LWIP的编程接口
RAW API:
1.是给底层设置的API,不需要操作系统即可以实现;
2.具体操作的是Pcb(控制块,一个结构体);
3.具体使用方式是写回调函数(例如以前的中断回调函数);
4.应用场景:低容量设备,无RTOS操作系统,控制权大多在开发者;
5.特点:代码量大,占用空间少。
Netconn/Socket API:
1.Socket网络变成,就是提供在操作系统的帮助下的网络API;
2.具体操作的是Socket(操作系统的Socket);
3.具体使用方式是Linux与Windows的Socket的API;
4.应用场景:大容量设备,有操作系统;
5.特点:代码量少,占用空间多。
具体比较:
(4)LWIP硬件接口
由上述图可知,网卡是通过链表来一一连接的。每个接口都需要4部分:
1.IP 信息;2.硬件信息;3.驱动函数;4.选项配置
(1)IP信息:
使用IP时,需要三要素,IP地址、子网掩码、网关。
配置IP地址,三种方式,static ip(本身的静态ip);DHCP租用一个IP;Auto IP(自动的ip)
(2)Hardware info:
MTU:数据帧最大1500byte
MAC 地址:硬件的身份证
Flags:以下就是Flags,就是把信息封装一下,方便设置
3.Driver Function(驱动函数)
input,linkoutput,link_callback
二。以太网外设编程
1.编程流程
原理图分析,PHY手册分析,以太网与外设分析,Lwip配置
(1)原理图分析,RMII分析
RMII原理图在核心板原理图上。通过看实体板子,发现网口接口在左下角,所以在原理图的左下角寻找即可。
(2)PHY手册分析
(3)以太网与外设分析
(4)LWIP配置
三。创建工程
实验:使用网络LWIP与电脑相连,并且可以用ping命令通过
1.Cubemx创建工程
(1)操作系统的时钟配置
(2)配置ETH
注意:根据底板原理图,不是核心板原理图
(3)配置USART1串口,配置为异步通信
注意:配置结束后把时钟配置一下,但是这里会有一个弹窗,会自动配置好时钟
不需要使用HSE外部高频时钟
(4)ETH继续配置
问题:
解决:使用较新的Cubemx即可
初始值0x10,速度0x0002,Duplex0x0004
(5)接下来配置LWIP
DHCP分配IP地址首先不用
2.步骤
(1)fputc重定位,使串口可以打印输出
(2)使用LWIP.c中的process函数。
MX_LWIP_Process();
3.配置网络
思想:
使用的stm32没有使用DHCP来分配IP地址,是自己写的IP地址与网络ip,所以我们需要在电脑上也配置一下IP地址。
(1)查看stm32配置的ip
(2)在电脑上配置ip
(1)stm32的网线与电脑连接,电脑上会出现以下内容。
(2)点击进入设置,选择更改配置
(3)选择这个未识别的网络
(4)右键,属性,进入IPv4
(5)IP地址的配置
(3)尝试ping单片机的网络
1. win+R后输入cmd进入控制台。
2. 使用ipconfig /all查看网络《windows下查ip为ipconfig,不是ifconfig》
3.ping单片机的网络,成功
四。RAW API编程模型
1.TCP建立连接
2.TCP接受数据
3.TCP发送数据
4.TCP关闭连接
五。实验:TCP回响服务器的实现
1.实验分析
(1)移植tcp_echoserver.c文件
(2)main.c添加tcp_enchosever_init
(3)编译烧写
(4)使用NC命令进行连接
(5)发送任意数据等待回响
(1)移植tcp_echoserver.c文件
移植的代码在cubemx工程的目录中,移植到自己的文件中即可
找到TCP的服务文件后,移植.h与.c文件。
复制到自己创建的工程目录下。
//上方声明外部函数
extern void tcp_echoserver_init(void);
//下方init初始化
tcp_echoserver_init();
结果:
ping可以通过,nc 192.168.1.10 7可以有回响的功能。(7是端口号,在tcp_echoserver_init()函数中可以找到配置)文章来源:https://www.toymoban.com/news/detail-642943.html
文章来源地址https://www.toymoban.com/news/detail-642943.html
到了这里,关于2.物联网LWIP网络的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!