STM32F4_网络通信(网口)

前言

        STM32F4开发板上自带了网口。可以通过开发板自带的网口和LWIP实现:TCP服务器、TCP客服端、UDP以及WEB服务器等四个功能。

1. STM32 以太网简介

        STM32F4 芯片自带以太网模块,该模块包括带有专用 DMA 控制器的 MAC 802.3(介质访问控制)控制器,支持介质独立接口(MII)和简化介质独立接口(RMII),并自带了一个用于外部PHY通信的SMI接口,通过一组配置寄存器,用户可以为 MAC 控制器和 DMA 控制器选择所需的模式和功能。

        STM32F4必须外接PHY芯片,才可以完成以太网通信,外部PHY芯片可以通过 MII/RMII 接口与STM32F4 内部MAC连接,并且支持 SMI (MDIO&MDC)接口配置外部以太网PHY芯片。

SMI 接口:

        SMI 接口,即站管理接口,该接口允许应用程序通过2条线时钟(MDC)和数据线(MDIO)访问任意 PHY寄存器,访问任意PHY寄存器。该接口支持访问多达32个PHY,应用程序可以从32个PHY中选择一个PHY,然后从任意PHY包含的32个寄存器中选择一个寄存器,发送控制数据和接收状态信息。任意给定时间内只能对一个PHY中的一个寄存器进行寻址。

        MII 接口,即介质独立接口,用于 MAC层 与 PHY层 进行数据传输。

MII_TX_CLK:连续时钟信号。该信号提供进行TX 数据传输时的参考时序。标称频率为:速率为 10 Mbit/s 时为2.5 Mhz;速率为 100 Mbit/s 时为25 Mhz。

MII_RX_CLK:连续时钟信号。该信号提供进行RX 数据传输时的参考时序。

MII_TX_EN:发送使能信号。

MII_TXD[3:0]:数据发送信号。该信号是4个一组的数据信号。

MII_CRS:载波侦听信号。

MII_COL:冲突检测信号。

MII_RXD[3:0]:数据接收信号。

MII_RX_DV:接收数据有效信号。

MII_RX_ER:接收错误信号

RMII 接口:

        RMII 接口,即精简介质独立接口,该接口降低了在10/100 Mbits/s 下微控制器以太网外设与外部PHY 间的引脚数。根据 IEEE 802.3u 标准,MII 包括16 个数据和控制信号的引脚。RMII 规范将引脚数减少为7个。

什么是PHY?

        物理层芯片称为PHY、数据链路层芯片称为MACPHY的作用就是将差分信号转换为数字信号(PHY数据是穿过网络接口的差分信号)。

LAN8720A 是低功耗的 10/100M以太网PHY层芯片,I/O 引脚电压符合 IEEE802.3-2005 标准,支持通过RMII 接口与以太网MAC 层通信。

2. TCP/IP LWIP简介

2.1 TCP/IP简介

        TCP/IP 中文名为传输控制协议/因特网互联协议,又称为网络通讯协议,是Internet最基本的协议,也是Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP定义了电子设备如何连入因特网,以及数据如何在他们之间传输的标准。

        该协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。简单来说就是,TCP 负责发展传输的问题,一旦有问题就发出信号,要求重新传输,直到所有数据都安全正确的传输到目的地。IP是给因特网的每一台联网设备规定一个地址。

        TCP/IP 协议不是TCP和IP这两个的协议的合称,而是指因特网整个 TCP/IP 协议族。从协议分层模型方面来讲,TCP/IP 由四个层次组成:网络接口层、网络层、传输层、应用层

        OSI模型将 TCP/IP 分为七层物理层、数据链路层(网络接口层)、网络层(网络层)、传输层(传输层)、会话层、表示层和应用层(应用层)

        在本节中:PHY层芯片LAN8720A相当于物理层,STM32F407自带的MAC层相当于数据链路层,LWIP提供的就是网络层、传输层的功能,应用层是需要用户自己根据自己想要的功能去实现的。

