日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1前言嵌入式以太網(wǎng)開(kāi)發(fā),可以分為兩個(gè)部分,一個(gè)是以太網(wǎng)收發(fā)芯片的使用,一個(gè)是嵌入式以太網(wǎng)協(xié)議棧的實(shí)現(xiàn)。以太網(wǎng)收發(fā)芯片的使用要比串口收發(fā)芯片的使用復(fù)雜的多,市面上流通比較廣泛的以太網(wǎng)收發(fā)芯片種類還不少,有

1前言
嵌入式以太網(wǎng)開(kāi)發(fā),可以分為兩個(gè)部分,一個(gè)是以太網(wǎng)收發(fā)芯片的使用,一個(gè)是嵌入式以太網(wǎng)協(xié)議棧的實(shí)現(xiàn)。以太網(wǎng)收發(fā)芯片的使用要比串口收發(fā)芯片的使用復(fù)雜的多,市面上流通比較廣泛的以太網(wǎng)收發(fā)芯片種類還不少,有SPI接口的ENC28J60,也有并口形式的RTL8019S,CS8900A等。嵌入式以太網(wǎng)協(xié)議棧有著名的uIP協(xié)議棧,Lwip協(xié)議棧,還有其他嵌入式高手開(kāi)發(fā)的協(xié)議棧。無(wú)論是硬件還是軟件,都無(wú)法分出高下,適合項(xiàng)目需求的才是最好的。
1.1 寫(xiě)作理由
在前言的最后,再說(shuō)明一下我寫(xiě)作的理由。以前從淘寶上購(gòu)買(mǎi)過(guò)ENC28J60,店家信誓旦旦地說(shuō)能提供51 AVR LPC STM32等多個(gè)平臺(tái)的代碼,可以實(shí)現(xiàn)一個(gè)網(wǎng)頁(yè)控制LED。頭腦一熱買(mǎi)了回來(lái),買(mǎi)回來(lái)才發(fā)現(xiàn),店家提供的資料零零散散,非常難懂,雖然不貴僅僅需要40多元,現(xiàn)在只需要20多元。但是總感覺(jué)有欺騙的嫌疑,這也可以映射出中國(guó)人做技術(shù)買(mǎi)賣(mài)的原則,產(chǎn)品多是實(shí)物而非服務(wù)。幾經(jīng)周轉(zhuǎn),發(fā)現(xiàn)原來(lái)這些ENC28J60的代碼都出自一個(gè)地方——AVRNET,源自老外的一個(gè)開(kāi)源項(xiàng)目。把最原始的代碼拿來(lái)細(xì)細(xì)品味,以太網(wǎng)協(xié)議就不那么神秘了。在這里說(shuō)一下ENC28J60的使用,熟悉了ENC28J60的驅(qū)動(dòng)可以分幾步走。第一步,通過(guò)ENC28J60移植uIP或者lwIP協(xié)議棧,實(shí)現(xiàn)TCP或是UDP通信,第二,順著AVRNET項(xiàng)目走,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web服務(wù)器,運(yùn)行靜態(tài)或者動(dòng)態(tài)網(wǎng)頁(yè)。嵌入式以太網(wǎng)和計(jì)算機(jī)以太網(wǎng)開(kāi)發(fā)不同,對(duì)于TCP通信而言沒(méi)有windwos socke用,對(duì)于網(wǎng)頁(yè)編程而言也沒(méi)有ISS或PHP,所示實(shí)現(xiàn)起來(lái)會(huì)比較麻煩,但是也非常有樂(lè)趣。
1.2 平臺(tái)說(shuō)明
硬件平臺(tái) Atmega32 + proteus 7.10+WinPcap
編譯平臺(tái) AVR Studio 6
關(guān)于硬件平臺(tái),由于AVRNET項(xiàng)目采用ATmega32,分析的時(shí)候也采用Atmega32。就ENC28J60而言,對(duì)于其他的平臺(tái),例如STM32或是MSP而言只需要修改SPI操作即可。由于沒(méi)有硬件平臺(tái),所以使用proteus仿真,注意仿真以太網(wǎng)是proteus需要安裝WinPcap。
關(guān)于編譯平臺(tái),AVRNET項(xiàng)目使用的是AVR Stdui 4.XX。這個(gè)版本稍顯老舊,我就進(jìn)行了相關(guān)修改,在AVR Studio 6中重新編譯,并修正了幾個(gè)錯(cuò)誤。當(dāng)然其他的編譯平臺(tái)也適用。
總結(jié)一句,平臺(tái)選用原則——“求同存異”。
1.3 資料準(zhǔn)備
以太網(wǎng)開(kāi)發(fā)是非常復(fù)雜的工作,在開(kāi)始之前最好先大致瀏覽一些ENC28J60的使用手冊(cè),MICROCHIP可以下載,中文版本閱讀非常方便。除此之外,需要認(rèn)真閱讀TCP IP相關(guān)知識(shí),推薦一本圖書(shū)《嵌入式Internet TCP/IP基礎(chǔ)、實(shí)現(xiàn)和應(yīng)用》。
嵌入式開(kāi)發(fā)總是一個(gè)反復(fù)借鑒的過(guò)程。該部分代碼參考了AVRNET項(xiàng)目和奮斗開(kāi)發(fā)板的相關(guān)范例。AVRNET項(xiàng)目網(wǎng)址鏈接http://www.avrportal.com/?page=avrnet。
2寄存器和寄存器操作

