freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于嵌入式系統(tǒng)網(wǎng)卡驅(qū)動(dòng)的實(shí)現(xiàn)大學(xué)論文(編輯修改稿)

2025-07-19 02:20 本頁面
 

【文章內(nèi)容簡介】 始化接收緩沖器:在接收數(shù)據(jù)包前,必須編程ERXST和ERXND指針來對(duì)接收緩沖器進(jìn)行初始化;12所有未被用作接收緩沖器的存儲(chǔ)空間都作為發(fā)送緩沖器。要發(fā)送的數(shù)據(jù)應(yīng)寫入未使用的空間。但在發(fā)送完一個(gè)數(shù)據(jù)包后,硬件會(huì)在存儲(chǔ)器中數(shù)據(jù)包最后一個(gè)字節(jié)后寫入一個(gè)7字節(jié)的狀態(tài)向量。因此主控制器應(yīng)在接收緩沖器的開始和每個(gè)包之間預(yù)留至少7個(gè)字節(jié)。不需要對(duì)發(fā)送緩沖器進(jìn)行特定的初始化。初始化發(fā)送緩沖器:應(yīng)通過寫ERXFCON寄存器使能或禁止相應(yīng)的接收過濾器。初始化等待OS:如果在上電復(fù)位后立即執(zhí)行初始化,確保在開始修改MAC和PHY寄存器前已經(jīng)過足夠的時(shí)間。初始化MAC:在初始化過程中需要配置一些MAC寄存器。這些寄存器只需配置一次。初始化PHY:對(duì)3個(gè)PHY模塊寄存器中的位進(jìn)行配置,已實(shí)現(xiàn)不同功能。讀PHY 寄存器讀PHY 寄存器可以獲取其完整的16 位值。主要的操作步驟如下:1. 將要讀取的PHY 寄存器的地址寫入MIREGADR寄存器;2. 置1 開始讀操作, 位置1。3. 236。s。 位以確定操作是否完成。 當(dāng)忙時(shí),主控制器不應(yīng)開始任何MIISCAN 操作或?qū)慚IWRH 寄存器。當(dāng)MAC 得到寄存器內(nèi)容時(shí),BUSY 位會(huì)自動(dòng)清零;4. 位清零;5. 從MIRDL 和MIRDH 寄存器中讀取所需數(shù)據(jù)。先讀哪一個(gè)寄存器都可以。寫PHY 寄存器當(dāng)寫PHY 寄存器時(shí),將一次寫入全部的16 位數(shù)據(jù),不能對(duì)位進(jìn)行寫操作。 如果只需要重新編程寄存器中的某幾位,控制器必須首先讀PHY 寄存器,修改讀到的數(shù)據(jù),然后將數(shù)據(jù)寫回PHY 寄存器。主要的操作步驟如下:1. 將要寫入的PHY 寄存器的地址寫入MIREGADR寄存器。2. 將數(shù)據(jù)的低8 位寫入MIWRL 寄存器。3. 將數(shù)據(jù)的高8位寫入MIWRH寄存器。 對(duì)MIWRH寄存器的寫操作會(huì)自動(dòng)啟動(dòng)MII 事務(wù),所以必須在寫入MIWRL 后才能寫入該寄存器。 位置1。在MII 操作完成后寫PHY 寄存器, 236。s。當(dāng)寫操作完成后,BUSY 位將自動(dòng)清零。 在忙時(shí)主控制器不應(yīng)開始MIISCAN 或MIIRD 操作。讀緩沖存儲(chǔ)器命令讀緩沖存儲(chǔ)器(Read Buffer Memory,RBM)命令允許主控制器從8 KB 發(fā)送和接收緩沖存儲(chǔ)器中讀取字節(jié)。如果ECON2 寄存器中的AUTOINC 位置1,那么在讀完每個(gè)字節(jié)的最后一位之后, ERDPT 指針將會(huì)自動(dòng)地遞增指向下一個(gè)地址。 正常情況下下一個(gè)地址為當(dāng)前地址加1。 然而,如果讀取了接收緩沖器中的最后一個(gè)字節(jié)(ERDPT = ERXND),則ERDPT 指針將轉(zhuǎn)而指向接收緩沖器的起始單元。 這樣主控制器可以從接收緩沖器中連續(xù)讀取數(shù)據(jù)包,而無須跟蹤何時(shí)需要折回。當(dāng)讀取地址1FFFh 時(shí), 如果AUTOINC 被置1,且ERXND沒有指向該地址時(shí),則讀指針將遞增并折回到0000h。具體的步驟如下:1. 將CS 引腳拉為低電平啟動(dòng)RBM 命令;2. 將RBM 操作碼及隨后的5 位常量1Ah 發(fā)送給ENC28J60;3. 讀出緩沖存儲(chǔ)器中的數(shù)據(jù),在發(fā)送 RBM 命令和常量后,由ERDPT 指向的存儲(chǔ)器中的數(shù)據(jù)將從SO 引腳移出,首先移出最高位。 如果主控制器繼續(xù)在SCK 引腳提供時(shí)鐘信號(hào),而沒有拉高CS 的電平,ERDPT 指向的字節(jié)將再次從SO 引腳移出,同樣首先移出最高位。當(dāng)AUTOINC 被使能時(shí),使用該方式就可以連續(xù)地從緩沖存儲(chǔ)器中順序讀取字節(jié)而無需多余的SPI 命令。拉高CS 引腳電平可以結(jié)束RBM 命令。寫緩沖器命令寫緩沖存儲(chǔ)器(Write Buffer Memory, WBM)命令允許主控制器將字節(jié)寫入 8KB 發(fā)送和接收緩沖存儲(chǔ)器。如果ECON2 寄存器中的AUTOINC 位置1,那么在寫完每個(gè)字節(jié)的最后一位之后,EWRPT 指針將會(huì)自動(dòng)地遞增指向下一個(gè)地址(當(dāng)前地址加1)。 如果寫入地址1FFF 且AUTOINC 置1,則寫指針加1 指向0000h。具體的步驟如下:1. 將CS 引腳拉為低電平啟動(dòng)WBM 命令;2. 將WBM操作碼及隨后的5 位常量1Ah 送入ENC28J60;3. 把要寫進(jìn)緩沖區(qū)的數(shù)據(jù)送到發(fā)送寄存器中;在發(fā)送WBM 命令和常量之后,EWRPT 指向的存儲(chǔ)器中的數(shù)據(jù)將移入ENC28J60,首先移入最高位。 在接收到8個(gè)數(shù)據(jù)位后,如果AUTOINC 置1,寫指針將自動(dòng)遞增。主控制器可以繼續(xù)在SCK 引腳提供時(shí)種信號(hào)、在SI 引腳發(fā)送數(shù)據(jù)同時(shí)保持CS 為低電平,從而可以連續(xù)寫入存儲(chǔ)器。 當(dāng)AUTOINC 被使能時(shí),以該方式就可以連續(xù)地向緩沖存儲(chǔ)器寫入字節(jié)而無需多余的SPI 命令。4. 拉高CS 引腳電平可以結(jié)束RBM 命令。讀控制寄存器的命令讀控制寄存器(Read Control Register,RCR)命令允許主控制器隨意讀取ETH、MAC 和MII 寄存器。通過特殊的MII 寄存器接口可以讀取PHY 寄存器的內(nèi)容:1. 將CS 引腳拉為低電平啟動(dòng)RCR 命令。 2. 將RCR 操作碼和隨后的5 位寄存器地址(A4 到A0)發(fā)送給ENC28J60;3. 讀控制寄存器的內(nèi)容; 5 位地址決定將使用當(dāng)前存儲(chǔ)區(qū)中32 個(gè)控制寄存器中的哪一個(gè)。 如果5 位地址指向的是一個(gè)ETH寄存器,那么選定寄存器中的數(shù)據(jù)會(huì)立即開始從SO 引腳移出,最高位在前。如果地址指向了一個(gè)MAC 或MII 寄存器,則首先從SO引腳移出一個(gè)無效數(shù)據(jù)字節(jié),隨后從SO引腳移出數(shù)據(jù),最高位在前。4. 通過拉高CS 引腳的電平可結(jié)束RCR 操作。寫控制寄存器的命令寫控制寄存器(Write Control Register,WCR)命令允許主控制器以任何次序?qū)懭隕TH、MAC 和MII 控制寄存器。通過特殊的MII 寄存器接口對(duì)PHY 寄存器執(zhí)行寫操作。主要的操作步驟如下:1. 將CS 引腳拉為低電平啟動(dòng)WCR 命令。2. 將WCR操作碼及隨后的5 位地址(A4 到A0)發(fā)送給ENC28J60;3. 把要寫的數(shù)據(jù)放到發(fā)送寄存器中; 5 位地址決定要使用當(dāng)前存儲(chǔ)區(qū)中32 個(gè)控制寄存器中的哪一個(gè)。在發(fā)送WCR 命令和地址后,發(fā)送要實(shí)際寫入的數(shù)據(jù),首先發(fā)送最高位。 在SCK 的上升沿,數(shù)據(jù)被寫入目標(biāo)寄存器。拉高CS 引腳的電平可結(jié)束WCR 操作。 如果在裝載8個(gè)位前,CS 線變?yōu)楦唠娖?,則將中止這個(gè)數(shù)據(jù)字節(jié)的寫操作。. 詳細(xì)設(shè)計(jì)1) 文件說明表 文件一覽表Table List of documents文件名描述與網(wǎng)卡相關(guān)的宏定義和函數(shù)聲明與網(wǎng)卡相關(guān)的操作和函數(shù)定義2) 函數(shù)一覽表表 函數(shù)一覽表Table Function List文件名函數(shù)簡稱函數(shù)名類型概要F1_1ENC28J60_Init接口網(wǎng)卡初始化F1_2write_ENC28J60_Phy內(nèi)部讀PHY寄存器F1_3read_ENC28J60_Buffer內(nèi)部讀緩存器F1_4read_ENC28J60_cmd內(nèi)部讀控制寄存器F1_5read_ENC28J60內(nèi)部切換Bank時(shí)讀控制寄存器F1_6set_ENC28J60_Bank內(nèi)部切換Bank區(qū)F1_7write_ENC28J60內(nèi)部切換Bank時(shí)寫控制寄存器F1_8write_ENC28J60_Buffer內(nèi)部些緩存區(qū)F1_9write_ENC28J60_cmd內(nèi)部寫控制寄存器F1_10receive_Packet接口接收數(shù)據(jù)包F1_11send_Packet接口發(fā)送數(shù)據(jù)包3) 函數(shù)調(diào)用關(guān)系└─F1_10 ├─F1_3 │ └─F1_5 │ └─F1_4 │ └─F1_6 │ └─F1_7 │ └─F1_9 │ └─F1_6└─F1_11 ├─F1_8 │ └─F1_7 │ └─F1_9 │ └─F1_6 函數(shù)調(diào)用關(guān)系Figure The relationship between function call4) 宏定義 使用宏定義一覽表Table List of use of macro definitions宏名值描述SUCCESS0x01函數(shù)調(diào)用成功返回值FAILED0x00函數(shù)調(diào)用失敗返回值INT8Uunsigned char八位無符號(hào)數(shù)INT16Uunsigned short十六位無符號(hào)數(shù)5) 數(shù)據(jù)結(jié)構(gòu)表 數(shù)據(jù)類型一覽表Table List of data types類型名描述Struct BUF{ BUF * B_Next;INT16U B_Len;Void *B_Data ;INT8U B_Type ;}B_Next用于指向下一段數(shù)據(jù)緩存。B_Len用于記錄本段緩存中數(shù)據(jù)長度。B_Data用于記錄本段數(shù)據(jù)的開始位置。用于記錄數(shù)據(jù)報(bào)頭類型。INT8U MACADDR[6]存儲(chǔ)6字節(jié)的本機(jī)MAC地址6) 函數(shù)設(shè)計(jì)表 receive_Packet函數(shù)Table receive_Packet function函數(shù)名稱void receive_Packet(INT8U * packet, INT32U maxlen)。參數(shù)參數(shù)類型COMMENT參數(shù)列表packetINT8U *INPUTmaxlenINT32UINPUT返回值voidvoid全局變量無功能說明接收數(shù)據(jù)包允許中斷,允許接收判斷接收緩存器中是否還有數(shù)據(jù)包接收數(shù)據(jù)包將接收到的數(shù)據(jù)包存入BUF釋放接收緩存區(qū)制約和注意事項(xiàng)接收緩存區(qū)來了一個(gè)數(shù)據(jù)包以后,會(huì)將/INT引腳拉低,可通過讀/INT引腳狀態(tài)判斷接收緩存區(qū)是否有需要接收的數(shù)據(jù)包。異常處理無表 send_Packet函數(shù)Table send_Packet function函數(shù)名稱void send_Packet(INT8U * packet, INT32U len)參數(shù)參數(shù)類型COMMENT參數(shù)列表packetINT8U *INPUTlenINT32UINPUT返回值VoidVoid功能說明編程指向發(fā)送緩存區(qū)中未用單元;寫入包控制字節(jié);按順序以字節(jié)為單位發(fā)送數(shù)據(jù);釋放數(shù)據(jù)包占用的BUF;設(shè)置寄存器,開始發(fā)送數(shù)據(jù)包。制約和注意事項(xiàng)網(wǎng)絡(luò)接口層調(diào)用此函數(shù),需給定數(shù)據(jù)包頭指針異常處理無 表 ENC28J60_Init函數(shù)Table ENC28J60_Init function函數(shù)名稱void ENC28J60_Init(void)。參數(shù)參數(shù)類型COMMENT參數(shù)列表VoidVoid返回值VoidVoid功能說明初始化網(wǎng)卡制約和注意事項(xiàng)無異常處理無函數(shù)流程圖參見鏈接 表 SPI_Init函數(shù)Table SPI_Init function函數(shù)名稱void SPI_Init(void)。參數(shù)參數(shù)類型COMMENT參數(shù)列表voidvoid返回值voidvoid功能說明初始化SPI制約和注意事項(xiàng)無異常處理無表 read_ENC28J60_Buffer函數(shù)Table read_ENC28J60_Buffer function函數(shù)名稱void read_ENC28J60_Buffer(INT16U len, INT8U * data)參數(shù)參數(shù)類型COMMENT參數(shù)列表lenINT16UINPUTdataINT8U *INPUT返回值voidvoid功能說明讀以太網(wǎng)卡緩沖中的數(shù)據(jù)制約和注意事項(xiàng)無異常處理無函數(shù)流程圖參見鏈接read_ENC28J60_Buffer 表 write_ENC28J60_Buffer函數(shù)函數(shù)名稱void write_ENC28J60_Buffer(INT16U len, INT8U * data)參數(shù)參數(shù)類型COMMENT參數(shù)列表lenINT16UINPUTdataINT8U *INPUT返回值voidvoid功能說明向發(fā)送緩存區(qū)寫入一字節(jié)數(shù)據(jù)制約和注意事項(xiàng)需使用SPI口,故操作前需配置好SPI異常處理無函數(shù)流程圖參見鏈接write_ENC28J60_Bufferwrite_ENC28J60表 write_ENC28J60函數(shù)Table write_ENC28J60 function函數(shù)名稱void write_ENC28J60(INT8U address, INT8U data)參數(shù)參數(shù)類型COMMENT參數(shù)列表addressINT8U八位寄存器地址dataINT8U要寫的數(shù)據(jù)返回值voidvoid功能說明向寄存器寫入一字節(jié)數(shù)據(jù)制約和注意事項(xiàng)需使用SPI口,故操作前需配置好SPI異常處理無函數(shù)流程圖參見鏈接write_ENC28J60
點(diǎn)擊復(fù)制文檔內(nèi)容
外語相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1