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

正文內(nèi)容

基于stm32和dm9000的照明控制系統(tǒng)畢業(yè)論文-文庫吧

2025-06-12 18:47 本頁面


【正文】 增量編碼器輸入1個16位帶死區(qū)控制和緊急剎車,用于電機控制的PWM高級控制定時器2個看門狗定時器(獨立的和窗口型的)系統(tǒng)時間定時器:24位自減型計數(shù)器多達(dá)9個通信接口:2個I2C接口3個USART接口(支持ISO7816接口,LIN,IRDA接口和調(diào)制解調(diào)控制)2個SPI接口(18M位/秒)CAN接口()USB ,96位的新批唯一代碼 封裝 ECOPACK封裝。 圖 STM32F103電路原理圖 圖 時鐘電路 STM32F103 引腳分布圖 DM9000網(wǎng)絡(luò)通信模塊。它有一個一般處理接口,一個10/100M自適應(yīng)的PHY和4K DWORD值的SRAM。,DM9000還提供了介質(zhì)無關(guān)的接口,來連接所有提供支持介質(zhì)無關(guān)接口功能的家用電話線網(wǎng)絡(luò)設(shè)備或其他收發(fā)器。該DM9000支持8位,16位和32 位接口訪問內(nèi)部存儲器,以支持不同的處理器。DM9000物理協(xié)議層接口完全支持使用10MBps下3類、4類、5類非屏蔽雙絞線和100MBps下5類非屏蔽雙絞線,完全符合IEEE 。,在網(wǎng)絡(luò)中他可自動獲得同設(shè)定MAC地址一致的IP包,完成IP包的收發(fā),再用ARM來結(jié)合完成上層協(xié)議,就構(gòu)成了一個完整的網(wǎng)絡(luò)終端。 DM9000電路原理圖 3. 網(wǎng)卡芯片 DM9000 和 STM32的連接。首 先,可 以 從 硬 件 上 完 成 網(wǎng) 卡 芯 片DM9000 與 ARM 處理器 STM32 的三大總線連接,以及和以太網(wǎng)的連接, 嵌入式 ARM系統(tǒng)和以太網(wǎng)接口連接圖 DM9000嵌入式系統(tǒng) 數(shù)據(jù) 網(wǎng)卡芯片 以太網(wǎng)連接 地址 DMSTM32 控制 連接示意圖 默認(rèn) I/O 基地址為 300 H。CMD引腳用于設(shè)置 COMMAND 模式, CMD 為高時,選擇數(shù)據(jù)端口。CMD 為低時, 選地址端口。數(shù)據(jù)端口和地址端口的地址碼由下式?jīng)Q定:DM9000 地址端口 = 高位片選地址 +300H+0H,DM9000 數(shù)據(jù)端口 = 高位片選地址 +300H+4H 的調(diào)試過程DM9000 的調(diào)試過程中, 首先要確保芯片能否正常工作, 即確保 MAC 地址是存儲在 EEPROM 中,且 MAC 地址正常。對DM9000 的寄存器進(jìn)行讀寫測試, 從 PAB0 到 PAB5 把 MAC地址寫入到 DM9000 寄存器,然后再讀取寄存器來驗證它。其次可以進(jìn)行EEPROM93C46 的字?jǐn)?shù)據(jù)測試, 進(jìn)行以太網(wǎng)連接測試, 通過連接LED 燈的亮滅以及讀取NSR寄存器來檢查IINKST bit[ 6] 的狀態(tài)是否為“1” 來驗證以太網(wǎng)是否已經(jīng)連接成功。進(jìn)行外部環(huán)回測試, 使用一個交叉線插到 RJ45, 檢查能否收到所發(fā)送的包。進(jìn)行向另一臺主機發(fā)包、 收包的測試, 最后連上交換機, 把事先編譯好的程序下載到處理器中去, 驗證是否實現(xiàn)聯(lián)網(wǎng)。第三章 系統(tǒng)軟件設(shè)計 網(wǎng)絡(luò)通信協(xié)議 TCP/IP協(xié)議在全球互聯(lián)網(wǎng)上取得了巨大的成功,人們通過該協(xié)議進(jìn)行文件傳送,電子郵件發(fā)送等多種應(yīng)用,TCP/IP協(xié)議已成為事實上的全球網(wǎng)絡(luò)通信標(biāo)準(zhǔn)。隨著嵌入式系統(tǒng)技術(shù)的深入發(fā)展,越來越多的嵌入式設(shè)備也需要互連成網(wǎng),協(xié)同工作,如無線傳感器、信息家電、智能儀表等。在嵌入式設(shè)備中通過TCP/IP協(xié)議連接Interact網(wǎng)絡(luò)需求更加強烈。在嵌入式系統(tǒng)上運行TCP/IP協(xié)議可以使得該系統(tǒng)直接與內(nèi)部網(wǎng)絡(luò)甚至全球互聯(lián)網(wǎng)相聯(lián),而不需要引入額外的網(wǎng)關(guān)設(shè)備,給嵌入式設(shè)備通信帶來巨大的便利。嵌入式系統(tǒng)的本身資源有限,并且其應(yīng)用和功能比較單一,具有較強的針對性,因此不需要一個完整的TCP/IP網(wǎng)絡(luò)協(xié)議組件,只需要實現(xiàn)與需求相關(guān)的部分協(xié)議,不使用的協(xié)議則不需要支持。另一方面,對于某些特定的嵌入式系統(tǒng),甚至需要優(yōu)化TCP/IP協(xié)議?;蛘咴赥CP/IP協(xié)議棧中編寫自己需要的網(wǎng)絡(luò)協(xié)議。那些不能提供開放源碼的商用嵌入式系統(tǒng)的TCP/IP協(xié)議棧很難滿足用戶的配置需求,需要用戶自行開發(fā)和定制適合自己系統(tǒng)需求的嵌入式 TCP/IP協(xié)議棧。 由瑞典計算機科學(xué)研究所Adam Dunkels開發(fā)的uIP0.9,去掉了全功能TCP/IP協(xié)議棧中不常用的功能,保留網(wǎng)絡(luò)通信所必要的協(xié)議機制,大大減少了協(xié)議代碼量,降低了協(xié)議對系統(tǒng)資源的要求。該協(xié)議由公開源代碼的c語言編寫,任何人都可以在網(wǎng)絡(luò)上下載其源代碼并對其進(jìn)行修改,以適應(yīng)各自不同的應(yīng)用場合。uIP0.9采用模塊化設(shè)計,其代碼量在幾千字節(jié)左右,僅需要幾百字節(jié)的內(nèi)存就可以順利運行,完全適應(yīng)當(dāng)前的嵌入式系統(tǒng)。 UIP協(xié)議棧及其體系結(jié)構(gòu) UIP是一個適用于8/16位機上的小型嵌入式TCP/IP協(xié)議棧,簡單易用,資源占用少是它的設(shè)計特點。其設(shè)計重點放在IP、ICMP和TCP協(xié)議的實現(xiàn)上,協(xié)議雖然也同時實現(xiàn)了UDP和ARP協(xié)議,但僅將其作為可選模塊。UIP處于網(wǎng)絡(luò)通信的中間層,其上層協(xié)議在這里被稱之為應(yīng)用程序,而下層硬件或固件被稱之為網(wǎng)絡(luò)設(shè)備驅(qū)動。TCP/IP協(xié)議組中的鏈路層協(xié)議如PPP等可由UIP之下的設(shè)備驅(qū)動實現(xiàn);應(yīng)用層協(xié)議如H33P、FTP、SMTP等可由UIP之上的應(yīng)用程序?qū)崿F(xiàn)。這樣的設(shè)計方式大大減小了協(xié)議代碼量和RAM 占用量。為進(jìn)一步節(jié)省資源占用,簡化應(yīng)用接口,UIP在內(nèi)部實現(xiàn)上還作了如下特殊的處理:① 采用單一的全局?jǐn)?shù)據(jù)收發(fā)緩沖區(qū),不支持內(nèi)存動態(tài)分配;② 基于事件驅(qū)動的應(yīng)用程序接口,各并發(fā)連接采用輪循處理,僅當(dāng)網(wǎng)絡(luò)事件發(fā)生時,由UIP內(nèi)核喚起應(yīng)用程序處理。這樣,UIP用戶只須關(guān)注特定應(yīng)用就可以了。傳統(tǒng)的TCP/IP實現(xiàn)一般要基于多任務(wù)處理環(huán)境,而大多數(shù)8位機系統(tǒng)不具備這個條件;③ 應(yīng)用程序主動參與部分協(xié)議棧功能的實現(xiàn)(如TCP的重發(fā)機制,數(shù)據(jù)包分段和流量控制),由UIP內(nèi)核設(shè)置重發(fā)事件,應(yīng)用程序重新生成數(shù)據(jù)提交發(fā)送,免去了大量內(nèi)部緩存的占用。基于事件驅(qū)動的應(yīng)用接口使得這些實現(xiàn)較為簡單。正是由于UIP所具有的以上顯著特點,自從0.6版本以來就被移植到多種處理器上,包括MSP4AVR和Z80等。 協(xié)議棧接口 圖1描述了UIP、底層系統(tǒng)和應(yīng)用程序三者之間的調(diào)用關(guān)系。其中UIP協(xié)議通過一系列接口函數(shù)與底層系統(tǒng)和上層應(yīng)用程序通信,它內(nèi)部的協(xié)議集合對外部系統(tǒng)來說是透明的,從而增強了該協(xié)議的通用性和獨立性,可以非常方便地移植到不同系統(tǒng)和應(yīng)用平臺。圖1描述了UIP、底層系統(tǒng)和應(yīng)用程序三者之間的調(diào)用關(guān)系。其中UIP提供了3個函數(shù)給底層系統(tǒng):uip— init()39。uip— input()’uip— periodic()。應(yīng)用程序向UIP提供一個調(diào)用函數(shù)uip appcall(),在網(wǎng)絡(luò)事件或計時事件發(fā)生時進(jìn)行調(diào)用;同時,UIP也要向應(yīng)用程序提供一些與協(xié)議棧的接口函數(shù),應(yīng)用程序根據(jù)接口函數(shù)提供的信息或者狀態(tài),執(zhí)行相應(yīng)的操作。 應(yīng)用程序 Uipappcall() UIP協(xié)議棧Uipinput() uipperiodc() 底 層 系 統(tǒng) 系統(tǒng)定時器 網(wǎng)卡驅(qū)動 UIP、底層系統(tǒng)和應(yīng)用程序之間的調(diào)用關(guān)系 設(shè)備驅(qū)動程序接口:UIP內(nèi)核中有兩個函數(shù)直接提供給底層設(shè)備驅(qū)動程序。一個是uip— input(),當(dāng)設(shè)備驅(qū)動程序從網(wǎng)絡(luò)層收到的一個數(shù)據(jù)包時要調(diào)用這個函數(shù),設(shè)備驅(qū)動程序必須事先將數(shù)據(jù)包存入到uip bur中,包長放到uip— len,然后交由uip—input()處理。當(dāng)函數(shù)返回時,如果uip— len不為0,則表明有帶外數(shù)據(jù)(如SYN,ACK等)要發(fā)送。當(dāng)需要ARP支持時,還需要考慮更新ARP表示或發(fā)出ARP請求和回應(yīng)。以下代碼即為設(shè)備驅(qū)動程序從網(wǎng)絡(luò)層收到的個數(shù)據(jù)包后的處理過程:define BUF ((struet uip—eth— hdr*)amp。uip— buf[O])uip—len=ethemet—devicedriver— poll();//接收以太網(wǎng)數(shù)據(jù)包(設(shè)備驅(qū)動程序)if(uip— len0){ //收到數(shù)據(jù)if(BUF一type: :HTONS(UIP—ETHTYPE— IP)){//是IP包嗎?uip— arp—ipin(); //去除以太網(wǎng)頭結(jié)構(gòu),更新ARP表uip— input(); //IP包處理if(uip— len0){ //有帶外回應(yīng)數(shù)據(jù)uiparp out(); //加以太網(wǎng)頭結(jié)構(gòu),在主動連接時可能要構(gòu)造ARP請求ethemet—devieedriver— send();//發(fā)送數(shù)據(jù)到以太網(wǎng)(設(shè)備驅(qū)動程序)}}elseif(sot一type==HTONS(U1PETHTYPEARP)){//是ARP請求包uip— arp—arpin();//如是是ARP回應(yīng),更新ARP表;如果是請求,構(gòu)造回應(yīng)數(shù)據(jù)包if(uip— len0){//是ARP請求,要發(fā)送回應(yīng)ethernet—devicedriver— send();//發(fā)ARP回應(yīng)到以太網(wǎng)上另一個UIP內(nèi)核直接提供給底層設(shè)備驅(qū)動程序的函數(shù)是uip— periodic(conn)。這個函數(shù)用于UIP內(nèi)核對各連接的定時輪循,因此需要一個硬件支持的定時程序周期性地用它輪循各連接,一般用于檢查主機是否有數(shù)據(jù)要發(fā)送,如有,則構(gòu)造IP包。以下示例即為UIP內(nèi)核對各連接的定時輪循過程:for(i=0;iUIP— CONNS;i++){uip— periodic(i);if(uip— lenO){uip— arp—out();ethemet—devicedriver— send();從本質(zhì)上來說,uip— input()和uip— periodic()在內(nèi)部是一個函數(shù),即uip— process(u8一t flag),uIP的設(shè)計者將uip— process(UIP— DATA)定義成uip_intput(),而將uip— process(UIP— TIMER)定義成uip—periodic(),因此從代碼實現(xiàn)上來說是完全復(fù)用的。 應(yīng)用程序接口:UIP使用基于事件的程序模式,應(yīng)用程序由c語言函數(shù)實現(xiàn)。當(dāng)收發(fā)數(shù)據(jù)、新連接建立或者數(shù)據(jù)需要重新傳輸時,UIP都會調(diào)用應(yīng)用程序。同時,應(yīng)用程序還要周期查詢是否有新的數(shù)據(jù)收發(fā)。因為應(yīng)用程序只提供了一個回調(diào)函數(shù),所以應(yīng)用程序還要把不同的網(wǎng)絡(luò)服務(wù)映射到不同的端13和連接。UIP在接受到底層傳來的數(shù)據(jù)包后,如果需要送上層應(yīng)用程序處理,就調(diào)用UIP— APPCALL()。同時設(shè)置結(jié)構(gòu)體UIP— eonn指針指向當(dāng)前連接。UIP conn記錄一條TCP連接的所有相關(guān)信息,它是維持UIP運行的關(guān)鍵結(jié)構(gòu),定義如下:struct【cp— conn{u8一t tcpstateflags;//TCP的狀態(tài)和標(biāo)志ul6一t lport,rpert;//當(dāng)?shù)睾瓦h(yuǎn)端端口ul6一t fipodar[2];//遠(yuǎn)端的地址u8一t rcvnxt[4];//下一個要接收的序列號u8一t sod— xt[4];∥ 上一個已發(fā)送的序列號u8一t aeknxt[4];//對端下一個應(yīng)答序列號u8一t timer;//重傳時間u8一t nrtx;//計算特殊段的重發(fā)數(shù)量u8一t mss;//連接中最大分段的大小u8一t appstate[UIP— APPSTATE— SIZE];UIP提供給應(yīng)用程序的接口函數(shù)如:tep listen()、uip— connect()、uip— send()、tcp— datalen()、tcp—close()、tcp— abort()、tcp— stop()、uip— stopped()、uip— restart()等,實現(xiàn)了TCP/IP協(xié)議棧的基本功能。為了將用戶的應(yīng)用程序掛接到UIP中,必須將宏UIP— APPcALL()定義成實際的應(yīng)用程序函數(shù)名,這樣每當(dāng)某個UIP事件發(fā)生時,內(nèi)核就會調(diào)用該應(yīng)用程序進(jìn)行處理。如果要加入應(yīng)用程序狀態(tài)的話,必須將宏UIPAPPSTATESIZE定義成應(yīng)用程序狀態(tài)結(jié)構(gòu)體的長度。在應(yīng)用程序函數(shù)中,依靠UIP事件檢測函數(shù)來決定處理的方法,另外可以通過判斷當(dāng)前連接的端口號來區(qū)分處理不同的連接。 程序流程圖 開始 程序運行初始化流程圖 系統(tǒng)時鐘設(shè)置初始化網(wǎng)絡(luò)設(shè)備以及UIP協(xié)議棧,配置IP地址 應(yīng)用層MAC初始化 UIP MAC初始化 UIP 初始化 ARP 初始化創(chuàng)建TCP監(jiān)聽窗口和HTTP監(jiān)聽窗口 程序功能流程圖指令 當(dāng)通過網(wǎng)絡(luò)調(diào)
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1