• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    STM32F103VET6和ENC28J60的嵌入式以太網(wǎng)接口設(shè)計

    2012-09-21 10:43:42張慶輝馬延立
    關(guān)鍵詞:函數(shù)庫外設(shè)固件

    張慶輝,馬延立

    (河南工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院,鄭州 450001)

    引 言

    隨著以太網(wǎng)技術(shù)的普及和發(fā)展,基于以太網(wǎng)的應(yīng)用接口設(shè)備也迅速普及到醫(yī)療設(shè)備、工廠電力系統(tǒng)等領(lǐng)域。嵌入式以太網(wǎng)系統(tǒng)不但可以通過Internet將通信距離無限擴(kuò)大,使得大量數(shù)據(jù)的快速傳輸成為可能,還可以實現(xiàn)測控系統(tǒng)間的數(shù)據(jù)交換,為智能化、模塊化的嵌入式設(shè)備的實現(xiàn)提供了一種新途徑。然而,嵌入式以太網(wǎng)接口設(shè)計的核心器件是網(wǎng)絡(luò)控制芯片,其性能優(yōu)劣直接影響網(wǎng)絡(luò)通信的效率。

    本文采用基于32位Cortex-M3內(nèi)核的STM32F103VET6微處理器和高性能的以太網(wǎng)控制芯片ENC28J60實現(xiàn)高性能、高可靠性的嵌入式以太網(wǎng)通信接口設(shè)計,其系統(tǒng)各功能模塊容易擴(kuò)展和升級。

    1 STM32F103VET6和ENC28J60簡介

    STM32F103VET6是32位Cortex-M3內(nèi)核的新型處理器。它具有更多片內(nèi)RAM和外設(shè),其出色的性能和豐富的資源幾乎不需要擴(kuò)展外圍電路就能滿足一般的設(shè)計要求,硬件設(shè)計大為簡化,且執(zhí)行速度和內(nèi)存容量完全滿足主控模塊的多任務(wù)實時應(yīng)用。

    ENC28J60是Microchip公司推出的28引腳獨立以太網(wǎng)控制芯片,可為嵌入式應(yīng)用提供低引腳數(shù)、低成本且高效易用的遠(yuǎn)程通信解決方案。ENC28J60采用業(yè)界標(biāo)準(zhǔn)的SPI串行接口,只需4條連線即可與主控單片機(jī)連接。ENC28J60以太網(wǎng)控制器的主要功能包括:

    ① 符合IEEE 802.3標(biāo)準(zhǔn)。內(nèi)置10Mbps以太網(wǎng)物理層器件(PHY)及媒介接入控制器(MAC),可按業(yè)界標(biāo)準(zhǔn)的以太網(wǎng)協(xié)議可靠地收發(fā)信息包數(shù)據(jù)。

    ② 可編程過濾功能。特殊的過濾器包括可編程模式匹配過濾器,可自動評價、接收或拒收Magic Packe的單播、多播或廣播信息包,以減輕主控單片機(jī)的處理負(fù)荷。

    ③ 最高速度可達(dá)10MB/s的SPI接口。

    ④ 可編程8KB雙端口SRAM緩沖器,以高效的方式進(jìn)行信息包的存儲、檢索和修改,以減輕主控單片機(jī)的內(nèi)存負(fù)荷。該緩沖器提供了靈活可靠的數(shù)據(jù)管理機(jī)制[1]。

    2 硬件電路設(shè)計

    ENC28J60可以通過SPI接口方便地和微處理器連接而構(gòu)成嵌入式以太網(wǎng)通信接口,對于沒有SPI接口的微處理器也可以通過I/O口模擬SPI的方法實現(xiàn)。STM32F103VET6內(nèi)部含有3個SPI接口,可以很方便地實現(xiàn)與ENC28J60的連接。STM32F103VET6SPI引腳連接圖如圖1所示。

    圖1 STM32F103VET6SPI引腳連接圖

    ENC28J60具有上電復(fù)位功能,一旦VDD上升到某個門限值后,就會在片內(nèi)產(chǎn)生上電復(fù)位脈沖,當(dāng)VDD上升到足夠器件工作電壓時,器件會以初始化狀態(tài)啟動,在器件正常工作期間,RESET引腳的內(nèi)部弱上拉將會使引腳保持邏輯高電平,在系統(tǒng)上電復(fù)位后不應(yīng)立即發(fā)送數(shù)據(jù)或訪問到MAC、MII或PHY寄存器,至少應(yīng)延遲10ms。通過查詢ENC28J60狀態(tài)寄存器ESTAT中的CLKRDY位來確定系統(tǒng)是否準(zhǔn)備好是不可靠的,最好將復(fù)位引腳連接到單片機(jī)的引腳,通過軟件延時來使系統(tǒng)可靠復(fù)位[2]。

    ENC28J60內(nèi)部集成了2.5V穩(wěn)壓器,要使之工作穩(wěn)定,需要在VCAP引腳與地之間外接一個10μF電容;由于ENC28J60內(nèi)部穩(wěn)壓器無法驅(qū)動外部負(fù)載,所以電源引腳必須與同一個3.3V電源相連,并且在每個電源引腳與地之間都應(yīng)連接一個0.1μF的磁片電容,而且電容應(yīng)盡可能靠近引腳。

    硬件電路連接如圖2所示。根據(jù)ENC28J60的工作頻率要求,需在OSC1和OSC2引腳間連接25MHz晶振及接地電容。ENC28J60的內(nèi)部模擬電路需要在RBIAS引腳與地之間外接一個1kΩ的電阻。以太網(wǎng)變壓器在實現(xiàn)以太網(wǎng)接口操作時是不可缺少的,在差分發(fā)送引腳(TPOUT+/TPOUT-)上,需要外接一個帶有中心抽頭的1∶1脈沖變壓器[3]。變壓器應(yīng)具有2kV以上的電壓隔離性能,以防止靜電干擾。本設(shè)計采用的是集成以太網(wǎng)隔離變壓器RJ45插座HR911105A。

    3 軟件設(shè)計

    3.1 STM32標(biāo)準(zhǔn)外設(shè)庫介紹

    STM32(即STM32F10系列芯片,包括了本文所用的芯片)標(biāo)準(zhǔn)外設(shè)庫也稱固件函數(shù)庫或固件庫,是一個固件函數(shù)包,它由程序、數(shù)據(jù)結(jié)構(gòu)和宏組成,包括了微處理器所有外設(shè)的性能特征。該函數(shù)庫還包括每一個外設(shè)的驅(qū)動描述和應(yīng)用實例,為開發(fā)者訪問底層硬件提供了一個中間API,通過使用固件函數(shù)庫,無需深入掌握底層硬件細(xì)節(jié),就可以輕松應(yīng)用每一個外設(shè)。因此,使用固件函數(shù)庫可以大大減少用戶的程序編寫時間,進(jìn)而降低開發(fā)成本。該固件庫中的每個外設(shè)驅(qū)動都由一組函數(shù)組成,這組函數(shù)覆蓋了該外設(shè)的所有功能,并且每個器件的開發(fā)都有一個通用API驅(qū)動,API對該驅(qū)動程序的結(jié)構(gòu)、函數(shù)和參數(shù)名稱都進(jìn)行了標(biāo)準(zhǔn)化[4]。

    在實際開發(fā)過程中,根據(jù)應(yīng)用程序的需要,可以采取2種方法使用標(biāo)準(zhǔn)外設(shè)庫:

    ① 使用外設(shè)驅(qū)動:這時應(yīng)用程序開發(fā)基于外設(shè)驅(qū)動的 API。用戶只需要配置文件“stm32f10x_conf.h”,并使用相應(yīng)的文件“stm32f10x_ppp.h/.c”即可。

    ② 不使用外設(shè)驅(qū)動:這時應(yīng)用程序開發(fā)基于外設(shè)的寄存器結(jié)構(gòu)和位定義文件。

    使用標(biāo)準(zhǔn)外設(shè)庫進(jìn)行開發(fā)可以極大地減少軟件開發(fā)的工作量,也是目前嵌入式系統(tǒng)開發(fā)的一個趨勢。

    3.2 ENC28J60初始化配置

    圖2 硬件電路連接圖

    ENC28J60控制寄存器中最基本和重要的5個寄存器是:EIE、EIR、ESTAT、ECON2和ECON1。

    EIE:以太網(wǎng)中斷使能控制寄存器,分為總中斷使能和各部分使能控制。

    EIR:以太網(wǎng)中斷標(biāo)志寄存器,在接收和發(fā)送數(shù)據(jù)包時根據(jù)不同的標(biāo)志位進(jìn)入不同的執(zhí)行程序。

    ESTAT:以太網(wǎng)狀態(tài)寄存器,反映以太網(wǎng)當(dāng)前的數(shù)據(jù)碰撞、忙信息、錯誤信息、時鐘狀態(tài)等信息。

    ECON2:以太網(wǎng)輔助控制寄存器,設(shè)置數(shù)據(jù)指針、芯片節(jié)能等。

    ECON1:以太網(wǎng)主控制寄存器,這個是芯片最常用的寄存器,主要用來設(shè)置不同層的寄存器空間[5]。

    在使用ENC28J60發(fā)送和接收數(shù)據(jù)包時,必須對器件進(jìn)行初始化設(shè)置。根據(jù)不同的應(yīng)用,一些配置選項可能需要更改。ENC28J60的初始化主要是對其接收和發(fā)送緩沖器、接收過濾器、晶振啟動時間、MAC寄存器、PHY寄存器進(jìn)行設(shè)置。初始化ENC28J60之前,先關(guān)閉單片機(jī)的中斷輸入,對引腳給定一個持續(xù)的低電平復(fù)位信號,然后對相應(yīng)的寄存器進(jìn)行設(shè)置。設(shè)置完成所有需要的寄存器后,判斷以太網(wǎng)狀態(tài)中的時鐘啟動標(biāo)志位是否置位,然后開中斷。對于以太網(wǎng)傳輸部分來說,主要有兩個作用:一是對要發(fā)送的數(shù)據(jù)按照以太網(wǎng)數(shù)據(jù)幀格式進(jìn)行封裝并發(fā)送;二是對接收的以太網(wǎng)數(shù)據(jù)幀進(jìn)行解包,供應(yīng)用程序使用[6]。

    通過向STM32F103VET6的SPI緩沖器寫入相應(yīng)格式的命令代碼,可實現(xiàn)與ENC28J60的數(shù)據(jù)通信。需要指出的是,對PHY寄存器不能通過SPI口直接讀寫,而是通過特殊的MII寄存器來完成讀寫操作。

    3.3 SPI操作及ENC28J60收發(fā)數(shù)據(jù)包

    ENC28J60與STM32F103VET6的連接是通過SPI實現(xiàn)的,STM32F103VET6可通過SPI接口發(fā)送命令,訪問ENC28J60的相關(guān)寄存器來完成相應(yīng)的操作。下面給出SPI讀/寫數(shù)據(jù),以及ENC28J60接收/發(fā)送數(shù)據(jù)包的部分源代碼:

    ENC28J60內(nèi)的MAC在發(fā)送時會自動生成前導(dǎo)符和幀起始定界符。此外,MAC可根據(jù)配置生成填充和CRC字段。但主控制器必須生成所有其他幀字段,并將它們寫入緩沖存儲器,以待發(fā)送。ENC28J60發(fā)送數(shù)據(jù)包主要源代碼如下:

    ENC28J60收到一個完整的以太網(wǎng)數(shù)據(jù)包后,會向CPU發(fā)出中斷請求,CPU響應(yīng)ENC28J60的中斷申請后,系統(tǒng)將進(jìn)入中斷服務(wù)程序并開始接收數(shù)據(jù)。ENC28J60接收數(shù)據(jù)包主要源代碼如下:

    結(jié) 語

    由ENC28J60構(gòu)成的嵌入式以太網(wǎng)接口電路25 連接簡單,功能強(qiáng)大,與目前大多數(shù)需要并行數(shù)據(jù)和地址總線的以太網(wǎng)相比,不需要外擴(kuò)地址和數(shù)據(jù)總線,并且完全符合未來工業(yè)以太網(wǎng)的發(fā)展趨勢。此外,本設(shè)計應(yīng)用在智能儀表中,可使現(xiàn)場設(shè)備方便地接入以太網(wǎng),以便更好地實現(xiàn)管控一體化;克服了市場上已有以太網(wǎng)控制器封裝引腳多的缺點,簡化了設(shè)計,減小了占板空間。該接口電路實現(xiàn)方便,可以廣泛應(yīng)用于控制領(lǐng)域。

    [1] 祁樹勝.SPI接口以太網(wǎng)控制器ENC28J60及其應(yīng)用[J].微計算機(jī)信息,2006,8(2):266-268.

    [2] 王廷堯.以太網(wǎng)技術(shù)與應(yīng)用[M].北京:人民郵電出版社,2005.

    [3] 陳磊,馮冬芹,金建祥,等.以太網(wǎng)在工業(yè)應(yīng)用中的實時特性研究[J].浙江大學(xué)學(xué)報:工學(xué)版,2004,38(6):29-31.

    [4] 李寧.基于 MDK的STM32處理器開發(fā)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2008.

    [5] 張瑞瑞,馬晨普.一種精簡可靠的低成本嵌入式以太網(wǎng)接口設(shè)計[J].電子產(chǎn)品世界,2006(12):66-68.

    [6] 張偉業(yè),黃云龍,陳國定.基于ENC28J60以太網(wǎng)通信接口的設(shè)計與實現(xiàn)[J].機(jī)電工程,2008,25(1):28-30.

    猜你喜歡
    函數(shù)庫外設(shè)固件
    用于優(yōu)化雷達(dá)信號處理的VSIPL函數(shù)庫
    基于Python的開源GIS應(yīng)用開發(fā)
    Scratch求最值和平均值
    電腦報(2020年34期)2020-09-12 14:03:42
    基于BB60C的IQ數(shù)據(jù)采集與存儲系統(tǒng)設(shè)計
    基于固件的遠(yuǎn)程身份認(rèn)證
    提取ROM固件中的APP
    電腦愛好者(2015年7期)2015-04-09 08:54:02
    一種通過USB接口的可靠固件升級技術(shù)
    Microchip推出具備雙ADC外設(shè)的全新器件,擴(kuò)展其低成本8位PIC?單片機(jī)產(chǎn)品線
    奧林巴斯XZ—2新固件升級
    中國攝影(2014年1期)2014-02-24 01:50:23
    貼身呵護(hù) 必不可少的PSP外設(shè)
    册亨县| 太和县| 崇阳县| 安康市| 宜兴市| 蒙自县| 石家庄市| 都安| 错那县| 张家口市| 潼关县| 阿图什市| 秦皇岛市| 余姚市| 桃园县| 遂宁市| 广安市| 水富县| 六盘水市| 辽阳市| 根河市| 新宾| 玛多县| 江安县| 榆树市| 察哈| 台中市| 佛坪县| 毕节市| 通山县| 若羌县| 岗巴县| 分宜县| 平陆县| 德阳市| 洪泽县| 麟游县| 江山市| 台北市| 抚顺县| 新宁县|