嵌入式以太网第一部分——ENC28J60网卡驱动

本文介绍了如何在STM32F103ZERT开发板上开发ENC28J60以太网控制器驱动,实现嵌入式设备连接到LAN并进行ping测试。内容涵盖ENC28J60寄存器描述、SPI指令、读写寄存器函数、缓冲器管理和数据包的发送与接收。
摘要由CSDN通过智能技术生成

目录:

1:概述

2:enc28j60寄存器描述和SPI指令

3:读写寄存器函数

4:缓冲器描述和读写缓冲器函数

5:发送和接受数据包函数


 1、概述:

1.1:以太网是实现LAN的一种技术,它允许嵌入式系统连接到一个LAN中,并可通过使用网关经Internet连接到外部世界,以太网的主要目的是向LAN发送和从LAN接收以太网帧,在TCP/IP协议族中,不包括以太网协议,可以理解它为TCP/IP中的网络接口层(物理层和数据链路层),为TCP/IP中的上层协议(比如:IP协议和ARP协议)提供服务;

1.2:ENC28J60是带SPI接口的以太网控制器,支持IEEE802.3协议,当然,也兼容Ethernet第二版的协议,此协议帧结构简单,被大量使用;

1.3:以太网帧结构:目的mac地址+源mac地址+协议类型+数据;

1.4:本篇编写ENC28J60驱动,实现以太网控制,将我们的嵌入式设备连接到LAN中,并使用ping命令进行测试;

1.5:enc28j60驱动实现需完成三步:(1)读写缓冲区函数实现;(2)发送和接受缓冲器实现;(3)enc28j60初始化,本篇实现先两步;

1.6:参考项目:AVRNET项目

1.7:开发板:STM32F103ZERT 奋斗开发板V5 软件环境:KEIL MDK5


2、Enc28j60寄存器描述和SPI指令

2.1:寄存器描述:enc28j60寄存器主要分2类,控制寄存器和PHY寄存器;

控制寄存器:存储空间分为四个存储区(bank),可使用ECON1中的BSEL1:BSEL0进行选择,可以使用2个bit进行指定。每个bank都是32字节长,可以使用5个bit进行寻址。控制寄存器常被分为三类,ETH、MAC、MII三组寄存器,MAC和MII寄存器的读指令协议和ETH寄存器的有区别,可以用1个bit来标识,所以可以用一个字节来描述寄存器的地址、分组、类别,定义是:bit0:bit4表示寄存器的地址,bit5:bit6表示寄存器分组,bit7最高位表示寄存器类别,所有寄存器在enc28j60.h中定义,如下:

// Bank 2 registers
#define MACON1           (0x00|0x40|0x80)
#define MACON2           (0x01|0x40|0x80)
#define MACON3           (0x02|0x40|0x80)
#define MACON4           (0x03|0x40|0x80)
#define MABBIPG          (0x04|0x40|0x80)
#define MAIPGL           (0x06|0x40|0x80)
#define MAIPGH           (0x07|0x40|0x80)
#define MACLCON1         (0x08|0x40|0x80)
#define MACLCON2         (0x09|0x40|0x80)
#define MAMXFLL          (0x0A|0x40|0x80)
#define MAMXFLH          (0x0B|0x40|0x80)
#define MAPHSUP          (0x0D|0x40|0x80)
#define MICON   
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值