lwIP是一个小型开源的TCP/IP协议栈(阉割的TCP/IP协议)
lwIP适用于:云台接入、无线网关、远程模块、工控控制器、嵌入式NAT无线路由器、网络摄像头………


目录

  • 一、TCP/IP协议栈
    • 1. TCP/IP协议栈结构体
    • 2. TCP/IP协议栈的数据封装与解封装
  • 二、lwIP结构
  • 三、MAC简介
    • 1. MAC内核的特性:
    • 2. ST的ETH框架
      • 2.1 SMI站管理接口
        • 2.1.1 SMI帧格式
      • 2.2 介质接口MII、RMII
        • 2.2.1 MII、RMII比较
        • 2.2.2 MII、RMII引脚
        • 2.2.3 MII、RMII参考时钟
        • 2.2.4 MII、RMII介质接口收发位宽
  • 四、PHY简介
    • 1. LAN8720A与YT8512C
    • 2. PHY地址的设置
      • 2.1 LAN8720A的PHY地址设置
      • 2.2 YT8512C的PHY地址设置
    • 3. RMII模式选择
      • 3.1 RMII模式设置(LAN8720A)
      • 3.2 RMII模式设置(YT8512C)
    • 4. PHY寄存器
      • 4.1 特殊功能寄存器
        • 4.1.1 LAN8720A特殊功能寄存器
        • 4.1.2 YT8512C特殊功能寄存器
    • 5. 选择PHY芯片

一、TCP/IP协议栈

1. TCP/IP协议栈结构体

2. TCP/IP协议栈的数据封装与解封装

封装:数据添加各层协议的首部;解封装:在各层间除去自层的首部

二、lwIP结构

三、MAC简介

1. MAC内核的特性:

 ① 传输速率:支持外部PHY接口实现10/100Mbit/s数据传输速率

 ② 协议标准:符合IEEE802.3/3u的MII和RMII接口与快速以太网PHY通信

 ③ 工作模式:支持全双工和半双工操作

 ④ 站管理接口:支持通过MDIO接口配置和管理PHY设备

 ⑤ 其他特性

2. ST的ETH框架

STM32自带有10/100Mbit/s的以太网MAC内核,它提供地址及媒体访问的控制方式

2.1 SMI站管理接口

允许应用程序通过时钟线和数据线访问任意PHY寄存器,最多支持32个PHY访问

● MDC:周期时钟引脚(最大频率为:2.5MHz)

● MDIO:数据输入/输出比特流

2.1.1 SMI帧格式


● PADDR:PHY地址(00_1F)

● RADDR:寄存器地址(00_1F)

● 数据位:16位数据位(PHY寄存器都是16位的)

2.2 介质接口MII、RMII

用于MAC与外接的PHY互联,支持10/100Mbit/s数据传输模式

2.2.1 MII、RMII比较

● 相同的特性:

​  ① 支持外部PHY接口实现10/100Mbit/s数据传输速率

​  ② 符合IEEE802.3协议标准

● 不同的特性:

​  ① 引脚数量

​  ② 参考时钟

​  ③ 发送的位宽

2.2.2 MII、RMII引脚


● 介质MII接口所需要引脚数量为16个,而RMII接口所需要的引脚数量为9个

● MII介质接口的TX_CLK和RX_CLK由PHY芯片提供,它们会让MAC内核以这个时钟采集收发数据

● RMII介质接口的REF_CLK, MAC内核以这个时钟采集收发数据

注意:RX_ER和RX_DV是用来检测以太网帧是否有效性,而CRS和COL以及CRS_DV在全双工模式下无效

2.2.3 MII、RMII参考时钟


● 介质MII的参考时钟来源有两个:MCO输出25MHz以及外部晶振输出25MHz

● 介质RMII的参考时钟来源有两个:MCO经过倍频PLL输出50MHz以及外部晶振输出50MHz(必须同时提供PHY和MAC)

