ENC28J60 简介
单片机以太网方案
单片机想要使用以太网的话,通常有以下几种方案:
- 如果 MCU 内部集成 MAC 控制器,则只需外接一个 PHY 芯片就可以了
- 如果 MCU 内部没有 MAC 控制器,需要外接 MAC 芯片和 PHY 芯片,这两颗芯片可以分立也可以集成在一颗芯片中
以上两种方案,MAC + PHY 完成了 TCP/IP 五层模型的最低两层,即物理层和数据链路层。上面几层,如网络层、传输层、应用层则需要在 MCU 中实现。当然,普通程序员要想实现 IP 层、TCP/UDP 层还是有一定难度的。不过不用担心,我们可以使用成熟的开源 TCP/IP 协议栈,如 uIP、LwIP。它们都是轻量级的 TCP/IP 协议栈,适用于资源受限的单片机。
- 使用硬件 TCP/IP 协议栈,MCU 只需要实现应用层代码就可以了
例如,使用 W5500 芯片,传输层及其以下全部由外部这颗芯片完成,MCU 只需要配置 W5500,从 W5500 收发数据,完成应用层逻辑就可以了。还有一种方案是 MCU 外接一个串口转以太网模块,原理和使用 W5500 方案类似。
ENC28J60
ENC28J60 属于上面介绍的方案 2,ENC28J60 单颗芯片集成了 MAC 和 PHY,提供 SPI 接口用来和 MCU 通信。
寄存器 —— 硬件的灵活性体现
在方案 2 中,网络层、传输层、应用层 是以软件的形式在 CPU 中实现的,而物理层、数据链路层则是以硬件的形式在 ENC28J60 中实现的,虽然 ENC28J60 是一个硬件,我们无法对其进行编程修改功能,但其仍然留有一定的灵活性,那就是可以配置的寄存器。我们可以设置寄存器以达到控制最低两层的目的,也可以读寄存器以达到监控最低两层的目的。
比如我们可以设置 ECON1 寄存器,来控制接收使能、发送请求、DMA、存储区选择等。
还可以设置 PHCON1 寄存器,来控制 PHY 模块复位等功能。
缓冲器 —— 硬件的价值体现
说到底 ENC28J60 的功能是从 IP 层拿数据并发送出去,或者将收到的数据送给 IP 层。这两个方向的操作都需要用到缓冲器,用来暂存数据。
ENC28J60 读写特性
ENC28J60 中有三种类型的存储器:
• 控制寄存器
• 以太网缓冲器
• PHY 寄存器
其中 MCU 可以通过 SPI 接口,使用指令来直接读写 控制寄存器 和 以太网缓冲器。但是不可以通过 SPI 接口直接访问 PHY 寄存器,只可以通过 MAC 中的 MII 访问这些寄存器。
可以理解为 SPI 是和 MAC 相连的,可以直接访问 MAC 的寄存器,但是 PHY 只与 MAC 通过 RMII、MIIM 接口相连,所以想要读取 PHY 寄存器的值,必须要通过 MAC,进一步讲是通过 MAC 的 MIIM 接口,或者说是通过 MAC 的 MII 寄存器。
ENC28J60 中所有的存取器都是以静态 RAM 的方式实现的。
控制寄存器存储空间分为四个存储区,可用 ECON1 寄存器中的存储区选择位 BSEL1:BSEL0 进行选择。 每个存储区都是 32 字节长,可以用 5 位地址值进行寻址。
所有存储区的最后五个单元 (1Bh 到 1Fh)都指向同一组寄存器:EIE、EIR、ESTAT、ECON2 和 ECON1。 它们是控制和监视器件工作的关键寄存器,由于被映射到同一存储空间,因此可以在不切换存储区的情况下很方便地访问它们。
下图是所有的控制寄存器:
能够从任意 Bank 访问 ECON1 是有必要的,因为 ECON1 中存有选择 Bank 的两个 bit,倘若 ECON1 只能在 Bank 0 中访问,那么,一旦将访问权切换到 Bank 2,而 Bank 2 又无法访问 ECON1 来选择 Bank,那不就悲催了嘛,只能停留在 Bank 2 了。。
ENC28J60 简介相关推荐
- 二、stm32f103+enc28j60
1.ENC28J60 简介 ENC28J60 是带有行业标准串行外设接口(Serial Peripheral Interface,SPI)的独立以太网 控制器.它可作为任何配备有 SPI 的控制器的以 ...
- GD32F4xx 以太网芯片(enc28j60)驱动移植
1.enc28j60 简介 ENC28J60 是带有行业标准串行外设接口(SPI)的独立以太网控制器. 主要特性: (1)SPI最高通信速率:10Mb/s.只支持SPI的模式0,0,且SPI端口要求S ...
- 客户旅程_从编码训练营到报价—我的1280小时旅程
客户旅程 So, why am I writing this? My goal is to give some insight into the time commitment required to ...
- 暗黑破坏神 用什么 开发的_软件开发中最具破坏性的五种态度
暗黑破坏神 用什么 开发的 重点 (Top highlight) 成长心态是关键 (GROWTH MINDSET IS KEY) Based on my years of professional s ...
- 原子性 可见性 有序性_极简主义的内容可见性
原子性 可见性 有序性 A couple of years ago, Minimalism as a concept took over the design world. 几年前, 极简主义作为一种 ...
- LWIP的RAW API UDP通信详解(stm32f103---enc28j60)
目录 LWIP LWIP简介 LWIP主要特性 ENC28J60 ENC28J60简介 ENC28J60特点 无操作系统LWIP移植 在说移植之前,先说下几个重要的函数功能和数据结构 enc28j60 ...
- ENC28j60以太网芯片驱动程序简介
转载: 本介绍可分为三块内容: 1.以太网数据帧结构 符合IEEE802.3标准的以太网帧的长度是介于64-1516字节之间.主要由目标MAC地址.源MAC地址.类型/长度字段.数据有效负载.可选填充 ...
- 单片机 STM32 HAL 网络模块 ENC28J60
文章目录 一. 简介 二.特性 三.示例代码 一. 简介 ENC28J60 是带有行业标准串行外设接口(Serial Peripheral Interface,SPI)的独立以太网控制器.它可作为任何 ...
- STM32+ENC28J60+UIP协议栈实现WEB服务器示例
一.环境介绍 MCU: STM32F103ZET6 网卡: ENC28J60 协议栈: UIP 开发软件: Keil5 二.功能介绍 完整项目源码下载链接:https://download.csdn ...
最新文章
- 解决安卓微信浏览器中location.reload 或者 location.href失效的问题
- Linux shell 操作命令 mkdir
- linux C 基于链表链的定时器
- 排序算法时间复杂度、空间复杂度、稳定性比较
- 青年PM倪超:想让程序员多一点点幸福感
- dj电商-数据库的远程连接
- html 怎么给li空格,html 空格
- (转)淘淘商城系列——Solr集群搭建
- python每天学多久_怎么自学python,大概要多久?
- python dataframe排序_python – Pandas DataFrame排序忽略了这种情况
- 写出调试c语言程序的基本操作步骤,C语言程序设计基本步骤
- windows上搭建NFS服务器--haneWIN
- 精通CSS(5.6.3-end)PixyFairypureCSSToolHintscale
- js操作cookie有效期至当天晚上23点59分59秒的cookie
- “大神”===“一万个小时的敲代码时间,100多万行的代码”
- Docker容器回顾之运维篇
- Cortex-M处理器指令集详解
- 【回溯法】python 实现 全排列,子集,组合问题、分割回文串
- 斗破苍穹-云韵 云岚宗第九代宗主
- 大学网络计算机多项选择题,大学计算机基础 - 选择题(单选,多选,答案)