没有合适的资源?快使用搜索试试~ 我知道了~
21 芯嵌STM32入门系列教程之二十一《以太网控制器ENC28J60的理解》
需积分: 12 7 下载量 105 浏览量
2013-12-08
18:44:12
上传
评论
收藏 862KB PDF 举报
温馨提示
试读
13页
21 芯嵌STM32入门系列教程之二十一《以太网控制器ENC28J60的理解》讲述了在STM32平台下的以太网通信是怎么建立起来的,详细介绍了以太网控制器ENC28J60的应用。
资源推荐
资源详情
资源评论
芯嵌 stm32 www. 51stm32 . com
Copyright © 2009-201 4 福州芯嵌工作室 ALL rights reserved
1
STM32
入门系列教程
以太网控制器 ENC28J60 的理解
Revision
Revision
Revision
Revision 1
1
1
1 .01
.01
.01
.01
( 2013-06-20 )
芯嵌 stm32 www. 51stm32 . com
Copyright © 2009-201 4 福州芯嵌工作室 ALL rights reserved
2
本章将笔者学习以太网控制器 ENC28J60 芯片的使用 。 这是为后续章节基 于
stm32 的网卡驱动做准备的 。 如果合并驱动教程一起写 , 因为内容非常多 , 很多
网友可能会望而却步 。 这里分步骤来总结 , 希望初学者能选循渐进 , 一点一点最
终掌握整个驱动的编程。
第一章 以太网基础
ENC28J60 芯片是带 SPI 接口的独立以太网控制器。以太网是一滩深水 , 踏
进去就掉进去了,这里只是简单地介绍 IEEE 802.3 标准,以太网就是基于该标
准实现的。
我们普通路由器 、 电脑网卡上的以太网数据 ( 帧 ) 长度在 64-1518 字节之间
。
这么多字节怎么传送?肯定要收发双方都协商好通信方式、数据格式的。 802. 3
标准规定,这些字节在传输的时候,按照如下格式传送:
从上面可以看到 , 为了让数据帧到达目的地 , 首先传输的是目的 MAC 地址
,
6 字节 , 然后告诉目的地 , 这个数据帧从哪里传输来的 , 所以接下来第二个传送
的是源 MAC 地址 , 然后告诉目的地 , 该数据帧是什么类型的数据 , 然后才是要
传送的数据内容。最后是 CRC 的校验序列( FCS ) 。
现在假设 , A 点向 B 点发送数据 。 B 点怎么知道 A 点什么时候发送过来?如
果就按照上面所讲的数据帧直接发送的话,当 B 点知道有数据到来时,进行反
应开始接收前 , 已经错过了最开始的几个电平位信息 。 所以 , 收发双方还需要协
商好一个标志 , 只要接收到这个标志 , 就知道后面要来数据了 , 接收方马上开始
准备收数据,那么一个完整的以太网 MAC 帧就可以全部接收到。
基于以上想法 , 802.3 标准在每个 MAC 帧要发送前 , 硬件自动生成前导字段
芯嵌 stm32 www. 51stm32 . com
Copyright © 2009-201 4 福州芯嵌工作室 ALL rights reserved
3
和帧起始定界符 。 前导字段是告诉收方 , 有数据要过来了 , 要先准备好 。 帧起始
定界符( 1 字节)是让收发两方开始做好同步工作,当 1 个字节的定界符中 , 最
后一个位发送完毕 , 接收方就知道 , 后面到来的必定是数据了 。 于是只要把前面
的前导字段和定界符滤除,后面全盘照收就对了。
目标 MAC 和源 MAC 都是 6 个字节 , 格式都有规定的 。 比如目标 MAC 第一
个字节最低有效位是 1 , 则该目标地址是组播地址 。 否则是单播地址 。 一般点对
点通信 , 都是单播地址 。 ENC28J60 芯片有一个接收过滤器 , 如果不是自己想要
的数据,可以直接丢弃。比如它可以决定自己是否要接收组播数据包等等。 源
MAC 地址也是 6 个字节,分两个部分,前三个字节叫 OUI ,是 IEEE 分配的,
用来识别生产厂商,后三个字节是具体的厂商自己定义的。所以有经验的人 , 看
前三个字节,能大体知道这个数据包是哪个公司的设备发送来的。
接下来是类型 / 长度 , 2 个字节 。 它的作用在于 , 要定义数据内容是啥 。 比如
如果数据内容是 IP 数据包或 ARP 数据,那么类型的值是不同的。只要查看这 2
字节,就知道数据包是什么东西。后面的填充和 CRC 这里就不讲了,因为跟编
程没有啥关系,硬件处理。
注意 , 以上我们讲解的内容 , 属于 MAC 层 , 即 2 层 。 IP 属于 3 层 , ARP 属
于 2.5 层(介于 MAC 和 IP 之间 ) 。我们只讨论 ENC28J60 对数据的收发,至于
数据接收进来后,如何进行剥层, uIP 已经帮我们都做好了(后续会讲解 uIP 的
移植,因为,为了收发以太网数据,我们把整个 TCP/IP 协议栈的程序代码都学
了,那不是一天两天能搞定的事情 ) 。下面来学习 ENC28J60 芯片如何工作收发
数据的。
第二章 ENC28J60
ENC28J60
ENC28J60
ENC28J60 内部结构
ENC28J60 由七个主要功能模块组成:
1.SPI 接口 —— 充当主控制器和 ENC28J60 之间通信通道。
2. 控制寄存器 —— 用于控制和监视 ENC28J60 。
3. 双端口 RAM 缓冲器 —— 用于接收和发送数据包。
4. 判优器 —— 当 DMA 、 发送和接收模块发出请求时对 RAM 缓冲器的访问
剩余12页未读,继续阅读
资源评论
DemosHu
- 粉丝: 1
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功