注意:MII接口中的TX_CLK和RX_CLK时钟是根据数据传输速率挂钩,10Mbit/s:2.5MHz;100Mbit/s:25MHz

2.2.4 MII、RMII介质接口收发位宽

介质MII接口一个周期收发位宽为4位数据,而接口一个周期RMII收发位宽为2位数据

四、PHY简介

从硬件上来说,一般的PHY芯片为模数混合电路,负责接收电、光这类模拟信号,经过解调和A/D转换后通过MII/RMII接口将信号交给MAC内核处理。

1. LAN8720A与YT8512C

它们都是低功耗的10/100M以太网PHY层芯片,支持MII以及RMII接口与以太网MAC层通信。
支持Auto MDIX自动翻转功能,无需更换网线即可将连接更改为直连或交叉连接。

主要特性:

 ① 自动翻转:支持Auto MDIX自动翻转功能,例如:对等线与交叉线连接。

 ② 多种接口:支持MII和RMII介质访问接口。

 ③ 传输速率:支持10/100Mbit/s的传输速率。

 ④ 低功耗:支持低功耗运行。

2. PHY地址的设置

过PHY地址访问指定的PHY芯片,简称:PHY芯片的标识。

2.1 LAN8720A的PHY地址设置



PHYAD0默认的引脚为低电平,所以PHY地址为0x00

2.2 YT8512C的PHY地址设置


3. RMII模式选择

LAN8720A和YT8512C在RMII介质接口下延伸出两个连接方式。

3.1 RMII模式设置(LAN8720A)

这两种模式是由PHY的2号引脚电平决定,为0:Out模式(REF_CLK输出时钟),为1:In模式(中断)

3.2 RMII模式设置(YT8512C)

这两种模式是由PHY的8和12号引脚电平决定,如果8号引脚拉高以及12号引脚拉低,则硬件电路选择RMII2模式。

4. PHY寄存器

LAN8720A和YT8512C都具有32个寄存器,每一个寄存器都是16位


● 前16个寄存器用于配置PHY,而后16个寄存器是使用判断网络参数的(双工、网速)

● 因为前16个寄存器都是类似的,所以ST已经把主要框架搭建好了,用户只负责设置双工和网速参数即可

4.1 特殊功能寄存器

通过确认网速及双工模式来设置BCR寄存器的bit8和bit13

/* stm32f4/f7/h7xx_hal_conf.h */
#define PHY_SR            ((uint16_t)0x0010)        /*!< PHY status register Offset */
#define PHY_SPEED_STATUS  ((uint16_t)0x0002)        /*!< PHY Speed mask */
#define PHY_DUPLEX_STATUS ((uint16_t)0x0004)        /*!< PHY Duplex mask */

每一个PHY的特殊功能寄存器都不一样,需要根据相关的手册来确定

4.1.1 LAN8720A特殊功能寄存器

4.1.2 YT8512C特殊功能寄存器

5. 选择PHY芯片

