硬件协议栈和软件协议的区别:

MCU+MAC+PHY方案

传统的以太网接入方案如下图,由 MCU+MAC+PHY 再加入网络接口实现以太网的物理连接,通过在主控芯片中植入TCP/IP 协议代码实现通信及上层应用。

硬件协议栈W5500芯片方案

www.w5500.com文档例程全在里面。

由 MCU+硬件协议栈芯片(内含 MAC和 PHY)直接加网络接口,便可方便的实现单片机联网,所有的处理 TCP/IP 协议的工作都是通过硬件协议栈芯片来完成。

硬件协议栈是指通过将传统的软件 TCP/IP 协议栈用硬件化的逻辑门电路来实现:

两种方案对比

方案分类

MCU资源利用

代码量

安全性

灵活型

MAC+PHY方案

频繁响应中断,占用MCU运算/时钟资源

轻量级TCP/IP协议栈,约40KB代码量。

软件协议栈容易受到恶意攻击

软件协议栈具备灵活性

W5500硬件协议栈芯片方案

MCU 只需要处理面向用户的应用层数据

完成对Socket 的编程以及寄存器的调用,仅有 10K 左右的代码量

硬件化的电路处理协议会更加快速、稳定

只支持 4 个/8 个 Socket

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

W5500硬件方案

硬件连接主要如下:

注: 一号片选引荐SCS低电平有效。

程序文件分类

W5500初始化需要以下几个文件:

W5500初始化

操作W5500需要配置下列寄存器参数:

1. 模式寄存器(MR)
2. 中断屏蔽寄存器(IMR)
3. 重发时间寄存器(RTR)
4. 重发计数寄存器(RCR)

网络信息设置:

1. 网关地址寄存器(GAR)
2. 本机物理地址寄存器(SHAR)
3. 子网掩码寄存器(SUBR)
4. 本机 IP 地址寄存器(SIPR)

代码分析

SOCKET 接收TX和发送缓存RX的大小配置文件

void socket_buf_init( uint8 * tx_size, uint8 * rx_size  )
{int16 i;int16 ssum=0,rsum=0;for (i = 0 ; i < MAX_SOCK_NUM; i++)       // Set the size, masking and base address of Tx & Rx memory by each channel{IINCHIP_WRITE( (Sn_TXMEM_SIZE(i)), tx_size[i]);IINCHIP_WRITE( (Sn_RXMEM_SIZE(i)), rx_size[i]);#ifdef __DEF_IINCHIP_DBG__printf("tx_size[%d]: %d, Sn_TXMEM_SIZE = %d\r\n",i, tx_size[i], IINCHIP_READ(Sn_TXMEM_SIZE(i)));printf("rx_size[%d]: %d, Sn_RXMEM_SIZE = %d\r\n",i, rx_size[i], IINCHIP_READ(Sn_RXMEM_SIZE(i)));
#endifSSIZE[i] = (int16)(0);RSIZE[i] = (int16)(0);if (ssum <= 16384){SSIZE[i] = (int16)tx_size[i]*(1024);}if (rsum <= 16384){RSIZE[i]=(int16)rx_size[i]*(1024);}ssum += SSIZE[i];rsum += RSIZE[i];}
}

初始化接收和发送缓存的大小:

 socket_buf_init(txsize, rxsize);        /*初始化8个Socket的发送接收缓存大小*/

W5500 有 1 个通用寄存器,8 个 Socket 寄存器区,以及对应每个 Socket 的收/发缓存区。开启8个通道,每一个 Socket 的发送缓存区都在一个 16KB 的物理发送内存中,初始化分配为 2KB。每一个 Socket 的接收缓存区都在一个 16KB 的物理接收内存中,初始化分配为 2KB。无论给每个 Socket 分配多大的收/发缓存,都必须在 16 位的偏移地址范围内(从 0x0000 到 0xFFFF)。
16KB 的发送内存初始化被分配为每个 Socket 2KB 发送缓存区(2KB X 8 =16KB)。初始化分配的 2KB Socket 发送缓存,可以通过使用 Socket 发送缓存大小寄存器(Sn_TXBUF_SIZE)重新分配。一旦所有的 Socket 发送缓存大小寄存器(Sn_TXBUF_SIZE)配置完成,16KB 的发送内存就会按照配置分配给每个 Socket的发送缓存,并按照从 Socket 0 到 7 顺序分配。

uint8 txsize[MAX_SOCK_NUM] = {2,2,2,2,2,2,2,2};//tx buffer set  K bits
uint8 rxsize[MAX_SOCK_NUM] = {2,2,2,2,2,2,2,2};//rx buffet set  K bits