2.2 LWIP简介

        LWIP 是瑞典计算机科学院开发的一个小型开源的TCP/IP 协议栈,是TCP/IP的一种实现方式。LWIP是轻量级IP协议,有无操作系统的支持都可以运行,LWIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用,它只需十几 KB 的 RAM 和 40K左右的ROM就可以运行,这使 LWIP 协议栈适合在低端的嵌入式系统中使用。

LWIP 的主要特性如下:

  •         ARP协议,以太网地址解析协议;
  •         IP协议,包括 IPv4 和 IPv6 ,支持 IP 分片与重装,支持多网络接口下数据转发;
  •         ICMP 协议,用于网络调试与维护;
  •         IGMP 协议,用于网络组管理,可以实现多播数据的接收;
  •         UDP 协议,用户数据报协议;
  •         TCP 协议,支持 TCP 拥塞控制,RTT 估计,快速恢复与重传等;
  •         提供三种用户编程接口方式:raw/callback API、sequential API、BSD-style socket API;
  •         DNS,域名解析;
  •         SNMP,简单网络管理协议;
  •         DHCP,动态主机配置协议;
  •         AUTOIP,IP地址自动配置;
  •         PPP,点对点协议,支持PPPoE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/167071.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机算法分析与设计(12)---贪心算法(最优装载问题和哈夫曼编码问题)

