单片机以太网方案

单片机想要使用以太网的话,通常有以下几种方案:

  1. 如果 MCU 内部集成 MAC 控制器,则只需外接一个 PHY 芯片就可以了
  2. 如果 MCU 内部没有 MAC 控制器,需要外接 MAC 芯片和 PHY 芯片,这两颗芯片可以分立也可以集成在一颗芯片中

以上两种方案,MAC + PHY 完成了 TCP/IP 五层模型的最低两层,即物理层和数据链路层。上面几层,如网络层、传输层、应用层则需要在 MCU 中实现。当然,普通程序员要想实现 IP 层、TCP/UDP 层还是有一定难度的。不过不用担心,我们可以使用成熟的开源 TCP/IP 协议栈,如 uIP、LwIP。它们都是轻量级的 TCP/IP 协议栈,适用于资源受限的单片机。

  1. 使用硬件 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 简介相关推荐

  1. 二、stm32f103+enc28j60

    1.ENC28J60 简介 ENC28J60 是带有行业标准串行外设接口(Serial Peripheral Interface,SPI)的独立以太网 控制器.它可作为任何配备有 SPI 的控制器的以 ...

  2. GD32F4xx 以太网芯片(enc28j60)驱动移植

    1.enc28j60 简介 ENC28J60 是带有行业标准串行外设接口(SPI)的独立以太网控制器. 主要特性: (1)SPI最高通信速率:10Mb/s.只支持SPI的模式0,0,且SPI端口要求S ...

  3. 客户旅程_从编码训练营到报价—我的1280小时旅程

    客户旅程 So, why am I writing this? My goal is to give some insight into the time commitment required to ...

  4. 暗黑破坏神 用什么 开发的_软件开发中最具破坏性的五种态度

    暗黑破坏神 用什么 开发的 重点 (Top highlight) 成长心态是关键 (GROWTH MINDSET IS KEY) Based on my years of professional s ...

  5. 原子性 可见性 有序性_极简主义的内容可见性

    原子性 可见性 有序性 A couple of years ago, Minimalism as a concept took over the design world. 几年前, 极简主义作为一种 ...

  6. LWIP的RAW API UDP通信详解(stm32f103---enc28j60)

    目录 LWIP LWIP简介 LWIP主要特性 ENC28J60 ENC28J60简介 ENC28J60特点 无操作系统LWIP移植 在说移植之前,先说下几个重要的函数功能和数据结构 enc28j60 ...

  7. ENC28j60以太网芯片驱动程序简介

    转载: 本介绍可分为三块内容: 1.以太网数据帧结构 符合IEEE802.3标准的以太网帧的长度是介于64-1516字节之间.主要由目标MAC地址.源MAC地址.类型/长度字段.数据有效负载.可选填充 ...

  8. 单片机 STM32 HAL 网络模块 ENC28J60

    文章目录 一. 简介 二.特性 三.示例代码 一. 简介 ENC28J60 是带有行业标准串行外设接口(Serial Peripheral Interface,SPI)的独立以太网控制器.它可作为任何 ...

  9. STM32+ENC28J60+UIP协议栈实现WEB服务器示例

    一.环境介绍 MCU:  STM32F103ZET6 网卡: ENC28J60 协议栈: UIP 开发软件: Keil5 二.功能介绍 完整项目源码下载链接:https://download.csdn ...

最新文章

  1. 解决安卓微信浏览器中location.reload 或者 location.href失效的问题
  2. Linux shell 操作命令 mkdir
  3. linux C 基于链表链的定时器
  4. 排序算法时间复杂度、空间复杂度、稳定性比较
  5. 青年PM倪超:想让程序员多一点点幸福感
  6. dj电商-数据库的远程连接
  7. html 怎么给li空格,html 空格
  8. (转)淘淘商城系列——Solr集群搭建
  9. python每天学多久_怎么自学python,大概要多久?
  10. python dataframe排序_python – Pandas DataFrame排序忽略了这种情况
  11. 写出调试c语言程序的基本操作步骤,C语言程序设计基本步骤
  12. windows上搭建NFS服务器--haneWIN
  13. 精通CSS(5.6.3-end)PixyFairypureCSSToolHintscale
  14. js操作cookie有效期至当天晚上23点59分59秒的cookie
  15. “大神”===“一万个小时的敲代码时间,100多万行的代码”
  16. Docker容器回顾之运维篇
  17. Cortex-M处理器指令集详解
  18. 【回溯法】python 实现 全排列,子集,组合问题、分割回文串
  19. 斗破苍穹-云韵 云岚宗第九代宗主
  20. 大学网络计算机多项选择题,大学计算机基础 - 选择题(单选,多选,答案)

热门文章

  1. 安装程序无法继续,因为您的计算机上安装了更新的internet explorer
  2. 分布式下载方式(二)DHT分布式网络
  3. java 将.amr音频文件转换为.mp3或.wav文件
  4. Linux常用命令介绍
  5. influxdb 退出命令
  6. 实际业务中的数据分析流程和痛点
  7. Geek 青年说北京沙龙分享
  8. spring的maven依赖
  9. ASPX和Razor
  10. python逢7跳过_07.报数游戏:7的倍数或含7的数跳过,趣说python循环里的break和continue...