【lwIP(第一章)】lwIP入门相关推荐

  1. Android项目驱动式开发教程 第2版,《Android项目驱动式开发教程》第一章开发入门.ppt...

    <Android项目驱动式开发教程>第一章开发入门 1.4 项目框架分析 4 android:versionName="1.0" > 5 8 第9行代码andro ...

  2. Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门

    本章将涵盖以下话题: ž  MyBatis是什么? ž  为什么选择MyBatis? ž  MyBatis安装配置 ž  域模型样例 1.1 MyBatis是什么 MyBatis是一个简化和实现了Ja ...

  3. 【Nginx】第一章 快速入门

    第一章 快速入门 文章目录 第一章 快速入门 一.介绍 1.引入 2.什么是 Nginx 3.Nginx 作用 二.Windows 下使用 1.启动 Nginx 2.配置监听 3.关闭 nginx 三 ...

  4. 【MyBatis-Plus】第一章 快速入门

    第一章 快速入门 文章目录 第一章 快速入门 一.介绍 1.概述 2.特性 二.入门案例 1.安装插件 2.准备工作 3.MyBatis-Puls 替换 MyBatis 4.修改 StudentDao ...

  5. 【MyBatis】第一章 快速入门

    第一章 快速入门 文章目录 第一章 快速入门 一.介绍 1.使用 JDBC 的缺陷 2.MyBatis 框架解决的主要问题 二.入门案例 1.准备数据库 2.创建实体类 3.创建持久层 DAO 接口 ...

  6. 第一章 程序设计入门--算法竞赛入门经典

    第一章 程序设计入门–算法竞赛入门经典 知识点一: int m=25; printf("%d\n",m); printf("%03d\n",m); 输出如下: ...

  7. 基于《java2实用教程》的java知识点复习整理【第一章——java入门】

    第一章--java入门 一.知识结构框架 二.知识点详解 1.java特点:编写一次,随处运行 简单 Java要比C++简单,C++中许多容易混淆的概念,被Java弃之不用了,或者以一种更清楚更容易理 ...

  8. 《从0到1:CTFer成长之路》 [第一章 web入门] 常见的搜集

    <从0到1:CTFer成长之路> [第一章 web入门] 常见的搜集 启动环境: 提示为敏感文件,首先对网站目录进行扫描: 得到如上页面,首先访问robots.txt页面: 得到flag1 ...

  9. 第一章_Android入门

    第一章_Android入门 1.Android开发环境的搭建 安卓的开发环境有两种 1)Android Studio 优点:是专业的安卓开发软件.缺点:电脑要求的配置很高,对于初学者,可能你要一直在调 ...

  10. Java 学习笔记:第一章 Java入门

    Java 学习笔记:第一章 Java入门 1.1 计算机语言发展史以及未来方向 1.2 常见编程语言介绍 C语言 C++ 语言 Java语言 PHP 语言 Object-C和Swift 语言 Java ...

最新文章

  1. 比较v-bind和v-model
  2. BZOJ.4160.[NEERC2009]Exclusive Access 2(状压DP Dilworth定理)
  3. Leetcode题解(20)
  4. 对象属性的调用_面向对象的三主线之一:Java类及类的成员(1)
  5. 自定义键盘keyfere——pcsensor
  6. 数据库-优化-从慢查询日志中分析索引使用情况及pt-find
  7. 用pandas填充时间序列缺失值
  8. nssl1148,jzoj5461-购物【可撤回贪心,堆】
  9. 1-3 Sass 语法、编译、调试
  10. Ural_1586. Threeprime Numbers (DP)
  11. 「leetcode」530. 二叉搜索树的最小绝对差:【有序数组】详解
  12. 推荐十款很好用的HTML工具编写软件
  13. 办理美国商务和旅游签证(B1 B2)和面签的奥秘
  14. markdown编辑器Typora的使用方法(保姆级教程)
  15. 蓝屏总结(二)——系统蓝屏及转储方法
  16. 如何清理 C 盘空间
  17. SPSS Modeler 18.0 基本介绍
  18. 【CodeForces】【状压DP】1155F-Delivery Oligopoly
  19. 为什么中国的房价降不下来?
  20. 通过QQ号获取QQ头像、昵称

热门文章

  1. 阿里云服务器vgn6i配置NVIDIA CUDA+cuDNN
  2. Centos篇-Centos Minimal安装
  3. FFMPEG 抓取virtual-audio-capturer 数据
  4. 蒟蒻重返c++,学海拾贝(二)
  5. 网络设计与网络设备配置,网络设计需要哪些设备
  6. 如何在jsp里面写java代码
  7. Python负数除法取余操作
  8. 常用加密与解密算法示例代码
  9. java的三种技术架构
  10. hdu5761 Rower Bo(物理题or瞎猜)