LPC1766與Si4432的無線數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:本文設(shè)計(jì)了一種基于微功率無線收發(fā)芯片Si4432的遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng)。該系統(tǒng)采用ARM Cortex—M3核芯片LPC1766,通過SSP控制器操作射頻收發(fā)芯片,詳細(xì)論述了芯片基于時(shí)序的編程方法。該方案的運(yùn)用可以實(shí)現(xiàn)無線數(shù)據(jù)的可靠收發(fā),具有良好通信效果。
關(guān)鍵詞:微功率;無線數(shù)據(jù)傳輸;遠(yuǎn)程控制
引言
隨著社會(huì)的發(fā)展,空調(diào)系統(tǒng)廣泛應(yīng)用于現(xiàn)代辦公大樓及高層建筑中,空調(diào)在改善和提高建筑物內(nèi)部環(huán)境質(zhì)量的同時(shí),也帶來了巨大的能源消耗。在現(xiàn)代樓宇建筑中,每年的夏冬兩季建筑物的大部分能耗被空調(diào)所占據(jù),因此如何通過科學(xué)的方法降低空調(diào)能耗,是一個(gè)亟待解決的問題。
積極地開發(fā)與合理地運(yùn)用節(jié)能控制技術(shù),將分散的空調(diào)進(jìn)行集中統(tǒng)一的管理是降低空調(diào)能耗的有效途徑。隨著傳感器技術(shù)、網(wǎng)絡(luò)技術(shù)、計(jì)算機(jī)技術(shù)的發(fā)展,各種信息數(shù)據(jù)的檢測(cè)、傳送、分析處理都具備了實(shí)現(xiàn)的條件和手段,促進(jìn)了物聯(lián)網(wǎng)核心技術(shù)的迅猛發(fā)展,使分體空調(diào)控制的集中化、網(wǎng)絡(luò)化成為可能。
通過研究物聯(lián)網(wǎng)的構(gòu)成及實(shí)際應(yīng)用模式,探索將其引入到分體空調(diào)集中控制系統(tǒng)中來,構(gòu)建一套基于物聯(lián)網(wǎng)的分體空調(diào)節(jié)能控制系統(tǒng)。由于各個(gè)感知節(jié)點(diǎn)分布較廣,傳統(tǒng)單一的有線傳輸方式在某些應(yīng)用中存在傳輸不穩(wěn)定、人機(jī)交互性不夠好、控制實(shí)時(shí)性不強(qiáng)、網(wǎng)絡(luò)不夠融合、布線不方便等缺點(diǎn)。因此,信息傳輸網(wǎng)絡(luò)應(yīng)建成基于物聯(lián)網(wǎng)技術(shù)的有線和無線相結(jié)合的混雜網(wǎng)絡(luò)架構(gòu),將數(shù)據(jù)匯聚至集中器統(tǒng)一管理,實(shí)現(xiàn)分體空調(diào)系統(tǒng)運(yùn)行狀態(tài)、能耗以及環(huán)境狀況等數(shù)據(jù)準(zhǔn)確、穩(wěn)定的傳輸。其系統(tǒng)結(jié)構(gòu)如圖1所示。
1 LPC1766和Si4432芯片簡(jiǎn)介
LPC1766是NXP公司推出的基于Cortex—M3內(nèi)核的LPC1700系列微控制器,集成10/100M Ethemet MAC、CAN總線通道、SPI接口、I2C總線接口、ADC模塊等,其擁有豐富的外圍接口,適用于要求高度集成和低功耗的嵌入式場(chǎng)合。硬件組成主要包括以太網(wǎng)模塊、RS485模塊、傳感器模塊、繼電器模塊等。
射頻收發(fā)采用的是Silicon Labs公司的Si4432芯片,該芯片集成度高、體積小、功耗低,具有-118 dBm的超高靈敏度,可提供極佳的鏈路質(zhì)量,在擴(kuò)大傳輸范圍的同時(shí)將功耗降至最低。其工作頻段范圍為240~930 MHz,最高輸出功率可達(dá)+20 dBm,傳輸距離遠(yuǎn)。Si4432內(nèi)部集成了天線分集、休眠喚醒定時(shí)器、64字節(jié)收發(fā)FIFO等功能。同時(shí),Si4432芯片還具有跳頻和信道信號(hào)強(qiáng)度評(píng)估等功能。其外圍電路僅需要一個(gè)30 MHz晶振及若干個(gè)電阻、電容、電感等,電路設(shè)計(jì)簡(jiǎn)單、成本低廉。因此非常適用于對(duì)尺寸和成本敏感的大批量生產(chǎn)中的應(yīng)用。
2 硬件設(shè)計(jì)
LPC1700系列具有兩個(gè)可以兼容SPI、SSI和Microwire總線的SSP接口,可以根據(jù)應(yīng)用靈活進(jìn)行配置。本套系統(tǒng)中LPC1766與Si4432芯片通過SSP1相連,LPC1766通過SSP接口配置Si4432內(nèi)部寄存器,并實(shí)現(xiàn)數(shù)據(jù)的讀寫。芯片的PORT0和PORT3口具有中斷功能,當(dāng)引腳電平符合設(shè)置值時(shí),就會(huì)觸發(fā)中斷,在此,將P0.5引腳連接到SDN,用來控制Si4432進(jìn)入非關(guān)斷(SHUTDOWN)狀態(tài)。
而P0.4引腳連接nIRQ,Si4432即可通過這個(gè)引腳通知LPC1766進(jìn)行中斷處理。Si4432的TX引腳為射頻信號(hào)發(fā)送端,RXp引腳為差分信號(hào)接收端,因?yàn)椴捎脝翁炀€進(jìn)行數(shù)據(jù)的破收,所以射頻信號(hào)的發(fā)射和接收端必須要通過RF開關(guān)芯片UPG2164與天線相連,對(duì)發(fā)射和接收狀態(tài)進(jìn)行切換。GPIO0高電平而GPI01為低電平時(shí)為發(fā)送狀態(tài);GPIO0低電平而GPIO1為高電平時(shí)為接收狀態(tài)。其電路如圖2所示。
3 軟件設(shè)計(jì)
3.1 無線的基本原理
Si4432芯片狀態(tài)轉(zhuǎn)換圖如圖3所示。芯片有關(guān)斷、掛起、發(fā)射和接收4種狀態(tài)。芯片在收/發(fā)狀態(tài)間轉(zhuǎn)換時(shí),一般先經(jīng)過掛起狀態(tài),這里所指的掛起狀態(tài)一般是指預(yù)備模式和調(diào)諧模式。在預(yù)備模式,晶振保持啟動(dòng)狀態(tài),這樣芯片在掛起狀態(tài)切換到收/發(fā)模式時(shí)可以消除晶振的啟動(dòng)時(shí)間。在調(diào)諧模式下,PLL保持使能,這種模式下芯片收/發(fā)轉(zhuǎn)換時(shí)間響應(yīng)最快,但是電流消耗很高。
3.2 SSP接口編程時(shí)序
在將Si4432的驅(qū)動(dòng)程序移植到不同的MCU平臺(tái)上時(shí),最為關(guān)鍵的就是要保證MCU可以讀寫Si4432內(nèi)部寄存器的值。Si4432和MCU之間可以通過標(biāo)準(zhǔn)的3線SPI接口通信:SCLK、SDI和nSEL。而主機(jī)MCU則通過Si4432的SDO輸出引腳獲取數(shù)據(jù)。LPC1766具有2個(gè)可以兼容SPI總線的SSP總線接口。但是,SSP與SPI接口在硬件原理上是存在差異性的。SSP帶有硬件FIFO,而SPI不具備。以下著重介紹應(yīng)用LPC1766的SSP1接口和Si44 32進(jìn)行交互的方法。
3.2.1 引腳初始化配置
為了方便P0.6引腳對(duì)Si4432進(jìn)行片選操作,通過宏定義的方式,指定名字記號(hào)LVL_H和LVL_L的替換文本內(nèi)容,分別為控制引腳的高低電平變換:
#define LVL_H(GPIO0->FIOSET|=(0x01<<6))
//將P0.6電平拉高
#define LVL_L(GPIO0->FIOCLR|=(0x01<<6))
//將P0.6電平拉低
配置引腳功能選擇寄存器,將P0.5引腳指定為GPIO默認(rèn)的輸出低電平,將其連接到Si4432的SDN引腳,用來控制Si4432進(jìn)入非關(guān)斷(SHUTDOWN)狀態(tài)。初始化P0.7、P0.8、P0.9為SSP1接口引腳:
指定P0.4引腳為GPIO中斷,連接Si4432的nIRQ引腳,當(dāng)Si4432有相應(yīng)的中斷條件出現(xiàn)時(shí),可通知LPC1766執(zhí)行中斷處理程序:
3.2.2 寫模式
函數(shù)vSpiWriteRegister的功能是向Si4432內(nèi)部寄存器reg寫入值value。片選之后,首先讀取SSP1的狀態(tài)寄存器,確認(rèn)發(fā)送FIFO未滿。在發(fā)送寄存器地址之前,需要將reg的最高位置1,此后檢測(cè)SSP1控制器是否空閑。發(fā)送value值的過程相似,其程序代碼如下:
3.2.3 讀模式
函數(shù)bSpiReadRegister的功能是讀取Si4432內(nèi)部寄存器reg的值。
這里需要注意的是,因?yàn)镾SP控制器具有收/發(fā)FIFO,在進(jìn)行正常的讀模式通信之前,需要先將接收FIFO中的“垃圾”數(shù)據(jù)讀出丟棄。同理,參照?qǐng)D4所示的讀模式時(shí)序圖可知,因?yàn)镾SP是全雙工的,在SDI引腳發(fā)送寄存器地址的時(shí)候,SDO引腳處于低電平狀態(tài),那么接收FIFO中將首先保存0x00,此后接收的第2個(gè)字節(jié)才是Si4432指定寄存器的值。其程序代碼如下:
3.3 無線數(shù)據(jù)發(fā)送和接收
3.3.1 射頻芯片初始化及參數(shù)設(shè)置
Si4432有兩個(gè)只讀類型的寄存器:Reg00(內(nèi)部地址為00h的寄存器)表示設(shè)備類型碼,Reg01表示版本代碼,其值在芯片出廠時(shí)已固定,后期不可更改。在此,可以在初始化時(shí)通過讀取Reg00和Reg01的值,來判斷Si4432是否已正常啟動(dòng)。
首先初始化LPC1766,啟動(dòng)SSP1控制器。讀取Si4432的Reg03和Reg04,將自動(dòng)清除中斷標(biāo)志,并釋放nIRQ引腳。向Reg07寫入0x80,即最高位置1,將復(fù)位所有的內(nèi)部寄存器為默認(rèn)狀態(tài),延時(shí)10 ms等待Si4432正常工作后,統(tǒng)計(jì)啟動(dòng)次數(shù)。在Reg00和Reg01的值均滿足條件之后,再往相應(yīng)的寄存器中填入通信參數(shù),隨后立即進(jìn)入接收狀態(tài)。其流程如圖5所示。
3.3.2 無線發(fā)送程序
在發(fā)送數(shù)據(jù)之前,先將芯片設(shè)置為掛起(IDLE)狀態(tài)。指定待發(fā)送數(shù)據(jù)包的長(zhǎng)度,再向發(fā)送FIFO中填入相應(yīng)字節(jié)數(shù)的數(shù)據(jù)。配置中斷返回類型為“數(shù)據(jù)包發(fā)送完畢中斷”,即在Si4432將數(shù)據(jù)成功發(fā)送出去之后,通過中斷通知LPC1766。隨后使能發(fā)送,Si4432將自動(dòng)在數(shù)據(jù)幀中添加同步字等參數(shù)。其流程如圖6所示。
3.3.3 無線接收程序
當(dāng)Si4432接收到數(shù)據(jù)時(shí),將通過中斷觸發(fā)的方式,通知LPC1766來處理。首先獲取中斷狀態(tài),判斷中斷的類型。如果是“數(shù)據(jù)包發(fā)送完畢中斷”,則將射頻切換到接收狀態(tài);如果是“有效數(shù)據(jù)包接收中斷”,則讀取數(shù)據(jù)包的長(zhǎng)度值,然后在FIFO中取出指定長(zhǎng)度值的數(shù)據(jù)。重新配置“有效數(shù)據(jù)包接收中斷”,復(fù)位接收FIFO,設(shè)置模塊處于接收狀態(tài)。當(dāng)中斷處理函數(shù)結(jié)束之后,重新返回到中斷前處理的程序。其流程如圖7所示。
結(jié)語
本文介紹了一種基于LPC1766和Si4432的無線通信系統(tǒng)。對(duì)具體的硬件電路連接和軟件系統(tǒng)的設(shè)計(jì)進(jìn)行了詳細(xì)的介紹,著重論述了通過SSP控制器與Si4432交互的時(shí)序編程方法。經(jīng)過大量的實(shí)驗(yàn)證明,該系統(tǒng)通信可靠、穩(wěn)定性強(qiáng),具有良好的工程應(yīng)用效果。