ENC28J60的寄存器很多,操作這些寄存器需要一個(gè)良好的代碼組織工作。在AVRNET項(xiàng)目中,把ENC28J60的驅(qū)動(dòng)分解成ENC28J60.h文件和ENC28J60.c文件。H文件中主要描述ENC28J60寄存器的基本定義,而C文件主要實(shí)現(xiàn)了這些寄存器的操作。

2.1寄存器定義

首先分析一下ENC28J60頭文件。閱讀數(shù)據(jù)手冊(cè)之后,會(huì)發(fā)現(xiàn)ENC28J60寄存器數(shù)量較多,通過(guò)分析和整理,操作ENC28J60的寄存器需要注意以下3點(diǎn)。

(1) 共有三種不同形式的寄存器——控制寄存器,以太網(wǎng)寄存器和PHY寄存器,不同的寄存器以不同的字母開(kāi)頭,以E、MA和MI加以區(qū)分。操作這三種不同的寄存器需要不同的組合命令。

(2) 寄存器被分布在4個(gè)不同的bank中,也就是說(shuō)存在地址相同的寄存器,但是這些寄存器卻位于不同的分區(qū)中,在操作寄存器之前必須選中正確的bank。

(3)雖然存在4個(gè)bank,但是有5個(gè)寄存器在4個(gè)bank的位置相同,它們是EIE、EIR、ESTAT、ECON1、ECON2。不言而喻,這5個(gè)寄存器將會(huì)非常重要。

AVRNET項(xiàng)目中,寄存器被定義成8位長(zhǎng)度,而這8位長(zhǎng)度包含了三個(gè)部分,地址bit7(最高位)用以區(qū)分PHY和MAC寄存器;地址bit6和bit5用以區(qū)分BANK,2位空間正好區(qū)分4個(gè)BANK;地址的最后5位才是寄存器的地址。通過(guò)這種方式就可以區(qū)分所有的寄存器了。列舉了幾行代碼。由于頭文件很長(zhǎng),所以不全部列出。

// bank0寄存器

#defineERDPTL (0x00|0x00)

#defineERDPTH (0x01|0x00)

#defineEWRPTL (0x02|0x00)

// bank1寄存器

#defineEHT0 (0x00|0x20)

#defineEHT1 (0x01|0x20)

#defineEHT2 (0x02|0x20)

// bank2寄存器

#defineMACON1 (0x00|0x40|0x80)

#defineMACON2 (0x01|0x40|0x80)

#defineMACON3 (0x02|0x40|0x80)

//bank3寄存器

#defineMAADR1 (0x00|0x60|0x80)

#defineMAADR0 (0x01|0x60|0x80)

#defineMAADR3 (0x02|0x60|0x80)

