機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
C8051F005在高速誤碼測(cè)試系統(tǒng)中的運(yùn)用
C8051F005在高速誤碼測(cè)試系統(tǒng)中的運(yùn)用
 更新時(shí)間:2008-8-3 15:52:02  點(diǎn)擊數(shù):12
【字體: 字體顏色


    系統(tǒng)時(shí)鐘初始化模塊,由于是選擇外部晶振作為時(shí)鐘源,根據(jù)C8051F005的要求,在通過(guò)外部振蕩器控制寄存器OSCXCN選擇了外部晶振后,需等待至少1ms后再查詢等待OSCXCN寄存器中的D7位,即XTLVLD位變?yōu)?,表明外部晶振正在運(yùn)行并已工作穩(wěn)定,然后才能通過(guò)內(nèi)部振蕩器控制寄存器OSCICN的D3位,即CLKSL置1來(lái)選擇外部晶振。


    具體的參考程序如下:


   


    C8051F005使用4個(gè)特殊功能寄存器來(lái)實(shí)現(xiàn)對(duì)SPI的控制和訪問(wèn)。這4個(gè)寄存器分別是控制寄存器(SPI0CN)、數(shù)據(jù)寄存器(SPI0DAT)、配置寄存器(SPIOCFG)和時(shí)鐘頻率寄存器(SPI0CKR)。當(dāng)以C8051F005為主器件時(shí),應(yīng)將主允許標(biāo)志(MSTEN,SPI0CN.1)置1,同時(shí)將SPI使能SPIEN(SPI0CN.0)置1。通過(guò)CKPHA(SPI0CFG.7)和CKPOL(SPI0CFG.6)可選擇SPI相位與極性,從而實(shí)現(xiàn)SPI通信的四種模式,但因?yàn)閂SC8228只支持一種方式,所以將它們同時(shí)置為0,則空閑時(shí)SCK為低,此時(shí)的系統(tǒng)將在上升沿發(fā)送數(shù)據(jù),下降沿接收數(shù)據(jù)(時(shí)序圖見圖2)。由于在MCU中,SCK的頻率可從系統(tǒng)時(shí)鐘分頻得到,因此該頻率可由下式給出:


    


    其中fsysclk是系統(tǒng)時(shí)鐘頻率,SPI0CKR是SPI0CKR寄存器中的8位值。


    為了防止上次測(cè)試對(duì)本次的影響,在程序的初始化之后,對(duì)VSC8228寫入重肩命令,這樣每次運(yùn)行程序都將VSC8228的寄存器恢復(fù)為默認(rèn)值。界面發(fā)送的數(shù)據(jù)為16位,其中8位地址,8位數(shù)據(jù),而且每個(gè)數(shù)據(jù)是一個(gè)字符。為讓單片機(jī)識(shí)別控制命令已發(fā)完,最后一個(gè)16位數(shù)據(jù)設(shè)為FFFF。另外,每16位數(shù)據(jù)之間加入了100 ms的延時(shí),這樣Spcomm控件就會(huì)把每16位數(shù)據(jù)當(dāng)成1幀,單片機(jī)也能夠正確地接收所有數(shù)據(jù)。


    單片機(jī)用中斷的方法來(lái)接收界面?zhèn)鬟^(guò)來(lái)的數(shù)據(jù)。每接到一個(gè)數(shù)據(jù),即一個(gè)字符,就執(zhí)行中斷子程序,將接收到的數(shù)據(jù)的最低位存人數(shù)組。串口中斷子程序流程如圖4所示。當(dāng)接收到16個(gè),就接收完1幀,轉(zhuǎn)入執(zhí)行主程序去對(duì)收到的16位進(jìn)行處理。處理過(guò)程就是將收到的16個(gè)數(shù)據(jù)(存放在數(shù)組中),通過(guò)移位跟“或”運(yùn)算,綜合成16位的數(shù)據(jù)。然后,通過(guò)移位運(yùn)算,取高8位作為地址,低8位作為數(shù)據(jù)。對(duì)于接收的16位數(shù)據(jù),如果不是FFFF,則將提取出來(lái)的8位數(shù)據(jù),發(fā)送給提取出來(lái)的8位地址對(duì)應(yīng)的寄存器;如果接收的16位數(shù)據(jù)為FFFF,表示所有的控制命令已經(jīng)發(fā)完,這時(shí)VSC8228的全部寄存器設(shè)置完畢,VSC8228的碼型產(chǎn)生模塊以及檢測(cè)模塊開始工作。此時(shí),單片機(jī)每秒掃描一次所有寄存器的值,并將其值通過(guò)串口傳給界面,界面對(duì)串口傳送過(guò)來(lái)的數(shù)據(jù)進(jìn)行處理。


    


    本設(shè)計(jì)中,SPI的數(shù)據(jù)傳輸過(guò)程如下:


    ① 關(guān)閉中斷允許。


    ② MCU將VSC8228的NSS拉低(即置P2.4=0),以選中從器件VSC8228。


    ③ 將待發(fā)送的數(shù)據(jù)寫入數(shù)據(jù)寄存器(SPI0DAT),即寫發(fā)送緩沖器。如果SPI移位寄存器為空,發(fā)送緩沖器中的數(shù)據(jù)字節(jié)被傳送到移位寄存器,數(shù)據(jù)傳輸開始。


    ④ 在SCK上提供串行時(shí)鐘,同時(shí)在MOSI線上串行移出數(shù)據(jù)。傳輸結(jié)束后,SPIF(SPI0CN.7)標(biāo)志被置1。


    ⑤ 傳輸結(jié)束,將NSS拉高,打開中斷允許。


    以下是SPI寫VSC8228測(cè)試程序的關(guān)鍵代碼:


     


    


    2.3 上位機(jī)軟件設(shè)計(jì)


    上位機(jī)主要實(shí)現(xiàn)以下功能:顯示當(dāng)前日期和時(shí)間;根據(jù)檢測(cè)需要設(shè)置檢測(cè)參數(shù)(產(chǎn)生碼型、檢測(cè)碼型、速率、輸出去重、擺動(dòng)輸入均衡、探測(cè)門限等);運(yùn)行時(shí)間及BER的計(jì)算,控制按鈕及LED顯示檢測(cè)狀態(tài)。狀態(tài)燈可以顯示的狀態(tài)有“無(wú)信號(hào)”、“同步態(tài)”、“失同步態(tài)”與“等待態(tài)”等。它是在WindowsXP環(huán)境下采用Delphi語(yǔ)言編寫的。首先在Delphi里加載串行通信功能的SPCOMM控件,它使用非常方便。由于Delphi采用事件驅(qū)動(dòng)模式,程序員只需要對(duì)Delphi組件的屬性、事件進(jìn)行編程,然后再由這些組件對(duì)相應(yīng)的事件進(jìn)行響應(yīng)。這樣就使得各個(gè)事件彼此完全獨(dú)立,減少事件間的耦合性,可以大大提高程序的穩(wěn)定性和可靠性,同時(shí)簡(jiǎn)化程序的編碼過(guò)程。


    SPCOMM應(yīng)用的核心在于主線程、讀線程和寫線程之間的消息傳遞機(jī)制,而通信數(shù)據(jù)相關(guān)信息的傳遞也是以消息傳遞的方式進(jìn)行的。在使用SPCOMM進(jìn)行串口通信編程時(shí),需特別注意以下兩個(gè)問(wèn)題:首先,SPCOMM是通過(guò)ReadIntervalTimeout屬性的設(shè)置來(lái)確定所接收到的數(shù)據(jù)是否屬于同一幀數(shù)據(jù)的,其默認(rèn)值是100 ms。也就是說(shuō),只要任何兩個(gè)字節(jié)到達(dá)的時(shí)間間隔小于100 ms,都被認(rèn)為是屬于同一幀數(shù)據(jù)。另外,SPCOMM的默認(rèn)屬性設(shè)置是支持軟件流控制的,用于流控制的字符是13H(XoffChar)和11H(XonChar),當(dāng)單片機(jī)以二進(jìn)制方式發(fā)送數(shù)據(jù)時(shí),必須禁用SPCOMM對(duì)于軟件流控制的支持,即Inx_XonXoff-Flow屬性設(shè)為False,否則,在數(shù)據(jù)幀中出現(xiàn)的13H、11H會(huì)被SPCOMM作為控制字符而加以忽略。


    由于單片機(jī)的SPI口對(duì)VSC8228進(jìn)行控制時(shí)須向每個(gè)寄存器發(fā)控制字,所以界面就要求發(fā)送1個(gè)地址加1個(gè)字節(jié)數(shù)據(jù)的形式,這樣就有16位;同時(shí)為單片機(jī)能夠方便地分清每個(gè)幀(1字節(jié)地址加1字節(jié)數(shù)據(jù)),每次發(fā)送1幀就延時(shí)100 ms。單片機(jī)每秒掃描1次VSC8228的全部寄存器,并將數(shù)據(jù)傳送給界面,因此,界面首先要一幀一幀地識(shí)別出來(lái),然后對(duì)于某些地址的數(shù)據(jù)進(jìn)行特定的操作。


    誤碼率是誤碼個(gè)數(shù)與碼總個(gè)數(shù)的比值。碼總個(gè)數(shù)是檢測(cè)時(shí)間和速率的乘積。對(duì)不同的速率有不同的總數(shù)。由此,得出誤碼率。


    關(guān)鍵代碼如下:


    


   


    3 誤碼測(cè)試性能


    本設(shè)計(jì)經(jīng)實(shí)驗(yàn)測(cè)試,上位機(jī)與下位機(jī)的串口通信以及MCU與誤碼測(cè)試模塊的通信都能正確傳輸。為適應(yīng)高速測(cè)試,目前SPI的傳輸速率(指SCK頻率)為2 MHz。根據(jù)本方案設(shè)計(jì)誤碼檢測(cè)儀已運(yùn)用于EPON光收發(fā)模塊的連續(xù)碼測(cè)試。與臺(tái)灣宜捷威科技的FMTS-3000以及安立的MP1630的測(cè)試比較結(jié)果看,本誤碼測(cè)試儀其誤碼數(shù)量級(jí)與上述兩種設(shè)備基本一致,但是不能支持突發(fā)誤碼的測(cè)試。對(duì)突發(fā)誤碼測(cè)試的支持是項(xiàng)目組下一步研究的目標(biāo)。


    結(jié) 語(yǔ)


    VSC8228芯片支持速率多樣,它內(nèi)置PBRS及其他碼型的產(chǎn)生及探測(cè)模塊。筆者利用該特點(diǎn)設(shè)計(jì)出一種基于C8051F005單片機(jī)的廉價(jià)高速誤碼儀,探討了利用Delphi里的SPCOMM控件來(lái)實(shí)現(xiàn)PC機(jī)與C8051F005之間串行通信的方法,以及C8051F005與VSC8228的SPI通信過(guò)程。設(shè)計(jì)的誤碼儀支持的測(cè)試碼型有27、223、231的偽隨機(jī)碼,40或64位用戶定義碼型以及光纖信號(hào)CRPAT、CJT-PAT、CSPAT碼型等,一次可測(cè)誤碼高達(dá)43億個(gè),可測(cè)碼速高達(dá)4.25 Gbps在EPON光收發(fā)模塊中實(shí)現(xiàn)了誤碼測(cè)試,效果較好,而且功耗低,有較高的實(shí)用價(jià)值。

[1]



  • 上一篇: 基于C8051F單片機(jī)的氣流儀
  • 下一篇: 基于DSP芯片的超光譜圖像壓縮技術(shù)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1