基于enc28j60的学习心得

1.概述

enc28j60是带SPI接口的独立以太网控制器,兼容IEEE 802.3,集成MAC和10 BASE-T PHY,最高速度可达10Mb/s。基于enc28j60控制器的理解可阅读文章: ENC28J60学习笔记,在该文章内详细介绍控制器的使用方法,本文不对使用方法进行讲解,只提供代码下载路径: github开源地址
在使用该控制器时,会涉及SPI通信协议。以OSI模型为标准,还会涉及物理层、链路层、网络层等知识。下面分别介绍。

2.spi通信协议

SPI(Serial Peripheral Interface)是一种高速的、全双工、同步的通信总线。SPI以主从方式工作,通常有一个主设备和一个或多个从设备,
SPI 控制器的信号线描述如下:
  • MISO:主设备数据输入,从设备数据输出;
  • MOSI:主设备数据输出,从设备数据输入;
  • SCLK: 时钟信号,由主设备产生;
  • SS: 从设备使能信号,由主设备控制。这个信号可以是SPI外设的一部分,也可用GPIO引脚实现。
SPI 典型接线方式如下。
 

SPI总线支持的四种工作方式,取决于串行同步时钟极性(CPOL)和串行同步时钟相位CPHA的组合。四种工作方式时序描述如下:

CPOL是用来决定SCLK时钟信号空闲时的电平,CPOL=0,空闲电平为低电平,CPOL=1时,空闲电平为高电平。
CPHA是用来决定采样时刻的,CPHA=0,在每个周期的第一个时钟沿采样,CPHA=1,在每个周期的第二个时钟沿采样。
SPI主模块和与之通信的外设时钟相位和极性应该一致。
spi 在接口enc28j60ReadOp和enc28j60WriteOp中会使用:

//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
BYTE enc28j60ReadOp(BYTE op, BYTE address)
{
	// activate CS
	CSACTIVE;
	// issue read command
	SPDR = op | (address & ADDR_MASK);
	waitspi();
	// read data
	SPDR = 0x00;
	waitspi();
	// do dummy read if needed (for mac and mii, see datasheet page 29)
	if(address & 0x80)
	{
		SPDR = 0x00;
		waitspi();
	}
	// release CS
	CSPASSIVE;
	return(SPDR);
}
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
void enc28j60WriteOp(BYTE op, BYTE address, BYTE data)
{
	CSACTIVE;
	// issue write command
	SPDR = op | (address & ADDR_MASK);
	waitspi();
	// write data
	SPDR = data;
	waitspi();
	CSPASSIVE;
}


3.网络知识

以太网是一种在计算系统间交换数据的网络拓扑,很多微控制器集成以太网MAC控制器,MAC控制器作为链路层协议控制器连接外部以太网PHY。

典型的以太网是mac利用MII访问phy,用rj-45接口外接水晶头,接入网线即可完成数据交换。


如果对mac,mii,phy等概念不是很熟悉可参考文章:http://www.cnblogs.com/jason-lu/articles/3195473.html

在文中提及了ARP协议,,ARP是地址解析协议,它的作用就是在以太网环境下,通过第三层(网络层)的IP地址来找寻第二层(链路层)的MAC地址,得到一张ARP缓存表,而正是依靠IP和mac地址才能保证网络通信的正常,如果进入第四层传输层时,我们开发人员只要关心IP即可,如TCP、UDP协议。在一次TCP协议传输时,会涉及ICMP,ARP协议等

猜你喜欢

转载自blog.csdn.net/asd542230642/article/details/75175332