例如ERDPTH為位于BANK0的以太網(wǎng)寄存器,第一個(gè)數(shù)字0x01代表BANK0中的地址,該地址為0x01,第二個(gè)數(shù)字0x00代表BANK編號(hào),該編號(hào)為0,意味第0個(gè)BANK;EHT1為位于BANK1中的控制寄存器,第二個(gè)0x20代表BANK地址為1,請(qǐng)注意由于BANK編號(hào)被保存在bit6和bit5,所以此處為0x20,絕不是0x10;MACON2為位于bank2的以太網(wǎng)寄存器,第一個(gè)數(shù)字0x01代表在該BANK中的寄存器地址,第二個(gè)數(shù)字0x40代表BANK編號(hào),而第三個(gè)數(shù)字0x80代表該寄存器為以太網(wǎng)寄存器或是PHY寄存器,這些寄存器的操作和控制寄存器有區(qū)別。

為了方便寄存器操作,h文件中還定義了寄存器地址操作的掩碼,簡(jiǎn)單而言就是需要查看哪些位,不需要查看哪些位。

/*寄存器地址掩碼*/

#defineADDR_MASK 0x1F

/*存儲(chǔ)區(qū)域掩碼*/

#defineBANK_MASK 0x60

/* MAC和MII寄存器掩碼*/

#defineSPRD_MASK 0x80

另外還有比較特殊的5個(gè)控制寄存器,EIE,EIR,ESTAT,ECON2和ECON1

/*關(guān)鍵寄存器*/

#defineEIE 0x1B

#defineEIR 0x1C

#defineESTAT 0x1D

#defineECON2 0x1E

#defineECON1 0x1F

2.2寄存器操作命令

寄存器操作命令也可稱為寄存器操作碼。為了實(shí)現(xiàn)寄存器的操作,ENC28J60定義了6+1個(gè)寄存器操作命令(操作碼)。操作相關(guān)寄存器至少有讀寄存器命令,寫(xiě)寄存器命令;發(fā)送或接收以太網(wǎng)數(shù)據(jù)則必有寫(xiě)緩沖區(qū)命令或讀緩沖區(qū)命令;為了加快操作,對(duì)于某些控制寄存器而言還可以有置位或者清零某位的命令;最后加上一個(gè)軟件復(fù)位命令,錦上添花。

/* 讀控制寄存器 */

#define ENC28J60_READ_CTRL_REG 0x00

/* 讀緩沖區(qū) */

#define ENC28J60_READ_BUF_MEM 0x3A

/* 寫(xiě)控制寄存器 */

#define ENC28J60_WRITE_CTRL_REG 0x40

/* 寫(xiě)緩沖區(qū) */

#define ENC28J60_WRITE_BUF_MEM 0x7A

/* 位域置位 */

#define ENC28J60_BIT_FIELD_SET 0x80

/* 位域清零 */

#define ENC28J60_BIT_FIELD_CLR 0xA0

/* 系統(tǒng)復(fù)位 */

#define ENC28J60_SOFT_RESET 0xFF

復(fù)制代碼

2.3接收和發(fā)送緩沖區(qū)分配

以太網(wǎng)數(shù)據(jù)的接收和發(fā)送離不開(kāi)驅(qū)動(dòng)芯片內(nèi)部的RAM,也可稱之為硬件緩沖區(qū)。ENC28J60包括8K的硬件緩沖區(qū),該硬件緩沖區(qū)一部分被接收緩沖區(qū)使用,另一部分為發(fā)送緩沖區(qū)使用。操作ENC28J60的最終目的為操作該硬件緩沖區(qū)。執(zhí)行以太網(wǎng)發(fā)送命令時(shí),向發(fā)送緩沖區(qū)中填充數(shù)據(jù),并觸發(fā)相關(guān)寄存器發(fā)送以太網(wǎng)數(shù)據(jù);執(zhí)行以太網(wǎng)接收命令時(shí),通過(guò)查詢相關(guān)寄存器或者外部中斷的方式獲得以太網(wǎng)數(shù)據(jù)輸入事件,接著從接收緩沖區(qū)中讀取相關(guān)數(shù)據(jù)。

(1) 把緩沖區(qū)劃分為兩個(gè)部分。把8K的硬件緩沖區(qū)劃分為兩個(gè)部分至少需要四個(gè)參數(shù),接收緩沖區(qū)需要一個(gè)起始地址和一個(gè)結(jié)束地址加以描述,發(fā)送緩沖區(qū)也需要一個(gè)起始地址和一個(gè)結(jié)束地址加以描述。最理想的方式,兩個(gè)緩沖區(qū)完全占據(jù)

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

