• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于ARM和W5100的嵌入式以太網(wǎng)通信接口設計*

      2011-05-17 09:09:10王廣維張浩然
      關鍵詞:寄存器中斷以太網(wǎng)

      王廣維,張浩然

      (浙江師范大學 數(shù)理與信息工程學院,浙江 金華 321004)

      隨著以太網(wǎng)技術在工業(yè)遠程監(jiān)控和數(shù)據(jù)采集領域的飛速發(fā)展,基于以太網(wǎng)的應用接口設備也迅速普及到醫(yī)療設備、工廠電力系統(tǒng)等應用。然而,嵌入式以太網(wǎng)接口設計的核心器件是網(wǎng)絡控制芯片,其性能優(yōu)劣直接影響網(wǎng)絡通信的效率。

      本文結合ARM技術,采用32 bit STM32F105V微處理器和高性能的以太網(wǎng)控制芯片W5100實現(xiàn)高性能、高可靠性的嵌入式以太網(wǎng)通信接口設計,其系統(tǒng)各功能模塊容易擴展和升級。

      1 總體設計

      在嵌入式系統(tǒng)設計高速發(fā)展的過程中,與傳統(tǒng)的基于現(xiàn)場總線方式相比,結合嵌入式系統(tǒng)和以太網(wǎng)技術來實現(xiàn)數(shù)據(jù)采集和控制功能越來越受到廣大嵌入式設計者的青睞,而通信接口設計實質(zhì)是能夠?qū)崿F(xiàn)TCP/IP網(wǎng)絡通信協(xié)議。使用本接口模塊的核心控制器W5100,應*基金項目:浙江省大學生科技創(chuàng)新活動計劃(新苗人才計劃)項目(2010R404066)用程序設計者無需深入了解TCP/IP協(xié)議,也無需考慮以太網(wǎng)的控制,只需訪問網(wǎng)絡控制器的寄存器,并靈活創(chuàng)建和選擇TCP及UDP套接字(Socket)函數(shù)就可以簡單地實現(xiàn)網(wǎng)絡通信,且不需要操作系統(tǒng)的支持,其具有硬件電路簡單、編程方便等特點,解決了一般嵌入式設計的軟件設計復雜、網(wǎng)絡編程工作量大等問題,再結合32 bit高性能ARM處理器以真正實現(xiàn)以太網(wǎng)的高速實時傳輸。ARM完成對應用程序的處理,W5100實現(xiàn)數(shù)據(jù)傳輸和通信網(wǎng)絡協(xié)議的處理。

      具體實現(xiàn)過程:數(shù)據(jù)信號或模擬信號可以通過STM32F105V豐富的外設接口(RS232總線、CAN總線等)輸入或直接通過外部數(shù)據(jù)總線輸入,并且可以用ARM處理器對傳輸?shù)臄?shù)據(jù)和信號做一些預處理工作,然后傳輸?shù)絎5100芯片完成網(wǎng)絡協(xié)議的處理,再通過網(wǎng)絡接口傳輸?shù)竭h程終端(PC機)。相反,遠程終端可以通過以太網(wǎng)發(fā)出控制指令,將傳輸信號發(fā)送至ARM或數(shù)據(jù)輸出端,從而實現(xiàn)嵌入式系統(tǒng)中網(wǎng)絡數(shù)據(jù)的采集和傳輸控制。系統(tǒng)框架如圖1所示。

      圖1 系統(tǒng)框架圖

      本設計利用JTAG接口燒寫程序到ARM內(nèi)部的Flash,外擴 I2C接口的 128×8(1 Kbits)EEPROM,基地址為Ox40005400,用來存儲網(wǎng)絡 IP地址、端口號、子網(wǎng)掩碼等網(wǎng)絡信息,網(wǎng)絡傳輸狀態(tài)指示燈(LED)反映了數(shù)據(jù)傳輸?shù)膶崟r狀態(tài)。電源由外部電源提供,分別經(jīng)過MC7805和AS1117芯片穩(wěn)壓轉(zhuǎn)換輸出5 V和3.3 V的電壓,這樣就能夠很好地滿足內(nèi)核、外設以及外部電路的供電[1]。

      2 網(wǎng)絡控制器W5100

      W5100是WIZnet公司最新推出的固件網(wǎng)絡芯片,內(nèi)部集成了10/100 Mb/s以太網(wǎng)控制器,支持自動應答(全雙工/半雙工模式),最高通信速率達25 Mb/s。W5100將TCP/IP協(xié)議棧、以太網(wǎng)MAC和PHY三種功能集成于一體 , 支持硬件化的TCP、UDP、ICMP、IPv4 ARP、IGMP、PPPoE、以太網(wǎng)等協(xié)議,并提供了多種總線接口方式(直接總線接口、間接總線接口、SPI總線)便于連接各類單片機,可以滿足不同應用場合的需求。

      W5100內(nèi)含公共存儲器、端口存儲器、發(fā)送存儲器以及接收存儲器。公共寄存器用來設置W5100的工作模式、中斷向量、IP地址、網(wǎng)關地址、子網(wǎng)掩碼、物理地址、超時值等相關信息;端口寄存器平均分為4個相等的存儲器大小,可以單獨對4個獨立的網(wǎng)絡通道(Socket)設置端口的通信模式 (TCP客戶端模式、TCP服務器模式、UDP模式),實現(xiàn)網(wǎng)絡數(shù)據(jù)的通信;內(nèi)部 16 KB存儲器的發(fā)送和接收數(shù)據(jù)緩沖區(qū) (8 KB的發(fā)送緩存和8 KB接收緩存區(qū))用來存放臨時數(shù)據(jù)。W5100支持ADSL連接(支持 PPPoE協(xié)議、帶 PAP/CHAP驗證),支持自動極性變換(MDI/MDIX)并附帶有多功能LED指示燈輸出,時鐘信號由外部晶振25MHz提供,分別接入XTLP、XTLN管腳。

      W5100支持 80腳的 LQFP小型封裝,0.18 μm CMOS工藝,符合環(huán)保要求。3.3 V的單電源工作電壓,I/O口可承受5 V電壓,可以滿足低功耗要求[2]。

      3 通信接口硬件設計

      本設計采用嵌入式微處理器和以太網(wǎng)控制器的方式實現(xiàn)接口轉(zhuǎn)換,需要用到的芯片主要包括STM32F105V微處理器,W5100網(wǎng)絡控制器及帶網(wǎng)絡變壓器的RJ-45接口13F-60系列,AT24LC01B EEPROM等。采用SPI總線接口模式,實現(xiàn)STM32F105V和網(wǎng)絡控制器的硬件連接。在串行接口模式下,只需要連接幾個簡單的引腳就可以進行數(shù)據(jù)通信[3]。SPI總線接口模式下硬件連接如圖2所示。

      圖2 STM32F105V與W5100連接圖

      本系統(tǒng)微處理器采用ST公司的STM32F105V,并采用專門設計的Cortex-M3內(nèi)核,時鐘頻率可達72 MHz,256 KB Flash存放程序或數(shù)據(jù),64 KB的RAM存放數(shù)據(jù),多達80個I/O接口可以映射到20個外部中斷。STM32F105V與W5100供電電壓都是3.3 V,所以可以直接連接。

      配置W5100的SEN引腳必須通過一個10 kΩ的電阻接高電平,以選擇W5100的SPI接口模式,置STM32F105V為 SPI主模式,W5100為 SPI從模式,在 SPI總線模式下的配置復用輸入輸出接口 (AFIO)的PA5、PA6、PA4、PA7 分別為 SCLK、MISO、/SCS(SPI從模式選擇,低電平有效)、MOSI信號線直接相連,并用軟件設置管腳的輸出最大速度為10 MHz,STM32F105V通過 SPI對W5100讀寫操作。

      配置PB5口作為W5100的復位信號/RST_W,低電平有效。為實現(xiàn)準確的硬件復位,復位引腳RST_W上復位信號至少保持2 μs。

      配置PB1口為外部中斷線 1(EXTI1),并作為 W5100的中斷信號輸出端/INT,低電平有效。當W5100在端口產(chǎn)生連接、斷開、接收數(shù)據(jù)、數(shù)據(jù)發(fā)送完成以及通信超時等條件下,該引腳輸出低電平信號指示微處理器。

      配置PA8口為W5100輸出的以太網(wǎng)物理層信號燈(LINKLED)指示W(wǎng)5100的網(wǎng)絡連接狀態(tài),通過上拉電阻輸入到微處理器,低電平有效。

      此外,為縮小接口設計的面積,本設計采用10/100Mb/s的13F-60系列帶網(wǎng)絡變壓器的RJ45接口,W5100的RXIP接 RJ45的 RD+,RXIN接 RD-,并帶有左右兩個狀態(tài)燈,連接狀態(tài)燈(LINKLED)和動態(tài)指示燈顯示接收與發(fā)送狀態(tài)(ACT_LED),通過一個高速開關二極管共陽極(開關速度最大值4 ns,重復反向峰值耐壓最大值75 V)與W5100的RXLED/TXLED管腳相連,供電電壓為3.3 V,直接與W5100相連。差分接收和發(fā)送引腳分別通過兩個75 Ω的電阻和 0.001 μF的電容接地。RJ45接口的內(nèi)部結構圖如圖3所示。

      4 通信接口的軟件設計

      4.1 初始化程序設計

      本系統(tǒng)初始化通過定義結構體的方式完成STM32F105V微處理器和W5100的初始化[4-5]。

      圖3 13F-60F系列內(nèi)部接口圖

      微處理器完成系統(tǒng)時鐘、外設時鐘、系統(tǒng)啟動模式、嵌入式向量式中斷控制寄存器、I2C、通用輸入輸出接口、通用異步接收發(fā)送器、通用定時器以及SPI等的初始化。

      W5100的初始化主要設置一些關鍵的寄存器:

      (1)設置模式寄存器(MR)bit[7](軟件復位位)為 1,初始化芯片內(nèi)部寄存器,復位后自動清0。

      (2)設置中斷屏蔽寄存器(IMR)為 OxFF(屏蔽中斷源),啟動IP地址沖突異常中斷和端口n寄存器(Sn_INT)中斷等,通過向相應的中斷屏蔽位寫 1,任何時候只要中斷寄存器(IR)對應的位也置1,則中斷將產(chǎn)生,CPU通過訪問IR獲得中斷來源。

      (3)設置重發(fā)時間寄存器(RTR)為 200 ms(Ox07D0),當發(fā)出連接、斷開等命令而沒有收到遠程對端的響應或響應延遲時,產(chǎn)生重發(fā)過程。

      (4)配置重發(fā)計數(shù)寄存器(RCR)為8,設定重發(fā)的次數(shù)。

      (5)設置接收緩沖區(qū)的大小寄存器(RMSR)和發(fā)送存儲空間大小寄存器(TMSR)都為0x55,每個端口接口和發(fā)送存儲空間分別分配2 KB的存儲空間。

      (6)設置端口 n模式寄存器(Sn_MR)為 OxA1,啟動廣播功能,設置端口n協(xié)議類型為TCP模式。

      (7)設置端口n命令寄存器(Sn_CR),端口的初始化、建立/斷開連接以及數(shù)據(jù)傳輸?shù)取?/p>

      (8)設置端口n的最大分片長度寄存器(Sn_MSS)為1460。

      初始化完成后,根據(jù)SPI協(xié)議編寫發(fā)送字節(jié)函數(shù)SPI_SendByte(),配合 Read_W5100和 Write_W5100完成字節(jié)的讀取和發(fā)送,這里需要定義讀操作碼(OxF0)和寫操作碼(Ox0F),實現(xiàn)微處理器與W5100數(shù)據(jù)通信。

      4.2 Socket初始化程序設計

      W5100與終端之間的數(shù)據(jù)交換有多種通信方式,本文采用基于TCP模式的通信方式。TCP是以連接為基礎的通信方式,端口n在進行數(shù)據(jù)通信時,必須先建立連接。TCP有兩種建立連接方式,一種是服務器模式(被動模式),需要等待連接請求;另一種是客戶端模式(主動打開),需要發(fā)送連接請求給服務器。本設計配置W5100為服務器模式,只需對W5100的Socket進行配置就可以完成網(wǎng)絡數(shù)據(jù)的收發(fā)和啟動功能。

      當Socket作為服務器模式時,初始化端口需要設置運行模式(Sn_MR)和本機端口號(Sn_Port),并在端口命令寄存器打開(OPEN)端口。引用Socket_Listen(SOCKET s)程序,只調(diào)用一次該程序就可使W5100設置為服務器模式。主要程序如下所示。

      完成Socket的打開和設置偵聽工作后,至于遠程客戶端是否與其連接,則需要等待Socket中斷,在服務器偵聽模式下,不需要設置目的IP和目的端口號。

      W5100在TCP服務器模式下的處理流程如圖4所示。

      圖4 W5100在TCP服務器模式下的處理流程圖

      4.3 中斷處理程序設計

      本設計采用中斷方式來處理數(shù)據(jù)包的接收和發(fā)送,以提高效率。在W5100處理中斷的過程中,微處理器首先通過應訪問W5100的中斷寄存器(IR)獲得產(chǎn)生中斷的來源。中斷寄存器與中斷屏蔽寄存器配合使用,且位是一一對應的,中斷屏蔽寄存器(IMR)的相應位可屏蔽中斷寄存器中任何中斷源。因此,若要使用某個中斷源,先要將該中斷源在中斷屏蔽寄存器中的相應位置位,以打開所需的中斷源,這樣,中斷才會產(chǎn)生。當中斷產(chǎn)生后,即進入中斷處理程序。本設計中的中斷源主要包括端口n中斷事件。一般設置有Socket成功連接(S_IR_CON)、斷開連接 (S_IR_DISCON)、數(shù)據(jù)發(fā)送完成(S_IR_SENDOK)、接收到數(shù)據(jù)(S_IR_RECV)或傳輸超時(S_IR_TIMEOUT)等事件中斷。

      本文以端口0接收到數(shù)據(jù)包后的產(chǎn)生一個接收數(shù)據(jù)中斷為例說明中斷處理過程。首先,在使用端口0中斷之前,應在初始化程序中將中斷屏蔽寄存器(IMR)中的端口0置位 (IMR_S0_INT),當Socket0發(fā)生中斷時,IMR_S0_INT=1、IR_S0_INT=1、動態(tài) LED燈亮顯示接收狀態(tài),此時,W5100的中斷輸出管腳(/INT)輸出低電平,以通知微處理器有中斷產(chǎn)生,微處理器訪問中斷寄存器獲取中斷源為接收數(shù)據(jù)中斷;然后進入中斷處理函數(shù),啟動發(fā)送函數(shù)(S_rx_process)。

      4.4 Socket數(shù)據(jù)接收程序設計

      當端口接收數(shù)據(jù)時,產(chǎn)生接收中斷。首先調(diào)用端口接收數(shù)據(jù)包函數(shù)Process_Socket_Data(),并對接收到的數(shù)據(jù)類型進行判斷和加工。本過程先調(diào)用接收函數(shù)S_rx_process()從W5100端口的接收數(shù)據(jù)緩存區(qū)讀取數(shù)據(jù),然后將讀取的數(shù)據(jù)加上接收存儲器讀指針寄存器(S0_RX_RD)的值再寫入 S0_RX_RD,最后將 RECV命令重新寫入端口0的命令寄存器(S0_CR),以等待下次數(shù)據(jù)的接收?;蛘邔⑻幚硗甑臄?shù)據(jù)拷貝到發(fā)送緩沖區(qū),再調(diào)用S_tx_process函數(shù)發(fā)送數(shù)據(jù)包給CPU。主要程序如下:

      其中通信數(shù)據(jù)包格式為:

      0xaa 0x55 長度命令目標代碼數(shù)據(jù)

      其中Oxaa和Ox55為接收數(shù)據(jù)包的標志頭;長度位為數(shù)據(jù)包字節(jié)長度,不包括數(shù)據(jù)包頭和本身字符,命令位為對對象數(shù)據(jù)的操作,為0時讀取數(shù)據(jù),為1時設置對象數(shù)據(jù),目標代碼位用來顯示對象代碼,如Ox00為網(wǎng)關 IP、Ox01為子網(wǎng)掩碼、0x02為物理地址、LED為狀態(tài)顯示等;數(shù)據(jù)位為接收到的數(shù)據(jù),數(shù)據(jù)是以16進制形式接收,最后再加上2 B的數(shù)據(jù)報頭和1 B的數(shù)據(jù)本身。

      4.5 Socket數(shù)據(jù)發(fā)送程序設計

      通過Socket發(fā)送數(shù)據(jù)時,調(diào)用發(fā)送數(shù)據(jù)函數(shù)S_tx_process。首先把要發(fā)送的數(shù)據(jù)緩存在發(fā)送緩沖區(qū)(Tx_buffer)中。此外,在發(fā)送數(shù)據(jù)時,需先檢查發(fā)送緩存區(qū)的剩余空間的大小(Sn_TX_FSR),控制發(fā)送數(shù)據(jù)的字節(jié)數(shù),如用以太網(wǎng)協(xié)議發(fā)送的數(shù)據(jù)最大傳送單元(MTU)不超過1 500 B。在TCP服務器模式下,在數(shù)據(jù)發(fā)送處理過程中,可不設置目標主機的IP和端口號。剩余空間的大小因?qū)懭霐?shù)據(jù)的增加而減少,數(shù)據(jù)發(fā)送后又自動增加。當發(fā)送緩沖區(qū)的數(shù)據(jù)完全寫入端口的發(fā)送數(shù)據(jù)緩存區(qū)后,則將數(shù)據(jù)本身長度加上端口傳輸寫指針寄存器(Sn_TX_WR)中的值再寫入 Sn_Tx_WR,再計算發(fā)送緩沖區(qū)的偏移量(tx_offset),用于指示發(fā)送數(shù)據(jù)的長度,最后啟動發(fā)送(Sn_CR_SEND)。相關程序如下:

      本文以基于ARM Cortex-M3的微處理器STM32F105V為核心,結合W5100網(wǎng)絡控制芯片實現(xiàn)了嵌入式以太網(wǎng)的連接,該接口設計具有硬件設計簡單、成本低、集成高度以及軟件開發(fā)周期短等優(yōu)點,在自動化控制和數(shù)據(jù)傳輸領域有著廣泛的市場和應用前景。

      [1]ST.STM32F105xx datasheet.2010.

      [2]WIZnet.W5100 datasheet version1.1.8.2009.

      [3]姚冰,康世英,謝佳.嵌入式以太網(wǎng)接口硬件部分的設計與實現(xiàn)[J].微處理機,2008,29(2):155-157.

      [4]成都加聯(lián)科技有限公司.W5100在嵌入式系統(tǒng)中實現(xiàn)TCP/IP網(wǎng)絡通信的應用[R].2009.

      [5]段海龍,彭輝俊,程健.基于 ARM的嵌入式以太網(wǎng)通信的實現(xiàn)[J].機械與電子,2006(2):9-12.

      猜你喜歡
      寄存器中斷以太網(wǎng)
      基于1500以太網(wǎng)養(yǎng)豬場的智能飼喂控制系統(tǒng)的設計與實現(xiàn)
      Lite寄存器模型的設計與實現(xiàn)
      計算機應用(2020年5期)2020-06-07 07:06:44
      跟蹤導練(二)(5)
      千里移防,衛(wèi)勤保障不中斷
      解放軍健康(2017年5期)2017-08-01 06:27:44
      分簇結構向量寄存器分配策略研究*
      談實時以太網(wǎng)EtherCAT技術在變電站自動化中的應用
      電子制作(2017年24期)2017-02-02 07:14:44
      一種90W高功率以太網(wǎng)供電系統(tǒng)的設計
      電源技術(2015年7期)2015-08-22 08:48:48
      淺談EPON與工業(yè)以太網(wǎng)在貴遵高速公路中的應用
      AT89C51與中斷有關的寄存器功能表解
      FPGA內(nèi)嵌PowerPC的中斷響應分析
      微處理機(2012年4期)2012-06-13 11:32:24
      吐鲁番市| 佛冈县| 莱西市| 民权县| 静乐县| 文水县| 天柱县| 璧山县| 汉沽区| 红安县| 房山区| 卢氏县| 岗巴县| 河东区| 长岛县| 丰都县| 天水市| 高安市| 佛冈县| 镶黄旗| 莲花县| 河南省| 陆丰市| 南漳县| 桂东县| 广州市| 甘洛县| 蒲江县| 隆昌县| 中方县| 剑阁县| 图木舒克市| 怀宁县| 庆安县| 南京市| 乾安县| 浑源县| 航空| 通道| 个旧市| 瑞昌市|