【以太网硬件TCP/IP协议栈】硬件协议栈W5500应用相关推荐

  1. RT-Thread 之 WIZnet 软件包(全硬件TCP/IP协议栈W5500以太网芯片) 以太网 Socket 通信

    目录 1.介绍 1.1 WIZnet 1.2 W5500 2.RT-Thread Studio 配置及相关代码 2.1 添加WIZnet软件包 2.2 配置 WIZnet 软件包 2.3 配置 spi ...

  2. 剖析:WIZnet以太网核心技术–全硬件TCP/IP协议栈

     WIZnet,是全球第一家专注于全硬件TCP/IP协议栈技术(iOffloadTM Tech)的半导体公司,精心为用户提供高速稳定的以太网解决方案,广泛应用在工业自动化.智能电网.安防门禁.金融 ...

  3. W5500全硬件 TCP/IP 嵌入式以太网控制器WIZNET

    概述 W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案. W5500 集成了 TCP/IP 协议栈,10/100M 以太网数据链路层(MAC)及物 ...

  4. 硬件 TCP/IP 协议栈(SPI 发送命令字)

    目录 全硬件的TCP/IP 协议栈简介 以太网接入单片机方案 以太网接口芯片CH395Q 简介 以太网接口芯片 CH395Q 命令简介 以太网接口芯片CH395Q 寄存器配置与使用 移植CH395Q ...

  5. Wiznet W5100硬件TCP/IP嵌入式以太网控制器

    WIZnet 的W5100硬件TCP/IP嵌入式以太网控制器是一个功能齐全的.单芯片的.因特网驱动的10/100以太网控制器.嵌入式应用需要易于集成.稳定.性能.空间.系统成本控制而W5100就是为嵌 ...

  6. 安防硬件WIZnet基于全硬件TCP/IP的安防产品应用及方案

    在本文中,我们主要介绍安防硬件的内容,自我感觉有个不错的建议和大家分享下 WIZnet立足于生产全硬件TCP/IP协议栈芯片,为单片机提供理想的处置计划.整体来讲,其应用领域还是非常广泛的,以智能电表 ...

  7. WIZnet开源平台ioPlatform所趋,全硬件TCP/IP尽显内芯智慧!

    互联网最先用于研究或教育,但它在服务和应用上得到极大地开发.数以万亿计的智能装置都连接到互联网,并提供一个更聪明的智能服务生活.因此,它不应该是一种很难开发的智能设备,才可以维持所有人对智能设备的奇思 ...

  8. 老吴的 Xmind / 网络是怎样连接的 / 传输 TCP/IP 数据-探索协议栈和网卡

    一.简介 无惊无险,又到了周五,最近在看一些关于计算机网络的书,积累了一些笔记,分享给大家,助力嵌入式人才涨薪计划. 最近看的书比较多,我发现看书也是分好坏2个方面的. 好的地方是知识点比较全面,成体 ...

  9. 串口服务器RS485转以太网网口TCP/IP转串口模块导轨式通信网络数据传输通讯设备

    串口服务器RS485转以太网网口TCP/IP转串口模块导轨式通信网络数据传输通讯设备 串口服务器RS485转以太网网口TCP/IP转串口模块导轨式通信网络数据传输通讯设备 导轨型单串口服务器5143D ...

  10. 以太网广播TCP/IP对讲系统中的副音箱增加对讲功能的方案

    以太网广播TCP/IP对讲系统中的副音箱增加对讲功能的方案 简介: 以太网(TCP/IP)广播对讲系统中的副音箱只具有扩音功能,无法在需要时与地面进行对讲,如果在每个需对讲的地点都部署主音箱的话,则会 ...

最新文章

  1. 【EXCEL】VLOOKUP函数反向应用
  2. ultraedit正则表达式
  3. “炉石”以上,“万智”未满《符文之地传奇》为何能有好开局?
  4. 目标检测系列(八)——CenterNet:Objects as points
  5. 【51Nod - 1268】和为K的组合 (背包 或 dfs)
  6. Java多线程——带你看AQS框架源码
  7. c程序 wrapper_如何使 Python 程序能让他提速 30%?
  8. HINSTANCE HANDLE HWND 的区别及一般方法
  9. 将 exe 文件反编译为Python源代码
  10. Cannot run program “D:\jdk8\bin\java.exe“ (in directory “C:\Users\Administrator\AppData\Local\JetBra
  11. acu风格是什么意思_acu 是什么意思,是一个品牌吗???
  12. 好看的皮囊 · 也是大自然的杰作 · 全球高质量 · 美图 · 集中营 · 美女 · 2017-08-28期...
  13. pp模块常用表 sap_SAP 常用表 MM PP SD FICO PM PS QM WM 等
  14. Python-hrvanalysis库 挖掘心电信号特征 方法总结
  15. Win7安装CAD出现错误1606 最简单的解决方法
  16. 网站服务器该怎么选择呢?
  17. 利用自动机识别c 语言单词,第03章 词法分析与有穷自动机(2).ppt
  18. android 手机桌面,安卓手机桌面介绍:教你认识安卓手机桌面
  19. 互联网商规-part2
  20. HTML怎么打双引号,双引号怎么打出来

热门文章

  1. ssh免密登录服务器
  2. java--顺序、选择、循环结构
  3. poj pku图论、网络流入门题总结、汇总
  4. java基础知识学习小总结(一)
  5. 小点滴——word页码页眉问题——摘自贴吧
  6. 制作标题—数据化组词
  7. HTML+CSS之背景图片的设置
  8. mock.js的使用
  9. 【机器学习】评价指标PSI
  10. CSS中文字间距和行间距