<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于無(wú)線(xiàn)傳感器網(wǎng)絡(luò )的CAN總線(xiàn)互聯(lián)

基于無(wú)線(xiàn)傳感器網(wǎng)絡(luò )的CAN總線(xiàn)互聯(lián)

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

TinyOS是一種組件架構方式的開(kāi)源的嵌入式操作系統,一個(gè)應用程序可以通過(guò)連接配置文件(a wiring specification)將各種組件連接起來(lái),以完成它所需要的功能。TinyOS的應用程序都是事件驅動(dòng)模式的,采用事件觸發(fā)去喚醒工作。tasks一般用在對于時(shí)間要求不是很高的應用中,且tasks之間是平等的,即在執行時(shí)是按先后順序,一般為了減少tasks的運行時(shí)間,要求每一個(gè)task都很短小,能夠使系統的負擔較輕;events一般用在對于時(shí)間要求很?chē)栏竦膽弥?,而且它可以?xún)?yōu)先于tasks和其他events執行,可以被一個(gè)操作完成或是來(lái)自外部環(huán)境的事件觸發(fā),在TinyOS中一般由硬件中斷處理來(lái)驅動(dòng)事件。在TinyOS中由于tasks之間不能互相占先執行,所以TinyOS沒(méi)有提供任何阻塞操作,為了讓一個(gè)耗時(shí)較長(cháng)的操作盡快完成,一般都是將對這個(gè)操作的需求及其完成分開(kāi)來(lái)實(shí)現,以便獲得較高的執行效率。由于在Tiny-OS中沒(méi)有進(jìn)程管理的概念,它對任務(wù)是按簡(jiǎn)單的FIFO隊列進(jìn)行處理的,對資源采取預先分配,且這個(gè)隊列里最多只能有7個(gè)未解決的任務(wù)。我們設計時(shí),主要處理三類(lèi)事件,即串口接收數據事件、接收數據事件和定時(shí)器事件。

①串口接收數據事件。每次節點(diǎn)從串口接收到一個(gè)字節的數據將觸發(fā)該事件。對于信息采集任務(wù)來(lái)說(shuō),其信息是定時(shí)采集的。同時(shí),的速率遠遠大于傳輸的速率。因此,在節點(diǎn)開(kāi)辟了一段較大的緩存區,對傳過(guò)來(lái)的數據進(jìn)行緩存。該緩存區的大小取決于傳輸的速率以及在一個(gè)定時(shí)采集周期的數據量大小。假設無(wú)線(xiàn)傳輸的速率為V、緩存區大小為Mem、采集周期為T(mén)、每個(gè)采集周期的數據量為Data,注意V為傳輸有效數據的速率,即要去掉協(xié)議開(kāi)銷(xiāo)以及管理和控制開(kāi)銷(xiāo),則至少滿(mǎn)足V×T≥Data,Mem≥Data。為提高無(wú)線(xiàn)傳輸的效率,不是每次從串口接受到一個(gè)字節就從無(wú)線(xiàn)接口發(fā)走,而是每次緩存的字節數達到無(wú)線(xiàn)傳輸一個(gè)數據包的大小時(shí),啟動(dòng)任務(wù)一UARTRcvdTask。這種采用任務(wù)的方式進(jìn)行實(shí)際的無(wú)線(xiàn)數據傳輸可以避免阻塞其他event事件。

②無(wú)線(xiàn)接受數據事件。每次節點(diǎn)從無(wú)線(xiàn)接口接受到一個(gè)數據包將觸發(fā)該事件。事件處理程序主要從協(xié)議數據包中獲取傳輸數據,并且緩存于接受緩存區,具體地怎么處理無(wú)線(xiàn)接受的數據的工作,通過(guò)啟動(dòng)任務(wù)――RadioRcvdTask來(lái)完成,以避免阻塞其他event事件。

③定時(shí)器事件。該事件定時(shí)觸發(fā)。該事件處理程序主要定時(shí)判斷串口接受數據緩存區是否有數據,如果有的話(huà),則啟動(dòng)任務(wù)――UARTRcvdTask,以避免到串口收到的數據不足一個(gè)協(xié)議數據包時(shí),會(huì )長(cháng)期滯留在串口接受數據緩存區中。

4 性能分析和實(shí)驗

整個(gè)系統的性能主要取決于無(wú)線(xiàn)傳輸的速率。無(wú)線(xiàn)CC1000使用頻率為14.745 MHz的晶振作為驅動(dòng),在該驅動(dòng)下面CC1000可以提供的最大數據傳輸率為19.2 KB/s??紤]無(wú)線(xiàn)傳輸協(xié)議消耗,無(wú)線(xiàn)傳輸數據報的格式如下:

其中TOSH_DATA_LENGTH=29,故協(xié)議的理論有效數據比率約為70%。同時(shí),為提高無(wú)線(xiàn)傳輸的效率,不是每次從串口接受到一個(gè)字節就從無(wú)線(xiàn)接口發(fā)走,而是每次緩存的字節數達到無(wú)線(xiàn)傳輸一個(gè)數據包的大小時(shí),才啟動(dòng)發(fā)送任務(wù),故無(wú)線(xiàn)有效傳輸速率約為13.4 KB/s,,對于本系統應用來(lái)說(shuō),CAN總線(xiàn)的采樣周期為10 s,每次采樣數據為1 K數據。雖然,CAN總線(xiàn)速率相對來(lái)說(shuō)較高,但是通過(guò)緩存完全可以滿(mǎn)足需求。在性能測試中,該系統持續運行20多個(gè)小時(shí),收發(fā)均無(wú)問(wèn)題。

5 結 論

本文無(wú)線(xiàn)給出一種連接CAN總線(xiàn)的無(wú)線(xiàn)通道設計,主要包括CAN總線(xiàn)無(wú)線(xiàn)接入控制模塊電路設計以及無(wú)線(xiàn)節點(diǎn)的通信協(xié)議設計等內容。目前,該系統已經(jīng)實(shí)現,實(shí)際使用效果良好。本文內容對于一般的信息采集無(wú)線(xiàn)傳輸系統設計具有較好的借鑒意義。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>