版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Enc28j60以太网芯片驱动程序简介本介绍可分为三块内容:1.以太网数据帧结构符合IEEE802.3标准的以太网帧的长度是介于64-1516字节之间。主要由目标MAC地址、源MAC地址、类型/长度字段、数据有效负载、可选填充字段和循环冗余校验组成,另外在通过以太网介质发送数据包时,一个7字节的前导字段和一字节的帧起始定界符被附加到以图1以太网数据帧结构图ENC28J60在发送或接收数据包时由以下几点值得关注:首先,ENC28J60具有一个接收过滤器可以丢弃或接收具有组播、广播或单播目标地址的数据包。其次,在数据字段处:以太网数据字段的长度可以在0-1500字节之间变换,超过这一范围的数据包是违反以太网标准的,这些包将会被大多数以太网节点丢弃。若设置ENC28J60的巨大帧使能位为1,可以发送和接收超大规格数据包。在数据域中的填充字段是在数据字段小于46字节时起填充作用°ENC28J60在发送数据包时,会自动填充0。ENC28J60在接收时自动拒绝小于18字节的数据包。数据填充亦可由主控芯片来配置。最后,在CRC处:ENC28J60在接收数据包时将检查每个传入数据包的CRC,通过检测ERXFCON.CRCEN位来判断输入数据包的CRC是否正确。ENC28J60在发送数据包时,将自动生成一个有效的CRC并发送它。发送数据包的CRC亦可由主控芯片来提供。2.驱动程序介绍ENC28J60的寄存器读写规则由于ENC28J60芯片采用的是SPI串行接口模式,其对内部寄存器读写的规则是先发操作码〈前3bit〉+寄存器地址〈后5bit〉,再发送欲操作数据。通过不同操作码来判别操作时读寄存器(缓存区)还是写寄存器(缓冲区)或是其它。ENC28J60芯片初始化程序ENC28J60发送和接收数据包前必须对内进行初始化设置,通常在复位后完成,不需再更改。voidenc28j60_init(void){//*****Bank1区相关寄存器配置 SPI操作块 数据块//初始化程序一开始先进行软件复位,111〈操作码〉+11111〈参数〉,N/A//ENC28J60_SOFT_RESET=0xFFenc28j60WriteOp(ENC28J60_SOFT_RESET,0,ENC28J60_SOFT_RESET);delay_ms(5);//初始化接收缓冲区,设置接收起始地址NextPacketPtr=RXSTART_INIT; //读下一数据包指针enc28j60Write(ERXSTL,RXSTART_INIT&0xFF);enc28j60Write(ERXSTH,RXSTART_INIT〉〉8);//设置接收读指针指向地址enc28j60Write(ERXRDPTL,RXSTART_INIT&0xFF);enc28j60Write(ERXRDPTH,RXSTART_INIT〉〉8);//设置接收缓冲区的末尾地址//ERXND寄存器默认指向整个缓冲区的最后一个单元enc28j60Write(ERXNDL,RXSTOP_INIT&0xFF);enc28j60Write(ERXNDH,RXSTOP_INIT〉〉8);//设置发送缓冲区的起始地址//ETXST寄存器默认地址是整个缓冲区的第一个单元enc28j60Write(ETXSTL,TXSTART_INIT&0xFF);enc28j60Write(ETXSTH,TXSTART_INIT〉〉8);//*****Bank2区相关寄存器配置//MAC初始化配置//MAC接收使能,下行程序段表示使能MAC接收,使能IEEE流量控制enc28j60Write(MACON1,MACON1_MARXEN|MACON1_TXPAUS|MACON1_RXPAUS);//MACON2清零,让MAC退出复位状态enc28j60Write(MACON2,0x00);//下行程序段表示使能自动填充和自动CRC添加enc28j60WriteOp(ENC28J60_BIT_FIELD_SET,MACON3,MACON3_PADCFG0|MACON3_TXCRCEN|MACON3_FRMLNEN);//enc28j60Write(MACON3,MACON3_PADCFG0|MACON3_TXCRCEN|MACON3_FRMLNEN);//配置非背对背包之间的间隔enc28j60Write(MAIPGL,0x12);enc28j60Write(MAIPGH,0x0C);//配置背对背包之间的间隔enc28j60Write(MABBIPG,0x12);//设置允许接收或发送的最大帧长度编程enc28j60Write(MAMXFLL,MAX_FRAMELEN&0xFF);enc28j60Write(MAMXFLH,MAX_FRAMELEN>>8);//*****Bank3区相关寄存器配置//将MAC地址写入MAADR0-MAADR5寄存器中//NOTE:MACaddressinENC28J60isbyte-backwardenc28j60Write(MAADR5,UIP_ETHADDR0);enc28j60Write(MAADR4,UIP_ETHADDR1);enc28j60Write(MAADR3,UIP_ETHADDR2);enc28j60Write(MAADR2,UIP_ETHADDR3);enc28j60Write(MAADR1,UIP_ETHADDR4);enc28j60Write(MAADR0,UIP_ETHADDR5);//阻止发送回路的自动环回enc28j60PhyWrite(PHCON2,PHCON2_HDLDIS);//*****Bank0区相关寄存器配置enc28j60SetBank(ECONl);//设置寄存器区//中断使能enc28j60WriteOp(ENC28J60_BIT_FIELD_SET,EIE,EIE_INTIE|EIE_PKTIE);//包接收使能enc28j60WriteOp(ENC28J60_BIT_FIELD_SET,ECON1,ECON1_RXEN);}说明:enc28j60Write函数内部包含了SetBank〈设置寄存器区〉子程序,而enc28j60WriteOp直接根据spi操作码〈前3bit>+寄存器地址〈后5bit>进行操作的。ENC28J60发送数据包程序ENC28J60内的MAC在发送数据包时会自动生成前导符合帧起始定界符。此外,也会根据用户配置以及数据具体情况自动生成数据填充和CRC字段。主控器必须把所有其它要发送的帧数据写入ENC28J60缓冲存储器中。另外在待发送数据包前要添加一个包控制字节。包控制字节包括内容有:包超大帧使能位(PHUGEEN)、包填充使能位(PPADEN)、包CRC使能位(PCRCEN)和包改写位(POVERRIDE)四个内容。如图2所示。voidenc28j60PacketSend(u16_tlen,u8_t*packet){//配置发送缓冲区写指针起始地址enc28j60Write(EWRPTL,TXSTART_INIT);enc28j60Write(EWRPTH,TXSTART_INIT〉〉8);//根据给定数据域的大小配置发送缓冲区的末尾地址enc28j60Write(ETXNDL,(TXSTART_INIT+len));enc28j60Write(ETXNDH,(TXSTART_INIT+len)>>8);//给每个数据包的包控制字节预留一个单元enc28j60WriteOp(ENC28J60_WRITE_BUF_MEM,0,0x00);//TODO,fixthisupif(uip_len<=TOTAL_HEADER_LENGTH){//将数据包复制到缓冲区中enc28j60WriteBuffer(len,packet);}else{len-=TOTAL_HEADER_LENGTH;enc28j60WriteBuffer(TOTAL_HEADER_LENGTH,packet);enc28j60WriteBuffer(len,(unsignedchar*)uip_appdata);}//将以太网控制寄存器EC0N1所有位置1,以发送缓冲区数据enc28j60WriteOp(ENC28J60_BIT_FIELD_SET,ECON1,ECON1_TXRTS);}缓冲器描针地址存储器说明ETXST=0120h01201OEh控制PHUGEEN,PPADEN,PCRCEN和PCVEFiRIDE0121hdata[1]0122hdata[2]ETXND=0156hI数据包目标地址"源地址,芙型7KJ1E和数按0156hdata[m]0157htsv|70]0158htsv[15:8]0159htsv[23:16]状态向量状态向量由硬件埒入016AL1tsv[31.24]016Bhtsv[39:32]016Chtsv[47:40]016Dhtsv[51:48]016EL1下一数据包开始图2发送数据包结构ENC28J60接收数据包程序u16_tenc28j60PacketReceive(u16_tmaxlen,u8_t*packet){u16_trxstat;u16_tlen;//检测缓冲区是否收到一个数据包if(!(enc28j60Read(EIR)&EIR_PKTIF))//检测EIR.PKTIF是否为1{//通过查看EPKTCNT寄存器再次检查是否收到包if(enc28j60Read(EPKTCNT)==O)//EPKTCNT为0表示没有包接收/或包已被处理return0;}//配置接收缓冲器读指针指向地址enc28j60Write(ERDPTL,(NextPacketPtr));enc28j60Write(ERDPTH,(NextPacketPtr)>>8);//下一个数据包的读指针<详情可查看接收数据包结构图图3>NextPacketPtr=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0);NextPacketPtr|=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0)<<8;//读数据包字节长度〈详情可查看接收数据包结构图图3,status[15..0]>len=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0);len|=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0)〈〈8;//读接收数据包的状态〈status[31..16]>rxstat=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0);rxstat|=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0)〈〈8;//计算实际数据长度//移除CRC字段的长度来减少MAC所报告长度len=MIN(len,maxlen);//从缓冲区中将数据包复制到packet中enc28j60ReadBuffer(len,packet);//ERXRDPT读缓冲器指针//ENC28J60将一直写到该指针之前的一单元为止u16_trs,re;rs=enc28j60Read(ERXSTH);//ERXST接收缓冲区的起始地址rs〈〈=8;rs|=enc28j60Read(ERXSTL);re=enc28j60Read(ERXNDH);//ERXND接收缓冲区的末尾地址re〈〈=8;
re|=enc28j60Read(ERXNDL);if(NextPacketPtr-1<rs||NextPacketPtr-1>re){enc28j60Write(ERXRDPTL,enc28j60Write(ERXRDPTH,}else{enc28j60Write(ERXRDPTL,enc28j60Write(ERXRDPTH,(re));//ERXRDPT接收读地址(re)>>8);(NextPacketPtr-1));(NextPacketPtr-1)>>8);//数据包个数递减位EPKTCNT减1enc28j60WriteOp(ENC28J60_BIT_FIELD_SET,ECON2,ECON2_PKTDEC);returnlen;}前一数据包结束—下一个豔抿包的指针1OIFh1020b1021b1022h1023h1024h1025h1026h1027hcrc[31:24]crc[23:16]crc[1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年涉外安全培训内容从零到精通
- 2026年系统集成项目合同
- 泉州市洛江区2025-2026学年第二学期五年级语文第四单元测试卷(部编版含答案)
- 遵义市遵义县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 乌鲁木齐市乌鲁木齐县2025-2026学年第二学期四年级语文期中考试卷(部编版含答案)
- 邢台市新河县2025-2026学年第二学期五年级语文期中考试卷(部编版含答案)
- 乐山市犍为县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 淄博市桓台县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 咸阳市淳化县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 鸡西市梨树区2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 2026中盐东兴盐化股份有限公司招聘17人备考题库带答案详解(a卷)
- 2026年马鞍山安徽横望控股集团有限公司公开招聘工作人员考试参考试题及答案解析
- 四川省绵阳市梓潼县2026届九年级中考一模语文试卷
- 2026年上海铁路局校园招聘笔试参考题库及答案解析
- 安防监控系统维保表格
- 人教统编版六年级语文下册第二单元《习作:写作品梗概》公开课教学课件
- 2026年3月山东济南轨道交通集团运营有限公司社会招聘备考题库附参考答案详解(典型题)
- 山东省中小学生欺凌调查认定和复查复核程序指引解读
- 2026内蒙古环投集团社会招聘17人笔试备考试题及答案解析
- 2026年高考物理二轮复习:专题16 热学(复习讲义)(全国适用)(原卷版)
- TSG 08-2026 特种设备使用管理规则
评论
0/150
提交评论