2.物联网LWIP网络

注意:学习路径

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函数。

yH5BAAAAAAALAAAAAAOAA4AAAIMhI+py+0Po5y02qsKADs=wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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()函数中可以找到配置

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值