新聞中心

        EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 高速誤碼測(cè)試系統(tǒng)中的C8051F005運(yùn)用

        高速誤碼測(cè)試系統(tǒng)中的C8051F005運(yùn)用

        作者: 時(shí)間:2009-03-17 來(lái)源:網(wǎng)絡(luò) 收藏

          2.2 下位機(jī)軟件設(shè)計(jì)

           下位機(jī)采用中斷方式實(shí)現(xiàn)與上位機(jī)的通信,單片機(jī)用SPI與VSC8228模塊的通信。每當(dāng)串行口接收或發(fā)送完一組串行數(shù)據(jù)時(shí),就產(chǎn)生一個(gè)中斷請(qǐng)求。串行中斷請(qǐng)求在單片機(jī)芯片內(nèi)部自動(dòng)由硬件置位發(fā)生,具有實(shí)時(shí)性高的特點(diǎn)。圖3是單片機(jī)的控制程序流程。

           對(duì)單片機(jī)進(jìn)行程序初始化,包括看門狗、時(shí)鐘、I/O口、SPI寄存器、UART口等。單片機(jī)具有看門狗,但是看門狗到一定時(shí)間,將重啟單片機(jī),為防止這種現(xiàn)象的產(chǎn)生,初始化里禁止了看門狗。SPI的初始化主要是對(duì)啟動(dòng)SPI的相關(guān)控制寄存器進(jìn)行配置。UART的初始化主要是對(duì)串口的控制字進(jìn)行設(shè)置。I/O口的初始化通過(guò)設(shè)置交叉開(kāi)關(guān)來(lái)啟動(dòng)SPI與UART口,并將有關(guān)輸出設(shè)置為推挽輸出。

           高速誤碼測(cè)試系統(tǒng)中的C8051F005運(yùn)用

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

        高速誤碼測(cè)試系統(tǒng)中的C8051F005運(yùn)用
          使用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í)的將在上升沿發(fā)送數(shù)據(jù),下降沿接收數(shù)據(jù)(時(shí)序圖見(jiàn)圖2)。由于在MCU中,SCK的頻率可從系統(tǒng)時(shí)鐘分頻得到,因此該頻率可由下式給出:

          高速誤碼測(cè)試系統(tǒng)中的C8051F005運(yùn)用

          其中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è)模塊開(kāi)始工作。此時(shí),單片機(jī)每秒掃描一次所有寄存器的值,并將其值通過(guò)串口傳給界面,界面對(duì)串口傳送過(guò)來(lái)的數(shù)據(jù)進(jìn)行處理。
          高速誤碼測(cè)試系統(tǒng)中的C8051F005運(yùn)用

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



        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 阿勒泰市| 凤山县| 乐山市| 绩溪县| 东兴市| 永泰县| 鄯善县| 吉首市| 安新县| 南华县| 隆德县| 瑞金市| 沐川县| 伽师县| 且末县| 怀柔区| 满洲里市| 乐平市| 游戏| 阿巴嘎旗| 翁牛特旗| 牡丹江市| 七台河市| 突泉县| 体育| 额尔古纳市| 湖南省| 会泽县| 福泉市| 南康市| 元氏县| 丰顺县| 阳山县| 高雄市| 泸水县| 顺义区| 齐河县| 平南县| 酉阳| 翁牛特旗| 衡东县|