以太网控制器ENC28J60编程要点
摘要,在嵌入式系统中~以太控制器通常也是究统点之一~网研公司的MicroChipENC28J60在嵌入式系统中统用价统统高~统芯片集成了控制器和~使用接口~适合在引脚统源MACPHYSPI比统统统的嵌入式系统中加入以太统接功能~本文主要介统了网公司的控制MicroChipENC28J60器的初始化及其统程相统的注意和要点~统统统统中可能遇到的一些统统统行了探统。并
统统字, 统程 ENC28J60
以太据统网数冲区统写地址控制的相统作用1.(8K)/REG:
注意统些除外都统以太据统地址统网数冲区,REGEPKTCNT16bits,:0000h~1FFFh
分统两个统统器指统冲1).ERDPT(H/L)MCU:
手册统取统据统冲区数每次统统统取的地址由统保存--P28,MCU,REG.
分统两个写冲统统器指统2).EWRPT(H/L)MCU:
手册向统入据统冲区写数每次统统入的地址由统写保存--P29,MCU,REG.
分统两个接收统指统3).ERXRDPT(H/L):
手册定统禁止接收硬件入的写中的位置。 在正常操作中~接收硬件指统接网--P17,P33, FIFO (口方向将数写据统序入~直到所指统元;不包括统统元,。注意统与冲区统放统的空)ERXRDPT ,REG统操作相统.
分统两个接收指统写4).ERXWRPT(H/L):
手册定统接收硬件收到的据入的数写中的具位置。 在正常操作中~接收硬体--P17,P33, FIFO
件指统接口方向网将数写据统序入所指统元。注意统统”只统”且统放统的与冲区()ERXWRPT,REG,空统操作相统.
分统两个统送统起始地址区5).ETXST(H/L):
手册在整以太据统中个网数冲区定统待统送据的首地址 数区--P17,,
分统两个统送统统束地址区6).ETXND(H/L):
手册在整以太据统中个网数冲区定统待统送据的尾地址 数区--P17,,
分统两个接收统起始地址区7).ERXST(H/L):
手册在整以太据统中个网数冲区定统接收硬件可以入据的统首地址写数冲区--P17, ,.
分统两个接收统统束地址区8).ERXND(H/L):
手册在整以太据统中个网数冲区定统接收硬件可以入据的统尾地址写数冲区--P17, ,.
以太据包统器网数数9).EPKTCNT(8bits):
手册当硬件允统的统候每次收统一以太据包个网数统最大--P43,P45,,(>64bytes),EPKTCNT+1,统统此统不统统是否统有空统也不再接收据冲数每次前移即冲区统放接收统操作255,.ERXRDPT()后最小统统,EPKTCNT-1,0.
注意在以上个中名中统有”称的统定的地址都是统以太接收器使用的网即从网以太:9REG,X”(:一统统统统存只有和是通统接口统统统用的冲区统统的统系如下统8K),ERDPTEWRPTMCUSPI8K.:
其中 和 可以指向同一地址统统接收统会从ERXWRPTERXRDPT,ENC28J60ERXWRPT指向的地址一直到写指向的地址前一空统个即册手所统的”不包括指向ERXRDPT(ERXRDPT的统元”此统整接收统全部可用个冲区空统中统统用统行统送统的空统由寄存器统来冲和)..8K,ETXST
确定统统用统行接受统的空统由寄存器统来冲和确定统然空统中可以多ETXND,ERXSTERXND.,8K余一些什统也不用的位置.
和寄存器的操作2.MIIPHY:
寄存器统统统接口的配置不能直接从接口统统统些但是主控可以通统PHYPHY,MCUSPIREG,MAC统的一统特殊控制来统统控制寄存器统中的统些特殊的控制即称统接口寄存REGPHY,MACREGMII器.
统而言不有直接统统会的可能所有的操作都必统统统寄存器完成来统需注MCU,PHY,PHYMII.意有部分统写写入的统候必统先低当写入高的统候控制的统定立起效将即,PHY16bits,8bits,8bits.
控制器统和初始化统程构 3.
初始化的统程统统是:
初始化统初始化统通统初始化统需要统统硬ETHREG--->MACREG--->MIIPHYREG(
件统定)
统控制寄存器初始化 Step1:ETH
初始化 1).EIE
手册以太中允统控制 网断--P67,
主控写控制统出地址数据统SPIREG(WCR),2byte,REG0h1b,:
统统据数0b010\11011+0bAAAAAAAA(A--8bits)
统统 2). EIR
手册以太中统统取 网断状--P68,
主控统控制统出地址数据统SPIREG(RCR),2byte, REG0h1C,:
统了保持统出的无效数0b010\11100+0bXXXXXXXX(X—SPCK) 统取的有效据在数统送的第二有效字统返回个SPI.
统统 3).ESTAT
手册统得就统统状以及以太的各统统统统网状--P66,PHY()
主控统控制统出地址数据统SPIREG(RCR),2byte, REG0h1D,:
统了保持统出的无效数0b010\11101+0bXXXXXXXX(X—SPCK) 统取的有效据在数统送的第二有效字统返回个SPI.
初始化 4).ECON2
手册统能控制数据包指统寄存器控制 --P16,IC,
主控写控制统出地址数据统SPIREG(WCR),2byte,REG0h1E,:
统统据数0b010\11110+0bAAAAAAAA(A--8bits)
初始化 5).ECON1
手册特统注意其中统的统统位写不同的控制需要多次改统的统统--P15,BANK0~3,REGBank0~3.
手册统能控制数据包指统寄存器控制 --P16,IC,
主控写控制统出地址数据统SPIREG(WCR),2byte,REG0h1F,:
统统据数0b010\11111+0bAAAAAAAA(A--8bits)
接收统统器初始化 6).ERXFCON
手册--P48,
首先需要写统统统统此后 ECON1,Bank1,
主控写控制统出地址数据统SPIREG(WCR),2byte,REG0h18,:
统统据数0b010\11000+0bAAAAAAAA(A--8bits)
统地址寄存器初始化 Step2:ETH
寄存器统和就位 1).ETXSTETXND
定统统送统范统 冲区--
ETXSTL/H
主控写控制统出地址数据统SPIREG(WCR),4byte,REG0h04(L),0h05(H),:
统统据数0b010\00100+0bAAAAAAAA(A--8bits,ETXSTL)
统统据数0b010\00101+0bAAAAAAAA(A--8bits,ETXSTH) ETXNDL/H
主控写控制统出地址数据统SPIREG(WCR),4byte,REG0h06(L),0h07(H),:
统统据数0b010\00110+0bAAAAAAAA(A--8bits,ETXNDL)
统统据数0b010\00111+0bAAAAAAAA(A--8bits,ETXNDH)
寄存器统和就位 2). ERXSTERXND
定统接收统范统 冲区--
ERXSTL/H
主控写控制统出地址数据统SPIREG(WCR),4byte,REG0h08(L),0h09(H),:
统统据数0b010\01000+0bAAAAAAAA(A--8bits,ERXSTL)
统统据数0b010\01001+0bAAAAAAAA(A--8bits,ERXSTH) ERXNDL/H
主控写控制统出地址数据统SPIREG(WCR),4byte,REG0h0a(L),0h0b(H),:
统统据数0b010\01010+0bAAAAAAAA(A--8bits,ERXNDL)
统统据数0b010\01011+0bAAAAAAAA(A--8bits,ERXNDH)
和 就位 3). ERXWRPTERXRDPT
注意其范统要统用中定统的据统的大小统化随数且每次统理完接收以后要操作统放空统--,ERXRDPT. ERXWRPTL/H
主控写控制统出地址数据统SPIREG(WCR),4byte,REG0h0C(L),0h0D(H),:
统统据数0b010\01100+0bAAAAAAAA(A--8bits, ERXRDPTL)
统统据数0b010\01101+0bAAAAAAAA(A--8bits, ERXRDPTH) 注意初始化统一般取等于:, ERXWRPTL/HERXSTL/H
ERXRDPTL/H
主控写控制统出地址数据统SPIREG(WCR),4byte,REG0h0E(L),0h0F(H),:
统统据数0b010\01110+0bAAAAAAAA(A--8bits, ERXRDPTL)
统统据数0b010\01111+0bAAAAAAAA(A--8bits, ERXRDPTH)
注意与的差统统统大于个网数以太据统的统度如果: ERXRDPTERXWRPT1,
统整接收统可以统统使用个冲区ERXRDPT=ERXWRPT.
根据从网数以太接收据的需要就位 4).MCU,ERDPT
ERDPTL/H
主控写控制统出地址数据统SPIREG(WCR),4byte,REG0h00(L),0h01(H),:
统统据数0b010\00000+0bAAAAAAAA(A--8bits,ERDPTL)
统统据数0b010\00001+0bAAAAAAAA(A--8bits,ERDPTH) 根据向以太统送据的需要网数就位 5).MCU,EWRPT
EWRPTL/H
主控写控制统出地址数据统SPIREG(WCR),4byte,REG0h02(L),0h03(H),:
统统据数0b010\00010+0bAAAAAAAA(A--8bits,EWRPTL)
统统据数0b010\00011+0bAAAAAAAA(A--8bits,EWRPTH)
统寄存器初始化 Step3:MAC
注意统寄存器映射在统统前需要统整中的(:MACBank2/3,ECON1BSEL0/1) 如果初始化统生在上统统位之后初始化前必统统统手册,ESTAT.CLKRDY(P33)
寄存器的初始化统序不重要一般按照手册统明的统序MAC,(P34):
位清初始化退出1).MACON2.MARST0—MAC.
主控写控制统出地址数据统SPIREG(WCR),2byte,REG0h01(Bank2):
统统据数0b010\00001+0bAAAAAAAA(A--8bits)
初始化 2).MACON1
位置使能接收--MARXEN1MAC.
启双统全工方式和位置--,TXPAUSRXPAUS1.
主控写控制统出地址数据统SPIREG(WCR),2byte,REG0h00(Bank2):
统统据数0b010\00000+0bAAAAAAAA(A--8bits)
初始化 3).MACON3
将和位置使能统自统充填使能自统生成要注意其中--PADCFG.TXCRCEN.FULDPX1,,CRC.(
位的使用FRMLNEN).
主控写控制统出地址数据统SPIREG(WCR),2byte,REG0h02(Bank2):
统统据数0b010\00010+0bAAAAAAAA(A--8bits)
一般保持默统统 4).MACON4
分统两部分就位 5).MAMXFL(16bitsREG,H/L)
确网数定统统的最大字统统定统统用中的统统度都统--(64bytes). 主控写控制统出地址数据统SPIREG(WCR),4byte,REG(Bank2)0h0A(L),0h0B(H),:
统统据数0b010\01010+0bAAAAAAAA(A--8bits, MAMXFLL)
统统据数0b010\01011+0bAAAAAAAA(A--8bits, MAMXFLH)
就位 6).MABBIPG
背统背包统统统隔就位全工统置入统固定统双--,15h
主控写控制统出地址数据统SPIREG(WCR),2byte,REG0h04(Bank2): 0b010\00100+0b00010101
就位 7).MAIPGL
非背统背包统统统隔就位全工统置入统固定统双和--, 12h(L)0Ch(H) 主控写控制统出地址SPIREG(WCR),4byte,REG(Bank2) 0h06(L)0h07(H)
数据统:
0b010\00110+0b00010010(MAIPGLL) 0b010\00111+0b00001100(MAIPGLH) 注意正常使用统统统采用全工方式双此统可保持默统统 :,,MACLCON1/2
地址就位映射在8).MAC(Bank3)
将字统的地址入寄存器统写--6MAC:MAADR0~MAADR5. 主控写控制统出地址数据统SPIREG(WCR),6byte,REG(Bank3) 0h00~0h05:
统统据数0b010\00000+0bAAAAAAAA(A--8bits,MAADR1)
统统据数0b010\00001+0bAAAAAAAA(A--8bits,MAADR0)
统统据数0b010\00010+0bAAAAAAAA(A--8bits,MAADR3)
统统据数0b010\00011+0bAAAAAAAA(A--8bits,MAADR2)
统统据数0b010\00100+0bAAAAAAAA(A--8bits,MAADR5)
统统据数0b010\00101+0bAAAAAAAA(A--8bits,MAADR4)
统寄存器初始化 Step4:PHY
注意如果初始化统生在上统统位之后初始化前必统统统手册: ,ESTAT.CLKRDY(P33) 注意统寄存器的接口映射在统统前需要统整中的(:PHYMIIREGBank2,ECON1BSEL0/1)
与相统的寄存器共有个分统是PHYMII6:
手册控制MICON—P21,MIIREG
手册命令MICMD—P21,MIIREG
手册统统地址MIREGADR—P19,PHYREG
手册写数据高低注意统统必统先入写再入写写入会触统MIWRL/H—P19,PHYREG/,,REGLH,H
控制事件MII.
手册统据数高低在统之前统将的位置统统可以统触MIRDL/H—P19,PHYREG/.MICMDMIIRD1,
事件且使当统得了统以后不自统会清所以在统统PHYMISTAT.BUSY=1,MIIPHY,MIIRD0.
以后要手统清MISTAT.BUSY=00.
手册状统反映的统状在统写之前统统先统统此当MISTAT—P22,MIIREG,PHY,/PHYREG
统才可以统行操作MISTAT.BUSY=0.
根据手册一般只需要配置个模统且要统统并的工作统 状P38,3PHYPHY
的手统操作 1).PHCON1
统然可以通统外接的方式定半工确双全工方式双但是手工统置位的统--LED/,PHCON1.PDPXMD是更加安全的
同统也要手工修改中的位,MACON3FULDPX.
地址通统操作统
在手册--PHY00h,MII,P19
主控写控制统出统个SPIREG(WCR),2byte*3,MIREGADR,MIWRL/H 3REG 地址数据统(Bank2)0h14(MIREGADR),0h16(MIWRL),0h17(MIWRH),:
字统的地址字统写入的地址0b010\10100+0b00000000(1—MIREGADR,2—PHCON100h)
字统的地址字统写入的统0b010\10110+0bAAAAAAAA(1—MIREGADR, 2—MIWRL8bits统据数—字统统统是入写的统统统LPHCON1)
字统的地址字统写入的统统0b010\10111+0b00000000(1—MIREGADR, 2—MIWRH8bits数据在统里统出的据无效数统统触事件,,PHY).
写入后自统统触事件自统置,MIIPHY,MISTAT.BUSY1.
的统置 2).PHLCON
根据外统统路的统统统构有可能要修改统个--LED,REG.
地址通统操作统流程在手册--PHY00h,MII,P19
主控写控制统出统个SPIREG(WCR),2byte*3,MIREGADR,MIWRL/H 3REG 地址数据统(Bank2)0h14(MIREGADR),0h16(MIWRL),0h17(MIWRH),:
字统的地址字统写入的地址0b010\10100+0b00010100(1—MIREGADR,2—PHLCON14h)
字统的地址字统写入的统0b010\10110+0bAAAAAAAA(1—MIREGADR, 2—MIWRL8bits统据数—字统统统是入写的统统统LPHLCON)
字统的地址字统写入的统统0b010\10111+0b00000000(1—MIREGADR, 2—MIWRH8bits数据在统里统出的据无效数统统触事件,,PHY).
写入后自统统触事件自统置,MIIPHY,MISTAT.BUSY1.
的统置 3).PHCON2
一般全工统统可以保持其默统统双状但是注意其中的位可以统统的硬件统送--,TXDISPHY. 主控写控制统出统个SPIREG(WCR),2byte*3,MIREGADR,MIWRL/H 3REG 地址数据统(Bank2)0h14(MIREGADR),0h16(MIWRL),0h17(MIWRH),:
字统的地址字统写入的地址0b010\10100+0b00000000(1—MIREGADR,2—PHCON211h)
字统的地址字统写入的统0b010\10110+0bAAAAAAAA(1—MIREGADR, 2—MIWRL8bits统据数—字统统统是入写的统统统LPHCON2)
字统的地址字统写入的统统0b010\10111+0b00000000(1—MIREGADR, 2—MIWRH8bits数据在统里统出的据无效数统统触事件,,PHY).
写入后自统统触事件自统置,MIIPHY,MISTAT.BUSY1.
特统注意寄存器不能直接统统需要通统寄存器的统接操作:PHY,MII.
统统状统 4).MISTAT
主控统控制统出地址数据统--SPIREG(RCR),3byte, REG0h0A(Bank3),:
统了保持统出的无效数0b010\01010+0bXXXXXXXX+0bXXXXXXXX(X—SPCK)
统取的有效据在数统送的第三有效字统返回个SPI.