亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于CC2530/μCOS-Ⅱ的井下數(shù)據(jù)采集器

        2014-03-23 01:10:04郭玲玲
        儀表技術(shù)與傳感器 2014年1期
        關(guān)鍵詞:單片機系統(tǒng)

        張 峰,郭玲玲,徐 釗

        (中國礦業(yè)大學(xué)信息與電氣工程學(xué)院,江蘇徐州 221008)

        0 引言

        煤礦安全一直備受社會關(guān)注,地面監(jiān)控室具有實時掌握井下人員的作業(yè)狀況與作業(yè)環(huán)境的能力,對保障煤礦人員生命安全與財產(chǎn)安全是至關(guān)重要的。為了能夠掌握礦井的安全狀況,需要通過傳感器實時采集井下諸如溫度,瓦斯?jié)舛?,人員加速度等數(shù)據(jù)參數(shù),然后通過無線的方式發(fā)送到井下接收器,上傳至監(jiān)控室分析顯示。數(shù)據(jù)采集系統(tǒng)是一個多任務(wù)的系統(tǒng),而且隨著對安全級別要求的提高,采集指標也在不斷的擴充。雖然已有很多數(shù)據(jù)采集系統(tǒng)應(yīng)用于井下,但是大多采集工作簡單劃一,任務(wù)間優(yōu)先關(guān)系不清,系統(tǒng)不具有良好的擴展性。鑒于井下特殊的作業(yè)環(huán)境與CAN總線的通信優(yōu)點,目前CAN總線還廣泛應(yīng)用于井下通信系統(tǒng)的有線數(shù)據(jù)傳輸(如人員定位系統(tǒng))[1],為了使采集器能夠方便地加人井下既有CAN總線網(wǎng),設(shè)計一款具有多種傳感器數(shù)據(jù)采集功能和無線射頻轉(zhuǎn)CAN總線功能的數(shù)據(jù)采集器是必要的。

        1 μC/OS-Ⅱ的移植

        μC/OS-Ⅱ是一種免費公開源代碼,結(jié)構(gòu)小巧,具有可剝奪內(nèi)核的實時操作系統(tǒng)。它具有多任務(wù)的特點,目前可以管理64個不同優(yōu)先級的任務(wù);移植簡單;內(nèi)核可裁減;多任務(wù)可確定性;并提供很多系統(tǒng)服務(wù),比如信號量,消息郵箱,消息隊列,內(nèi)存的分配和釋放[2]。目前在已經(jīng)廣泛移植于Arm處理器,和MCS-51。而在CC2530上的移植還較少見,所以文中著重介紹了μC/OS-Ⅱ在CC2530上的移植過程。

        1.1目標機的硬件資源和采用的編譯器

        該設(shè)計采用CC2530無線射頻芯片,以實現(xiàn)對無線射頻數(shù)據(jù)的收發(fā)。CC2530是符合2.4 G IEEE802.15.4標準的射頻收發(fā)器,支持數(shù)據(jù)傳輸速率高達250 kbit/s,最快可以在600 μs下實現(xiàn)一幀鏈路層數(shù)據(jù)發(fā)送。此芯片可以實現(xiàn)多點之間相互組網(wǎng)。內(nèi)置32 K晶振的休眠模式定時器,滿足無線傳感網(wǎng)絡(luò)的節(jié)點低功耗的要求。該芯片內(nèi)部具有8 K的RAM,滿足大部分工程軟件的在線數(shù)據(jù)空間開辟。CC2530還內(nèi)置了256 K的flash存儲器,可以實現(xiàn)對大量數(shù)據(jù)的無丟失保存。內(nèi)置13位精度的A/D轉(zhuǎn)換模塊,可以實現(xiàn)對模擬數(shù)據(jù)的采樣。CC2530還提供了豐富的數(shù)模接口,對于目前廣泛采用的SPI,RS232/485等數(shù)字通信接口基本都能實現(xiàn)直接通信,對于IIC和單總線接口,可以通用IO口模擬實現(xiàn)。所以,CC2530在能夠?qū)崿F(xiàn)無線數(shù)據(jù)通信的同時,還能夠?qū)崿F(xiàn)對目前主流傳感器的數(shù)據(jù)采集。節(jié)點硬件結(jié)構(gòu)示意圖如圖1所示。

        圖1 節(jié)點硬件結(jié)構(gòu)示意圖

        移植中采用IAR的EW8051-EV-730B。它是目前最高效,靈活的CC2530開發(fā)平臺。IAR編譯器會自動虛擬出一個XSTACK堆棧(棧頂指針為XSP)和9個虛擬寄存器,以實現(xiàn)函數(shù)的可重入性。在保存現(xiàn)場時,需要將這些寄存器都入棧保護。另外,在IAR的EW8051環(huán)境下移植μcos-Ⅱ還支持在線調(diào)試與仿真。

        1.2具體移植步驟

        移植需要修改各個與硬件相關(guān)的文件,該移植涉及到以下幾個相關(guān)文件。

        1.2.1修改OS_CPU.H文件

        首先,需要在OS_CPU.H中針對具體的處理器字長重新定義一系列數(shù)據(jù)類型。因為CC2530的棧寬度是8位的,所以將堆棧的數(shù)據(jù)類型聲明為8位無符號字符類型,即#define unsigned char OS_STK.

        其次,為了避免在對臨界區(qū)代碼操作時間段內(nèi),發(fā)生中斷而產(chǎn)生不可控的影響。必須保證系統(tǒng)在進入臨界區(qū)之前關(guān)閉全局中斷,退出后再開放。

        最后,CC2530堆棧的增長方向為由高向低,需要在代碼中作相應(yīng)的更改。還由于CC2530的系統(tǒng)指令集中沒有軟中斷指令,所以用子程序調(diào)用模擬[2]。

        1.2.2修改OS_CPU_C.C文件

        這個文件中涉及的是任務(wù)堆棧初始化的相關(guān)操作,唯一需要修改的是函數(shù)OSTaskStkInit()。為了保證任務(wù)切換后能回到切換前的工作原點,μC/OS-Ⅱ中每個任務(wù)都有自己的堆棧空間,移植人員需要自己為任務(wù)設(shè)計任務(wù)堆棧,結(jié)構(gòu)如圖2所示。由于在井下數(shù)據(jù)采集系統(tǒng)中需要即時存儲大量的數(shù)據(jù)信息到CC2530的內(nèi)部RAM中,而由于內(nèi)部RAM空間有限,故只能CC2530的外部RAM中開辟每一個任務(wù)的任務(wù)堆棧映像,用以長期存儲每一個任務(wù)的環(huán)境參數(shù)。于是在任務(wù)切換時要進行任務(wù)堆棧映像和系統(tǒng)堆棧之間的復(fù)制操作。

        圖2 自定義任務(wù)堆棧結(jié)構(gòu)

        CC2530單片機的堆棧指針SP與51單片機相似,也總是先加1再存數(shù)據(jù)。因此,SP初始化時須指向系統(tǒng)堆棧起始地址減1處.在任務(wù)切換之初,需要先把當前任務(wù)的現(xiàn)場由系統(tǒng)堆棧復(fù)制保存到該任務(wù)的任務(wù)堆棧中。完成上述過程,需計算出SP-OSStkStart,得出堆棧長度,并長度值寫入任務(wù)堆棧映像最低地址空間;然后以SP-OSStkStart為長度,以任務(wù)堆棧映像最低地址為目標地址,以O(shè)SStkStart為起址,將系統(tǒng)堆棧的現(xiàn)場值拷貝到任務(wù)堆棧映像。

        由于IAR編譯器自動將函數(shù)編譯為可重入的,所以不需要在函數(shù)定義時加入關(guān)鍵字reentrant。編譯器在處理函數(shù)的可重入性時,會利用XSTACK仿真棧和虛擬寄存器,所以在進行任務(wù)切換時也要保存。

        用戶堆棧初始化時,堆棧從下向上依次保存:用戶堆棧長度(26),程序指針(PCL,PCH),程序狀態(tài)字(PSW),累加寄存器(ACC),B寄存器,DPL,DPH,R寄存器(R0~R8),虛擬寄存器(VB,V0~V8),外部堆棧指針(XSPL,XSPH)。

        1.2.3修改OS_CPU_ASM.ASM文件

        此文件中需要自己編寫4個簡單的函數(shù):

        (1)使就緒態(tài)任務(wù)中優(yōu)先級最高的任務(wù)開始執(zhí)行的OSStartHighRdy()函數(shù);

        (2)軟件模擬實現(xiàn)的任務(wù)切換函數(shù)OSCtxSw();

        (3)中斷級任務(wù)切換函數(shù)OSIntCtxSw();

        (4)系統(tǒng)時鐘資源提供函數(shù)OSTickISR()。

        另外還需要定義8個虛擬寄存器和仿真堆棧XSTACK的棧頂指針XSP的地址。

        OSTickISR()是一個時鐘節(jié)拍函數(shù),它為系統(tǒng)提供一個時鐘資源來實現(xiàn)時延和定時功能。為了保障系統(tǒng)的實時性和穩(wěn)定性,通常時鐘節(jié)拍的頻率設(shè)置在10~100 Hz之間。本次移植選用CC2530的T1定時器作為tick時鐘。大多數(shù)移植都是將本段函數(shù)以匯編形式寫在OS_CPU_ASM.ASM文件中,而本次移植將以C語言的形式放在C文件中,匯編過程由編譯器完成。代碼如下:

        #pragma vector = T1_VECTOR

        __interrupt void T1_ISR(void)

        {IRCO.&= ~0x02;//清中斷標示

        OSIntEnter();

        OSTimeTick();

        OSIntExit();

        }

        前3個函數(shù)其移植過程和代碼與MCS-51單片機基本相似,只是需要保存的寄存器不同,可以參考MCS-51單片機的移植,不再詳述。

        2 模塊硬件設(shè)計

        該設(shè)計采用CC2530無線射頻芯片,以實現(xiàn)對無線射頻數(shù)據(jù)的收發(fā)和滿足對各種傳感器數(shù)據(jù)采集的需要。文中只介紹了電源部分和CAN通信部分的設(shè)計,其他傳感器根據(jù)需要可以方便地擴展。

        電源部分:由于CC2530和MCP2510工作電壓均為3.3 V,而且鑒于井下嚴酷的工作環(huán)境,數(shù)據(jù)采集器會受高溫、電磁干擾等影響。通過查詢,決定采用TPS63031作為3.3 V輸出的電壓轉(zhuǎn)換芯片,TPS63031的工作電壓范圍為2.4~5.5V,可輸出高達800mA的電流。由于CC2530容易受到電源波紋的影響,所以在3.3V的輸出后面增加了一個低壓差線性穩(wěn)壓器(LDO)[3],用來濾除DC-DC模塊輸出的比較大的電源波紋,提高輸出電壓的穩(wěn)定性。電源原理圖如圖3所示。

        圖3 電源模塊原理圖

        CAN通信部分:采用MCP2510作為CAN控制器。CC2530與MCP2510采用SPI通信方式,MCP2510作為從器件,通信時鐘由CC2530提供。MCP2510的外部中斷管腳接CC2530的一個可檢測中斷的管腳,以實時響應(yīng)數(shù)據(jù)幀發(fā)送完成。為了保證數(shù)據(jù)傳輸?shù)乃俣龋蕴岣呦到y(tǒng)的實時性,SPI通信波特率最好設(shè)置為2 Mbps.另外,鑒于井下惡劣的通信環(huán)境,采用帶隔離的CTM8251A作為CAN收發(fā)器芯片,該芯片具有抗電子干擾和高壓瞬態(tài)保護功能。通信模塊硬件連接如圖4所示。

        圖4 通信模塊硬件設(shè)計原理圖

        3 模塊軟件設(shè)計

        鑒于μC/OS-Ⅱ在任務(wù)處理方面的突出優(yōu)點,該次軟件設(shè)計選擇了基于μC/OS-Ⅱ操作系統(tǒng)。

        3.1系統(tǒng)軟件初始化

        系統(tǒng)運行時,首先要對系統(tǒng)的硬件進行初始化,其中包括主要CC2530相關(guān)的無線寄存器初始化,時鐘初始化,SPI通訊端口初始化,各外圍模塊的初始化。然后初始化操作系統(tǒng),其中包括初始化所有的數(shù)據(jù)結(jié)構(gòu),分配任務(wù)堆棧空間,然后建立任務(wù)間通信將要用到的的信號量或者消息隊列,進而創(chuàng)建任務(wù)[4]。并且根據(jù)實際需要,為每個任務(wù)分配不同的運行優(yōu)先級。在初始化時,將所有任務(wù)設(shè)置為就緒態(tài),系統(tǒng)首先執(zhí)行最高優(yōu)先級任務(wù)。在該次設(shè)計中,共設(shè)計了4個任務(wù):數(shù)據(jù)采集,數(shù)據(jù)存儲任務(wù),數(shù)據(jù)處理任務(wù),CAN數(shù)據(jù)發(fā)送任務(wù)。數(shù)據(jù)的接收由CC2530的無線接收中斷完成。數(shù)據(jù)發(fā)送任務(wù)負責通過SPI接口控制CAN控制器,實現(xiàn)CAN幀格式的數(shù)據(jù)收發(fā)。將數(shù)據(jù)以CAN幀格式發(fā)送出去。為了保證數(shù)據(jù)不丟失,需要將數(shù)據(jù)存儲任務(wù)設(shè)置為最高優(yōu)先級。整個軟件系統(tǒng)的工作流程如圖5所示。初始化代碼如下:

        void main()

        {

        HalInit();//系統(tǒng)硬件初始化

        OSInit();//初始化系統(tǒng)軟件

        ControlSem1=OSSemCreatr(0);//創(chuàng)建信號量用于通知發(fā)送任務(wù)

        DataMen=OSMemCreate(part,30,60,&err);

        OSTaskCreate(Task1,(void

        *)0,&Task1Stk[0],1);//數(shù)據(jù)采集任務(wù)(含無線)

        OSTaskCreate(Task2,(void

        *)0,&Task1Stk[1],2);//數(shù)據(jù)存儲任務(wù)

        OSTaskCreate(Task3,(void *)0,&Task2Stk[2],5);//數(shù)據(jù)處理任務(wù)

        OSTaskCreate(Task4,(void *)0,&Task2Stk[3],6);//數(shù)據(jù)發(fā)送任務(wù)

        OSStart();

        }

        圖5 系統(tǒng)的工作流程

        3.2CAN通訊程序設(shè)計

        MCP2510正常工作之前需要進行正確的初始化,包括設(shè)置SPI接口的數(shù)據(jù)傳輸速率,CAN通信的波特率,MCP2510的接收過濾器和屏蔽寄存器以及發(fā)送和接收中斷允許標志位。采用中斷方式進行數(shù)據(jù)的收發(fā)。每次發(fā)送或接收完1幀的數(shù)據(jù),控制器都通過外部中斷告之CC2530單片機,以便進行下一幀的數(shù)據(jù)處理。

        (1)CAN控制器初始化。主要配置控制寄存器CANCTRL,位定時寄存器CNF,接收屏蔽寄存器RXFOSID,發(fā)送控制寄存器TXB0CTL,發(fā)送屏蔽寄存器TXBOSID,中斷使能寄存器CANINTF。

        (2)CAN數(shù)據(jù)的發(fā)送和接收。在對MCP2510進行任何操作之前,CC2530的P1_6管腳都需要拉低,使得MCP2510選通。只要通過SPI接口將待發(fā)送的數(shù)據(jù)填裝到CAN發(fā)送寄存器,然后下達數(shù)據(jù)發(fā)送命令。MCP2510將數(shù)據(jù)以標準的CAN鏈路層幀格式將數(shù)據(jù)發(fā)往總線。數(shù)據(jù)接收時通過SPI接口向控制器下達讀指令和地址碼。需要注意的是在執(zhí)行讀操作時,發(fā)送完讀指令及其地址碼之后,仍然需要向MCP2510提供時鐘,以接收“讀”到的數(shù)據(jù)[4]。

        4 模塊功能測試

        測試采用自制的無線數(shù)據(jù)采集模塊,該模塊的設(shè)計方案與文中提出的方案一致,完成無線數(shù)據(jù)接收,環(huán)境溫度采集處理。并通過CAN口發(fā)送出去。經(jīng)由KJJ43型傳輸接口,將CAN幀格式數(shù)據(jù)轉(zhuǎn)化成RS-232幀格式。最終交予KLX5L(A)礦用信息礦燈顯示。測試系統(tǒng)的數(shù)據(jù)走向如圖6所示。

        圖6測試數(shù)據(jù)流向

        測試結(jié)果表明,數(shù)據(jù)能及時被采集到,并且被KLX5L(A)礦用信息礦燈穩(wěn)定顯示。

        5 結(jié)束語

        在CC2530芯片上移植μC/OS-Ⅱ操作系統(tǒng),需要根據(jù)MCU的特定配置對系統(tǒng)源文件做相應(yīng)的修改,在調(diào)試過程中需要仔細。移植成功后,可以根據(jù)需求自己定制相關(guān)任務(wù),甚至是對系統(tǒng)本身的調(diào)度機制做進一步地修改。μC/OS-Ⅱ系統(tǒng)在CC2530芯片上的成功移植,將為井下無線數(shù)據(jù)采集系統(tǒng)實現(xiàn)多任務(wù)管理提供有力的軟件支持。下一步將要把該采集板可插拔地內(nèi)置于KLX5L(A)智能礦燈內(nèi),使該燈可以具有溫度,瓦斯?jié)舛?,加速度采集功能?/p>

        參考文獻:

        [1]張峰,徐釗,張凱婷.井下人員定位系統(tǒng)讀卡器存儲算法分析與測試.工礦自動化,2012(8):79-82.

        [2]趙建華,汪文勇.μC/OS-Ⅱ內(nèi)核在80C51系列單片機上的移植.計算機工程與設(shè)計,2007(5):2096-2099.

        [3]孟海斌,張紅雨.高效率RFID手持機電源設(shè)計.通信電源技術(shù),2011(3):2096-2099.

        [4]蔣永年,馮平,肖偉.基于LPC2294和μCOS-Ⅱ的儲油區(qū)測控系統(tǒng)智能節(jié)點.儀表技術(shù)與傳感器,2011(3):107-110.

        [5]楊慶華,張景元.單片機和MCP2510的CAN總線通信模塊設(shè)計.計算機工程與科學(xué),2007(3):35-37.

        猜你喜歡
        單片機系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于單片機的SPWM控制逆變器的設(shè)計與實現(xiàn)
        電子制作(2019年13期)2020-01-14 03:15:28
        基于PowerPC+FPGA顯示系統(tǒng)
        基于單片機的層次漸變暖燈的研究
        電子制作(2019年15期)2019-08-27 01:12:10
        基于單片機的便捷式LCF測量儀
        電子制作(2019年9期)2019-05-30 09:42:02
        半沸制皂系統(tǒng)(下)
        小議PLC與單片機之間的串行通信及應(yīng)用
        電子制作(2018年12期)2018-08-01 00:48:04
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        日韩av高清无码| 国产av丝袜熟女丰满一区二区| 精品亚洲国产成人av色哟哟| 国产乱码一区二区三区爽爽爽| 99久久免费精品高清特色大片| 欧美日韩中文亚洲另类春色| 日韩极品免费在线观看| 亚洲国产精品一区二区久久恐怖片| 国产精品一卡二卡三卡| 亚洲最大日夜无码中文字幕| 国产亚洲欧洲三级片A级| 日产一区一区三区区别| 91福利国产在线观看网站| 国产激情小视频在线观看的| 夜夜爽夜夜叫夜夜高潮| 女人被男人躁得好爽免费视频| 麻豆亚洲av永久无码精品久久| 日本一区二区啪啪视频| 日日噜噜噜夜夜爽爽狠狠视频| 国产啪啪视频在线观看| 激情亚洲一区国产精品久久| 国产精成人品日日拍夜夜免费| 亚洲成人免费观看| 男女搞黄在线观看视频| av免费在线国语对白| 亚洲av无码国产精品色午夜字幕| 亚洲日韩精品欧美一区二区一| 久久青草国产免费观看| 亚洲天堂av黄色在线观看| 男人和女人做爽爽免费视频| 亚洲aⅴ在线无码播放毛片一线天| 97人妻视频妓女网| 男女动态视频99精品| 夜夜躁日日躁狠狠久久av| 亚洲成a人片在线观看无码| 麻豆国产AV网站| 国产tv不卡免费在线观看 | 免费无遮挡禁18污污网站| 日本欧美在线播放| 一本之道加勒比在线观看| 日本免费一区二区三区在线播放|