stm32-以太网

TCP/IP详解html

一、互联网模型

     OSI模型和TCP/IP模型可参见:TCP/IP四层模型与OSI参考模型网络

    TCP/IP工做原理:TCP/IP详解学习笔记tcp


概念:学习

IP网络上每个节点都必须有一个独立的Internet地址(也叫作IP地址)。如今,一般使用的IP地址是一个32bit的数字,也就是咱们常说的IPv4标准,这32bit的数字分红四组,也就是常见的255.255.255.255的样式。IPv4标准上,地址被分为五类,咱们经常使用的是B类地址。具体的分类请参考其余文档。须要注意的是IP地址是网络号+主机号的组合,这很是重要。 IP协议是TCP/IP协议的核心,全部的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达之后的处理机制--这被认为是上层协议--TCP或UDP要作的事情。因此这也就出现了TCP是一个可靠的协议,而UDP就没有那么可靠的区别。ui

IP协议帧详见:IP协议帧格式spa

IP地址详见:详解IP地址  .net

关于路由器表原理:IP路由和路由表3d

这里注意IP协议帧和IP地址是两个不一样的概念,前者是对数据的封装,后者表明了地址(网络ID+主机ID),如何分离网络ID和主机ID则靠子网掩码来区分。code

ARP:地址解析协议,是用IP地址换MAC地址的一种协议。最特殊的状况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就能够了。至因而怎么直接传递的,这就要靠ARP协议了。htm

RARP:逆地址解析协议,在tcp/ip协议的后面章节会介绍它们(在局域网里面用ARP协议能够很容易的搞瘫痪网络哦)


网络数据封装

二、LAN8720芯片

开发板原理图部分:


电路原理图

LAN8720芯片有32个寄存器,前16个由IEEE820.3规定,后16个由厂家规定,下图的特殊功能寄存器就是由厂家规定:


特殊功能寄存器

  stm32官方库使用的不是LAN8720芯片,所以移植时候须要修改stm32f4XX_eth_conf.h:

#define PHY_SR                 ((uint16_t)0x1F) /* PHY status register Offset */
#define PHY_SPEED_STATUS       ((uint16_t)0x0004)/* PHY Speed mask */
#define PHY_DUPLEX_STATUS       ((uint16_t)0x0010)  /* PHY Duplex mask */

 PHY_SPEED_STATUS,PHY_DUPLEX_STATUS实际上是一个掩码,功能是取出特殊寄存器中4:2中的第2位和第4位,以肯定PHY芯片的工做模式和速率。

SMI帧管理:用以在一个时间对一个PHY的一个寄存器进行读写


RMII和MII介绍参见:RMII和MII接口区别  

显然,咱们的开发板用的是RMII精简接口。

嵌入式上移植的也通常都是LwIP(轻量级TCP/IP协议栈)