文章目录 一、最优装载问题1.1 问题表述1.2 代码编写 二、哈夫曼编码2.1 哈夫曼编码概述2.2 前缀码2.3 问题描述2.4 代码思路2.5 代码编写 一、最优装载问题 1.1 问题表述 1. 有一批集装箱要装上一艘载重量为 c c c 的轮船,已知集装箱 i ( 1 ≤ i ≤ n ) i(1≤i≤…

【Matlab】三维绘图函数汇总

本文用于汇总 Matlab 中的三维绘图函数。plot3() 函数用于绘制用参数方程表示的三维曲线。ezplot3() 函数用于三维曲线的符号绘图,需要用参数方程表示。mesh() 函数用于绘制三维曲面网格。surf() 函数用于绘制三维空间曲面。 目录 1. plot3() 2. ezplot3() 3. me…

R文件详细介绍、瘦身方案和原理

文章目录 1. 背景2. R文件介绍2.1 R文件概念2.1.1 标识符是怎么与资源联系起来的? 2.2 R文件内容2.3 library module和aar的R文件内容生成规则2.4 是谁生成的R文件?2.5 打包之后的R文件2.6 R文件为啥大?这么多? 3. 为什么R文件可以…

【Objective-C】浅析Block及其捕获机制

目录 Block的基本使用Block的声明Block的实现Block的调用 Block作为形参使用Block作为属性使用给Block起别名Block的copy Block的捕获机制auto类型的局部变量__block浅析static类型的局部变量全局变量 其他问题 Block的基本使用 什么是Block? Block (块…

2.2.C++项目:网络版五子棋对战之数据管理模块的设计

文章目录 一、数据管理模块实现(一)功能 二、设计(一)数据库设计(二)创建user_table类 一、数据管理模块实现 (一)功能 数据管理模块主要负责对于数据库中数据进行统一的增删改查管…

【快速解决】在vs2022中配置SFML图形库

目录 SFML 图形库的安装步骤如下: 1.下载 SFML 在 SFML 的官网(下载对应操作系统版本的 SFML)。​编辑 2.解压文件 将下载的压缩包解压至任意位置,得到类似如下的目录结构: 3.配置 VS 打开 Visual Studio&#xff…

人工智能、机器学习、深度学习的区别

人工智能涵盖范围最广,它包含了机器学习;而机器学习是人工智能的重要研究内容,它又包含了深度学习。 人工智能(AI) 人工智能是一门以计算机科学为基础,融合了数学、神经学、心理学、控制学等多个科目的交…

深度学习_3_实战_房价预测

梯度 实战 代码: # %matplotlib inline import random import torch import matplotlib.pyplot as plt # from d21 import torch as d21def synthetic_data(w, b, num_examples):"""生成 Y XW b 噪声。"""X torch.normal(0,…

Java EE-servlet API 三种主要的类

上述的代码如下: import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.i…

使用CMake构建一个简单的C++项目

文章目录 一. 构建一个简单的项目二. 构建过程1. 创建程序源文件2. 编写CMakeList.txt文件3. 构建项目并编译源代码 附件 一. 构建一个简单的项目 最基本的CMake项目是从单个源代码文件构建的可执行文件。对于像这样的简单项目,只需要一个包含三个命令的CMakeLists…

查看当前cmake版本支持哪些版本的Visual Studio

不同版本的的cmake对Visual Studio的版本支持不同,以下图示展示了如何查看当前安装的cmake支持哪些版本的Visual Studio。 1.打开cmake-gui 2.查看cmake支持哪些版本的Visual Studio

django基于Python的房价预测系统+爬虫+大屏可视化分析

欢迎大家点赞、收藏、关注、评论 文章目录 前言一、项目介绍二、开发环境三、功能需求分析1 数据采集功能设计2数据管理功能设计3爬虫功能需求分析4 数据可视化功能需求分析数据库表的设计 四、核心代码五、效果图六、文章目录 前言 房价是一个国家经济水平的重要体现&#xff…

正点原子嵌入式linux驱动开发——Linux并发与竞争

Linux是一个多任务操作系统,肯定会存在多个任务共同操作同一段内存或者设备的情况,多个任务甚至中断都能访问的资源叫做共享资源。在驱动开发中要注意对共享资源的保护,也就是要处理对共享资源的并发访问。在Linux驱动编写过程中对于并发控制…

2、Kafka 生产者

3.1 生产者消息发送流程 3.1.1 发送原理 在消息发送的过程中,涉及到了两个线程——main 线程和 Sender 线程。在 main 线程 中创建了一个双端队列 RecordAccumulator。main 线程将消息发送给 RecordAccumulator, Sender 线程不断从 RecordAccumulator 中…

为什么短信验证码要设置有效期?

安全性:验证码的主要目的是为了验证用户的身份,防止恶意或未经授权的访问。如果验证码没有有效期,恶意用户或攻击者可以获取验证码后无限期地尝试使用它。通过设置有效期,可以限制验证码的生命周期,提高系统的安全性。…

跳跃游戏Ⅱ-----题解报告

题目:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 与Ⅰ不同的是,这次要求找出最小的跳跃次数。思路也很简单,在每一次跳跃之后都更新最远的跳跃距离。 举个列子: 输入:2,3,1,1,4 第一次…

看我为了水作业速通C++!

和java不太一样的一样的标题打个*&#xff0c;方便对比 基本架构* #include<iostream> using namespace std; int main() { system("pause"); return 0; } 打印* cout << "需要打印的内容" <<endl endl 是一个特殊的输出流控…

【Java基础面试三十八】、请介绍Java的异常接口

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;请介绍Java的异常接口 …

JAVA高级教程-Java Map(6)

目录 6、Map的使用 6、Map的使用 package Map01;import java.util.HashMap; import java.util.Map; import java.util.Set;/*** Map接口的使用*/ public class Demo01_HashMap {public static void main(String[] args) {Map<String,String> mapnew HashMap<>();ma…

Hadoop3教程(三十一):(生产调优篇)异构存储

文章目录 &#xff08;157&#xff09;异构存储概述概述异构存储的shell操作 &#xff08;158&#xff09;异构存储案例实操参考文献 &#xff08;157&#xff09;异构存储概述 概述 异构存储&#xff0c;也叫做冷热数据分离。其中&#xff0c;经常使用的数据被叫做是热数据&…