基于enc28j60的学习心得

来源:互联网 发布:大学生网络教育平台 编辑:程序博客网 时间:2024/06/05 18:44

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具体协议可参看:https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus
spi在接口enc28j60ReadOp和enc28j60WriteOp中会使用:

//*******************************************************************************************//// Function : icmp_send_request// Description : Send ARP request packet to destination.////*******************************************************************************************BYTE enc28j60ReadOp(BYTE op, BYTE address){// activate CSCSACTIVE;// issue read commandSPDR = op | (address & ADDR_MASK);waitspi();// read dataSPDR = 0x00;waitspi();// do dummy read if needed (for mac and mii, see datasheet page 29)if(address & 0x80){SPDR = 0x00;waitspi();}// release CSCSPASSIVE;return(SPDR);}//*******************************************************************************************//// Function : icmp_send_request// Description : Send ARP request packet to destination.////*******************************************************************************************void enc28j60WriteOp(BYTE op, BYTE address, BYTE data){CSACTIVE;// issue write commandSPDR = op | (address & ADDR_MASK);waitspi();// write dataSPDR = 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协议等

原创粉丝点击