Sept. 10, 2025 ---- 根據(jù)TrendForce集邦咨詢最新發(fā)布的《全球電動(dòng)車(chē)逆變器市場(chǎng)數(shù)據(jù)》,2025年第二季受惠純電動(dòng)車(chē)(BEV)銷售成長(zhǎng),全球電動(dòng)車(chē)(注1)牽引逆變器裝機(jī)量達(dá)766萬(wàn)臺(tái),年增19%。...

關(guān)鍵字: 增程式電動(dòng)車(chē) SiC 牽引逆變器

Sept. 8, 2025 ---- 根據(jù)TrendForce集邦咨詢最新調(diào)查,2025年第二季NVIDIA(英偉達(dá)) Blackwell平臺(tái)規(guī)?;鲐?,以及北美CSP業(yè)者持續(xù)擴(kuò)大布局General Server(通用型...

關(guān)鍵字: SSD DDR4 服務(wù)器

Sept. 4, 2025 ---- Apple(蘋(píng)果)即將發(fā)布iPhone 17、iPhone 17 Air(暫名)、iPhone 17 Pro及Pro Max四款旗艦新機(jī),除了外觀辨識(shí)度升級(jí),處理器性能、散熱和拍攝功...

關(guān)鍵字: iPhone 16 A19處理器 折疊機(jī)

Sept. 3, 2025 ---- 根據(jù)TrendForce集邦咨詢最新發(fā)布的《2025近眼顯示市場(chǎng)趨勢(shì)與技術(shù)分析》報(bào)告,2025年隨著國(guó)際品牌陸續(xù)推出AR眼鏡原型,以及Meta預(yù)計(jì)在近期發(fā)布AR眼鏡Celeste,市...

關(guān)鍵字: AR眼鏡 OLED

Sept. 2, 2025 ---- TrendForce集邦咨詢表示,2025年第二季DRAM產(chǎn)業(yè)因一般型DRAM (Conventional DRAM)合約價(jià)上漲、出貨量顯著增長(zhǎng),加上HBM出貨規(guī)模擴(kuò)張,整體營(yíng)收為3...

關(guān)鍵字: DRAM 智能手機(jī) ASP

Sept. 1, 2025 ---- 根據(jù)TrendForce集邦咨詢最新調(diào)查,2025年第二季因中國(guó)市場(chǎng)消費(fèi)補(bǔ)貼引發(fā)的提前備貨效應(yīng),以及下半年智能手機(jī)、筆電/PC、Server新品所需帶動(dòng),整體晶圓代工產(chǎn)能利用率與出貨...

關(guān)鍵字: 晶圓代工 智能手機(jī) 筆電

Aug. 28, 2025 ---- 根據(jù)TrendForce集邦咨詢最新調(diào)查,2025年第二季NAND Flash產(chǎn)業(yè)雖面臨平均銷售價(jià)格(ASP)小幅下滑,所幸原廠減產(chǎn)策略緩解供需失衡,疊加中、美兩大市場(chǎng)政策推動(dòng),整體...

關(guān)鍵字: NAND Flash SSD AI

Aug. 26, 2025 ---- NVIDIA(英偉達(dá))近日推出的Jetson Thor被視為機(jī)器人的物理智慧核心,以Blackwell GPU、128 GB記憶體堆疊出2070 FP4 TFLOPS AI算力,是前...

關(guān)鍵字: 機(jī)器人 大型語(yǔ)言模型 AI算力

Aug. 21, 2025 ---- 根據(jù)TrendForce集邦咨詢最新液冷產(chǎn)業(yè)研究,隨著NVIDIA GB200 NVL72機(jī)柜式服務(wù)器于2025年放量出貨,云端業(yè)者加速升級(jí)AI數(shù)據(jù)中心架構(gòu),促使液冷技術(shù)從早期試點(diǎn)邁...

關(guān)鍵字: AI 數(shù)據(jù)中心 服務(wù)器

除了充電電路外,鋰電池的放電過(guò)程也需要保護(hù)。鋰電池的放電電壓不能低于3.0V,否則電池壽命會(huì)大幅縮短。為了實(shí)現(xiàn)這一保護(hù),工程師們?cè)O(shè)計(jì)了DW01芯片與8205 MOS管的電路組合。DW01芯片能夠監(jiān)控鋰電池的放電電壓和電流...

關(guān)鍵字: 鋰電池 電池
關(guān)閉