LPC2103和SI4432的無(wú)線通信系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:目前大多數(shù)無(wú)線通信設(shè)備通信距離近,硬件成本高,設(shè)計(jì)復(fù)雜。本設(shè)計(jì)采用基于微功率通信芯片SI4432、LPC2103微控制器和μC/OS-II嵌入式操作系統(tǒng)設(shè)計(jì)的無(wú)線通信系統(tǒng),不僅通信距離遠(yuǎn)、模塊成本低、集成度高、通信質(zhì)量高,而且軟件設(shè)計(jì)簡(jiǎn)單、擴(kuò)展性好,可廣泛用于工業(yè)控制、終端通信、智能控制等領(lǐng)域。
引言
隨著信息技術(shù)的飛速發(fā)展,短距離無(wú)線通信技術(shù)的應(yīng)用已經(jīng)越來(lái)越廣泛,硬件低成本,協(xié)議簡(jiǎn)單的無(wú)線通信系統(tǒng)越來(lái)越受到歡迎?,F(xiàn)有的一些通信技術(shù)包括WiFi和UWB,WiFi是一種無(wú)線網(wǎng)絡(luò)通信技術(shù),可以改善基于IEEE802.11標(biāo)準(zhǔn)的無(wú)線網(wǎng)絡(luò)產(chǎn)品之間的互通性。UWB(Ultra Wideband)是一種無(wú)載波通信技術(shù),它利用納秒至微微秒級(jí)的非正弦波窄脈沖傳輸數(shù)據(jù)。但采用這些方式其硬件成本較高,協(xié)議相對(duì)復(fù)雜。本文采用基于通信芯片SI4432設(shè)計(jì)的無(wú)線通信系統(tǒng),不儀通信質(zhì)量好,而且成本低和開(kāi)發(fā)難度低,可應(yīng)用于無(wú)線通信、智能控制等領(lǐng)域。
1 系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)
本方案采用分布集散數(shù)據(jù)采集控制系統(tǒng)結(jié)構(gòu),如圖1所示,由一個(gè)控制工作站(主操作臺(tái))、多個(gè)無(wú)線監(jiān)控網(wǎng)關(guān)和多個(gè)無(wú)線控制節(jié)點(diǎn)組成。無(wú)線控制節(jié)點(diǎn)(即用戶所使用的設(shè)備和無(wú)線I/O模塊)通過(guò)無(wú)線監(jiān)控網(wǎng)關(guān)與控制工作站通信。
2 無(wú)線通信系統(tǒng)總體設(shè)計(jì)
該系統(tǒng)用LPC2103微控制器控制SI4432實(shí)現(xiàn)數(shù)據(jù)收發(fā),系統(tǒng)軟件采用μC/OS-II嵌入式操作系統(tǒng)。μC/OS-II采用的是可剝奪型實(shí)時(shí)多任務(wù)內(nèi)核,該通信系統(tǒng)將分解成若干任務(wù),實(shí)現(xiàn)模塊化設(shè)計(jì)。串口接收任務(wù)將數(shù)據(jù)寫入發(fā)送緩沖區(qū),發(fā)送任務(wù)從發(fā)送緩沖區(qū)取得數(shù)據(jù)并將數(shù)據(jù)傳輸給SI4432進(jìn)行編碼處理,并以特定的格式經(jīng)天線發(fā)送給接收模塊。接收任務(wù)負(fù)責(zé)接收來(lái)自SI4432的數(shù)據(jù),并將數(shù)據(jù)寫入接收緩沖區(qū),串口的接收任務(wù)將數(shù)據(jù)傳到PC機(jī)或其他設(shè)備。無(wú)線收發(fā)模塊的硬件結(jié)構(gòu)如圖2所示。
3 系統(tǒng)硬件設(shè)計(jì)
主控芯片采用飛利浦公司生產(chǎn)的LPC2103芯片,LPC2103是基于ARM7TDMI-S CPU的微控制器,由于內(nèi)置了寬范圍的串行通信接口(范圍從多個(gè)UART、SPI和SSP到兩條I2C總線)和8 KB的片內(nèi)SRAM,非常適合通信網(wǎng)關(guān)和協(xié)議轉(zhuǎn)換器應(yīng)用,可以通過(guò)內(nèi)置SPI控制器對(duì)SI4432的內(nèi)部寄存器進(jìn)行讀寫操作,根據(jù)實(shí)際情況配置各項(xiàng)參數(shù)。通過(guò)SPI接口完成對(duì)SI4432的各種配置和操作,如初始化配置、讀寫數(shù)據(jù)、訪問(wèn)FIFO等。MOSI和MISO用于實(shí)現(xiàn)LPC2103到SI4432的雙工傳輸;SCK用于串行數(shù)據(jù)傳輸?shù)耐?nSEL作為片選信號(hào)。SPI接口示意圖如圖3所示。
4 系統(tǒng)軟件設(shè)計(jì)
采用μC/OS-II作為操作系統(tǒng),該系統(tǒng)將分解成幾個(gè)任務(wù):系統(tǒng)初始化任務(wù)、SI4432發(fā)射任務(wù)、SI4432接收任務(wù)、讀緩沖區(qū)任務(wù)、寫緩沖任務(wù)。軟件合理設(shè)定任務(wù)的優(yōu)先級(jí),μC/OS-II是基于優(yōu)先級(jí)調(diào)度執(zhí)行的。
4.1 系統(tǒng)初始化任務(wù)
系統(tǒng)初始化任務(wù)包括目標(biāo)板初始化、SPI接口初始化、SI4432初始化。
4.1.1 目標(biāo)板初始化
目標(biāo)板初始化主要是定時(shí)器0初始化和注冊(cè)定時(shí)器0中斷服務(wù)程序。μC/OS-II要求提供時(shí)鐘中斷以實(shí)現(xiàn)延時(shí)與超時(shí)控制功能,多任務(wù)系統(tǒng)啟動(dòng)以后,也就是涮用OSStart()之后第一件事就是初始化定時(shí)器,定時(shí)器0初始化:
μC/OS-II中的時(shí)鐘節(jié)拍服務(wù)是通過(guò)在中斷服務(wù)子程序中調(diào)用OSTimeTick()實(shí)現(xiàn)的,OSTimeTick()跟蹤所有任務(wù)的定時(shí)器以及超時(shí)時(shí)限。
4.1.2 SPI接口初始化
為了使LPC2103與SI4432能更高速地進(jìn)行雙向數(shù)據(jù)傳輸,將前者配置為SPI主機(jī)模式后者為從機(jī)模式。由于SI4432的所有配置都是通過(guò)SPI接口進(jìn)行的,配置的恰當(dāng)與否對(duì)系統(tǒng)最終的通信效果有很大的影響。SPI初始化為主機(jī),部分程序如下:
4.1.3 SI4432初始化
SI4432主要是自組織協(xié)議設(shè)計(jì)和一些寄存器配置。自組織協(xié)議格式如圖4所示。
其中,Pre表示前導(dǎo)碼,這些字符雜波不容易產(chǎn)生,通過(guò)測(cè)試和試驗(yàn)發(fā)現(xiàn),噪聲中不容易產(chǎn)生0x55和0xAA等非常有規(guī)律的信號(hào),因此前導(dǎo)碼采用0x55AA;Sync(同步字)在前導(dǎo)碼之后,本系統(tǒng)設(shè)定的同步字為2B,同步字內(nèi)容為0x2DD4,接收端在檢測(cè)到同步字后才開(kāi)始接收數(shù)據(jù);本系統(tǒng)不需要TX header(幀頭);Data表示有效數(shù)據(jù);CRC表示檢驗(yàn)位,說(shuō)明采用何種校驗(yàn)方式,可避免接收錯(cuò)誤的數(shù)據(jù)包;SI4432內(nèi)部集成有調(diào)制/解調(diào)、編碼/解碼等功能,Pre、Sync和CRC都是由SI4432自動(dòng)填充,用戶只需設(shè)定數(shù)據(jù)包的組成結(jié)構(gòu)和有效數(shù)據(jù)即可。
4.2 SI4432發(fā)射任務(wù)
發(fā)射任務(wù)在LPC2103、SPI和SI4432的初始化后。配置寄存器使其進(jìn)入發(fā)射狀態(tài),然后讀取發(fā)射緩沖區(qū)(緩沖區(qū)就是一個(gè)靜態(tài)隊(duì)列數(shù)據(jù)結(jié)構(gòu))數(shù)據(jù)到TXFIFO里,當(dāng)數(shù)據(jù)包發(fā)送完時(shí),SI4432產(chǎn)生中斷,引腳nIRQ拉低從而通知LPC2103數(shù)據(jù)包發(fā)送完畢,LPC2103讀取該中斷信號(hào)從而釋放SI4432的nIRQ引腳,以便接收下一次中斷的產(chǎn)生。
無(wú)線監(jiān)控網(wǎng)關(guān)會(huì)根據(jù)所要傳遞到特定網(wǎng)關(guān)而切換到特定的信道,下面的子網(wǎng)關(guān)則使用特定的信道。無(wú)線發(fā)射流程圖如圖5所示。
4.3 SI4432接收任務(wù)
當(dāng)接收任務(wù)檢測(cè)到LPC2103的P0.16引腳被拉低時(shí),首先關(guān)閉SI4432接收,然后讀取其狀態(tài)寄存器釋放nIRQ,判斷數(shù)據(jù)包接收中斷和檢測(cè)該包是否有效。如果CRC也正確,LPC2103讀取RXFIFO中的數(shù)據(jù),將其寫入接收緩沖區(qū)(靜態(tài)隊(duì)列數(shù)據(jù)結(jié)構(gòu))。數(shù)據(jù)接收完畢后,清除RXFIFO打開(kāi)接收使系統(tǒng)進(jìn)入下一次數(shù)據(jù)通信,無(wú)線監(jiān)控網(wǎng)關(guān)會(huì)監(jiān)聽(tīng)所有的信道,而下面的子網(wǎng)關(guān)則使用特定的信道。無(wú)線接收程序流程如圖6所示。
4.4 讀緩沖區(qū)任務(wù)和寫緩沖任務(wù)
讀緩沖任務(wù)主要是讀取SI4432寫到緩沖區(qū)的數(shù)據(jù),傳送到串口,以便傳輸?shù)絇C或其他設(shè)備;寫緩沖區(qū)任務(wù)主要是把PC或其他設(shè)備準(zhǔn)備發(fā)射的數(shù)據(jù)由串口寫入到發(fā)射緩沖區(qū),由發(fā)射任務(wù)發(fā)射出去。
結(jié)語(yǔ)
本文設(shè)計(jì)了一種基于SI4432的無(wú)線通信平臺(tái),此通信平臺(tái)采用μC/OS-II和LPC2103作為操作系統(tǒng)和微控制器,通信的直線距離可達(dá)600~800 m,在建筑物內(nèi)通信質(zhì)量亦能得到保證,該通信平臺(tái)能夠應(yīng)用于多種場(chǎng)合。