版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Enc28j60以太網(wǎng)芯片驅(qū)動(dòng)程序簡介本介紹可分為三塊內(nèi)容:1.以太網(wǎng)數(shù)據(jù)幀結(jié)構(gòu)符合IEEE802.3標(biāo)準(zhǔn)的以太網(wǎng)幀的長度是介于64-1516字節(jié)之間。主要由目標(biāo)MAC地址、源MAC地址、類型/長度字段、數(shù)據(jù)有效負(fù)載、可選填充字段和循環(huán)冗余校驗(yàn)組成,另外在通過以太網(wǎng)介質(zhì)發(fā)送數(shù)據(jù)包時(shí),一個(gè)7字節(jié)的前導(dǎo)字段和一字節(jié)的幀起始定界符被附加到以其次,在數(shù)據(jù)字段處:以太網(wǎng)數(shù)據(jù)字段的長度可以在0-1500字節(jié)之間變換,超過這一范圍的數(shù)據(jù)包是違反以太網(wǎng)標(biāo)準(zhǔn)的,這些包將會(huì)被大多數(shù)以太網(wǎng)節(jié)點(diǎn)丟棄。若設(shè)置ENC28J60的巨大幀使能位為1,可以發(fā)送和接收超大規(guī)格數(shù)據(jù)包。在數(shù)據(jù)域中的填充字段是在數(shù)據(jù)字段小于46字節(jié)時(shí)
2、起填充作用。ENC28J60在發(fā)送數(shù)據(jù)包時(shí),會(huì)自動(dòng)填充0。ENC28J60在接收時(shí)自動(dòng)拒絕小于18字節(jié)的數(shù)據(jù)包。數(shù)據(jù)填充亦可由主控芯片來配置。最后,在CRC處:ENC28J60在接收數(shù)據(jù)包時(shí)將檢查每個(gè)傳入數(shù)據(jù)包的CRC,通過檢測(cè)ERXFCON.CRCEN位來判斷CRC并發(fā)操作碼輸入數(shù)據(jù)包的CRC是否正確。ENC28J60CRC并發(fā)操作碼送它。發(fā)送數(shù)據(jù)包的CRC亦可由主控芯片來提供。2驅(qū)動(dòng)程序介紹ENC28J60的寄存器讀寫規(guī)則由于ENC28J60芯片采用的是SPI串行接口模式,其對(duì)內(nèi)部寄存器讀寫的規(guī)則是先發(fā)前3bit+寄存器地址后5bit,再發(fā)送欲操作數(shù)據(jù)。通過不同操作碼來判別操作時(shí)讀寄存器(
3、緩存區(qū))還是寫寄存器(緩沖區(qū))或是其它。ENC28J60芯片初始化程序ENC28J60發(fā)送和接收數(shù)據(jù)包前必須對(duì)內(nèi)進(jìn)行初始化設(shè)置,通常在復(fù)位后完成,不需再更改。voidenc28j60_init(void)/*Bankl區(qū)相關(guān)寄存器配置SPI操作塊數(shù)據(jù)塊/初始化程序一開始先進(jìn)行軟件復(fù)位,111操作碼+11111參數(shù),N/A/ENC28J60_SOFT_RESET=0 xFFenc28j60WriteOp(ENC28J60_SOFT_RESET,0,ENC28J60_SOFT_RESET);delay_ms(5);/初始化接收緩沖區(qū),設(shè)置接收起始地址NextPacketPtr=RXSTART_IN
4、IT;/讀下一數(shù)據(jù)包指針enc28j60Write(ERXSTL,RXSTART_INIT&0 xFF);enc28j60Write(ERXSTH,RXSTART_INIT8);/設(shè)置接收讀指針指向地址enc28j60Write(ERXRDPTL,RXSTART_INIT&0 xFF);enc28j60Write(ERXRDPTH,RXSTART_INIT8);/設(shè)置接收緩沖區(qū)的末尾地址/ERXND寄存器默認(rèn)指向整個(gè)緩沖區(qū)的最后一個(gè)單元enc28j60Write(ERXNDL,RXSTOP_INIT&0 xFF);enc28j60Write(ERXNDH,RXSTOP_INIT8);/設(shè)置發(fā)送
5、緩沖區(qū)的起始地址/ETXST寄存器默認(rèn)地址是整個(gè)緩沖區(qū)的第一個(gè)單元enc28j60Write(ETXSTL,TXSTART_INIT&0 xFF);enc28j60Write(ETXSTH,TXSTART_INIT8);/*Bank2區(qū)相關(guān)寄存器配置/MAC初始化配置/MAC接收使能,下行程序段表示使能MAC接收,使能IEEE流量控制enc28j60Write(MACON1,MACON1_MARXEN|MACON1_TXPAUS|MACON1_RXPAUS);/MACON2清零,讓MAC退出復(fù)位狀態(tài)enc28j60Write(MACON2,0 x00);/下行程序段表示使能自動(dòng)填充和自動(dòng)CRC
6、添加enc28j60WriteOp(ENC28J60_BIT_FIELD_SET,MACON3,MACON3_PADCFG0|MACON3_TXCRCEN|MACON3_FRMLNEN);/enc28j60Write(MACON3,MACON3_PADCFG0|MACON3_TXCRCEN|MACON3_FRMLNEN);/配置非背對(duì)背包之間的間隔enc28j60Write(MAIPGL,0 x12);enc28j60Write(MAIPGH,0 x0C);/配置背對(duì)背包之間的間隔enc28j60Write(MABBIPG,0 x12);/設(shè)置允許接收或發(fā)送的最大幀長度編程enc28j60Wr
7、ite(MAMXFLL,MAX_FRAMELEN&0 xFF);enc28j60Write(MAMXFLH,MAX_FRAMELEN8);/*Bank3區(qū)相關(guān)寄存器配置/將MAC地址寫入MAADR0-MAADR5寄存器中/NOTE:MACaddressinENC28J60isbyte-backwardenc28j60Write(MAADR5,UIP_ETHADDR0);enc28j60Write(MAADR4,UIP_ETHADDR1);enc28j60Write(MAADR3,UIP_ETHADDR2);enc28j60Write(MAADR2,UIP_ETHADDR3);enc28j60W
8、rite(MAADR1,UIP_ETHADDR4);enc28j60Write(MAADR0,UIP_ETHADDR5);/阻止發(fā)送回路的自動(dòng)環(huán)回enc28j60PhyWrite(PHCON2,PHCON2_HDLDIS);/*Bank0區(qū)相關(guān)寄存器配置enc28j60SetBank(ECONl);/設(shè)置寄存器區(qū)/中斷使能enc28j60WriteOp(ENC28J60_BIT_FIELD_SET,EIE,EIE_INTIE|EIE_PKTIE);/包接收使能enc28j60WriteOp(ENC28J60_BIT_FIELD_SET,ECON1,ECON1_RXEN);說明:enc28j60
9、Write函數(shù)內(nèi)部包含了SetBank設(shè)置寄存器區(qū)子程序,而enc28j60WriteOp直接根據(jù)spi操作碼前3bit+寄存器地址后5bit進(jìn)行操作的。(3)ENC28J60發(fā)送數(shù)據(jù)包程序ENC28J60內(nèi)的MAC在發(fā)送數(shù)據(jù)包時(shí)會(huì)自動(dòng)生成前導(dǎo)符合幀起始定界符。此外,也會(huì)根據(jù)用戶配置以及數(shù)據(jù)具體情況自動(dòng)生成數(shù)據(jù)填充和CRC字段。主控器必須把所有其它要發(fā)送的幀數(shù)據(jù)寫入ENC28J60緩沖存儲(chǔ)器中。另外在待發(fā)送數(shù)據(jù)包前要添加一個(gè)包控制字節(jié)。包控制字節(jié)包括內(nèi)容有:包超大幀使能位(PHUGEEN)、包填充使能位(PPADEN)、包CRC使能位(PCRCEN)和包改寫位(POVERRIDE)四個(gè)內(nèi)容。如
10、圖2所示。voidenc28j60PacketSend(u16_tlen,u8_t*packet)/配置發(fā)送緩沖區(qū)寫指針起始地址enc28j60Write(EWRPTL,TXSTART_INIT);enc28j60Write(EWRPTH,TXSTART_INIT8);/根據(jù)給定數(shù)據(jù)域的大小配置發(fā)送緩沖區(qū)的末尾地址enc28j60Write(ETXNDL,(TXSTART_INIT+len);enc28j60Write(ETXNDH,(TXSTART_INIT+len)8);/給每個(gè)數(shù)據(jù)包的包控制字節(jié)預(yù)留一個(gè)單元enc28j60WriteOp(ENC28J60_WRITE_BUF_MEM,0,
11、0 x00);/TODO,fixthisupif(uip_len8);/下一個(gè)數(shù)據(jù)包的讀指針NextPacketPtr=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0);NextPacketPtr|=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0)8;/讀數(shù)據(jù)包字節(jié)長度len=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0);len|=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0)8;/讀接收數(shù)據(jù)包的狀態(tài)rxstat=enc28j60ReadOp(ENC28J60_READ
12、_BUF_MEM,0);rxstat|=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0)8;/計(jì)算實(shí)際數(shù)據(jù)長度/移除CRC字段的長度來減少M(fèi)AC所報(bào)告長度len=MIN(len,maxlen);/從緩沖區(qū)中將數(shù)據(jù)包復(fù)制到packet中enc28j60ReadBuffer(len,packet);/ERXRDPT讀緩沖器指針/ENC28J60將一直寫到該指針之前的一單元為止u16_trs,re;rs=enc28j60Read(ERXSTH);/ERXST接收緩沖區(qū)的起始地址rs=8;rs|=enc28j60Read(ERXSTL);re=enc28j60Read(E
13、RXNDH);/ERXND0收緩沖區(qū)的末尾地址re=8;re|=enc28j60Read(ERXNDL);if(NextPacketPtr-1re)enc28j60Write(ERXRDPTL,(re);/ERXRDPT接收讀地址enc28j60Write(ERXRDPTH,(re)8);elseenc28j60Write(ERXRDPTL,(NextPacketPtr-1);enc28j60Write(ERXRDPTH,(NextPacketPtr-1)8);/數(shù)據(jù)包個(gè)數(shù)遞減位EPKTCNT減1enc28j60WriteOp(ENC28J60_BIT_FIELD_SET,ECON2,ECON2_PKTDEC);returnlen;前一數(shù)據(jù)包結(jié)束下一個(gè)數(shù)據(jù)包的指針結(jié)構(gòu)1059h106AM10
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年特許經(jīng)營合同:快餐連鎖品牌擴(kuò)展協(xié)議
- 2025年標(biāo)識(shí)牌原材料供應(yīng)與質(zhì)量保障合同3篇
- 2024年田土承包經(jīng)營權(quán)投資合作合同3篇
- 2024某局礦產(chǎn)資源開發(fā)合同
- 美發(fā)知識(shí)培訓(xùn)課件
- 2024橋涵工程人工承包協(xié)議一
- 《模具知識(shí)培訓(xùn)》課件
- 2024年高速公路護(hù)坡工程專項(xiàng)勞務(wù)合作合同版B版
- 中國戲曲學(xué)院《新媒體策劃》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年設(shè)備安裝與維修合同6篇
- 科普產(chǎn)業(yè)發(fā)展現(xiàn)狀調(diào)查報(bào)告
- 2024湖南湘電集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 運(yùn)籌學(xué)講義-運(yùn)籌學(xué)完整講義
- 5.40.49火災(zāi)自動(dòng)報(bào)警系統(tǒng)火災(zāi)顯示盤調(diào)試、檢測(cè)質(zhì)量標(biāo)準(zhǔn)和檢驗(yàn)方法(完)
- 代理商工作總結(jié)
- 戰(zhàn)略管理徐飛版
- 2023浙江省杭州市中考語文真題試卷和答案
- 銀行防詐騙知識(shí)宣傳
- 【實(shí)戰(zhàn)篇】華為IPD流程的應(yīng)用案例
- spa浴按摩是怎么樣的
- 統(tǒng)編版六年級(jí)語文上冊(cè)專項(xiàng) 專題04標(biāo)點(diǎn)符號(hào)及作用-原卷版+解析
評(píng)論
0/150
提交評(píng)論