呂梓豪 劉鐘 崔旭晶
摘 要:針對智能家居的主控系統(tǒng)和分控系統(tǒng),實現(xiàn)其有線和無線通信。有線通信應用I2C、SPI總線技術,使用Verilog HDL語言編程,功能時序仿真,最終下載到FPGA芯片上,完成硬件實物可行性測試;無線通信選用CC2530通信芯片,基于ZigBee協(xié)議,C語言編程,并下載到硬件實物進行驗證,實現(xiàn)數據的發(fā)送和接收功能。實驗結果表明,該系統(tǒng)運行快速穩(wěn)定,經濟高效,能夠較好地應對普通戶型智能家居的通信需求。
關鍵詞:智能家居;通信;FPGA;I2C;SPI;CC2530
中圖分類號:TN913,TN92文獻標識碼:A文章編號:2095-1302(2019)03-00-02
0 引 言
智能家居是以家庭住宅為平臺,利用自動化技術、視覺識別技術、綜合布局技術、音視頻技術等最新物聯(lián)網技術綜合應用于家居生活。目前,隨著互聯(lián)網技術和智能產業(yè)的發(fā)展,家居產業(yè)正向著智能化和方便化方向發(fā)展,智能家居作為新興行業(yè)與傳統(tǒng)行業(yè)的結合,具有廣闊的市場前景和創(chuàng)新空間[1]。家居智能化的大趨勢是使用手機APP遠程監(jiān)控家居,而監(jiān)控的重點是實現(xiàn)家居之間的互聯(lián)通信。
基于目前智能家居通信功率、通信距離及普通住宅房型的要求,短距離通信可使用有線通信技術;對于空間距離較遠,考慮到不易布線及信號衰減等問題,可使用通信無線技術,這樣能夠應對大多數普通戶型家庭的需求,從而實現(xiàn)智能家居之間不同距離、不同通信要求的各終端設備之間的數據通信[2-3]。
本文智能家居的主控系統(tǒng)為FPGA可編程芯片,分控系統(tǒng)由各FPGA芯片及單片機構成,因此需要實現(xiàn)主控系統(tǒng)FPGA芯片與分控系統(tǒng)各FPGA芯片及單片機之間的通信,包括有線和無線通信。有線通信使用Verilog HDL語言、I2C和SPI總線技術實現(xiàn)[4-5],無線通信使用C語言和CC2530芯片及ZigBee通信協(xié)議實現(xiàn)[6]。
1 通信功能實現(xiàn)原理
1.1 I2C總線
I2C協(xié)議使用雙線輸入輸出,其中一根為時鐘傳輸線,另一根為數據傳輸線。晶振輸入初始50 MHz時鐘信號,并在狀態(tài)機模塊中加入對于分頻寄存器的判斷,以確定分頻后時鐘信號所在位置。實現(xiàn)發(fā)送和讀取功能的主要模塊為狀態(tài)跳轉模塊和執(zhí)行模塊,狀態(tài)跳轉模塊即在現(xiàn)在狀態(tài)下,達到滿足跳轉到下一狀態(tài)的條件后,自動跳轉到下一狀態(tài),執(zhí)行模塊是在當前狀態(tài)下,通過工作時鐘的觸發(fā)執(zhí)行相應功能,通過對狀態(tài)機模塊編程可完成從最初單字節(jié)發(fā)送、接收等更多功能。
1.2 SPI總線
SPI使用標準信號輸入輸出口。由標準晶振產生50 MHz時鐘,經過分頻模塊分頻后得到相應的通信時鐘;具有四種工作模式,而實現(xiàn)這四種工作模式主要依靠不同狀態(tài)下的時鐘系統(tǒng),根據SPI協(xié)議的相關規(guī)定,本設計采用多路時鐘的工作方式,從最初50 MHz晶振時鐘輸入到FPGA中,經過分頻變?yōu)?0 kHz工作時鐘,經由一個初始時鐘觸發(fā),記錄當前時鐘下分頻時鐘電平與上一個時鐘下分頻時鐘電平,再將其進行相應邏輯運算,即可獲得分頻后時鐘上升沿和下降沿信號,并輸出到上升沿下降沿脈沖模塊,再根據外部CPOL與CPHA決定,通過二選一模塊,最終成為發(fā)送模塊與接受模塊的觸發(fā)條件。
1.3 CC2530芯片
CC2530以眾多而全面封裝函數和簡化易懂規(guī)范,使無線通信開發(fā)者從繁雜開發(fā)背景中解放出來。本設計使用片上自帶的串口UART,從上位機接受字符串,并載入無線發(fā)送緩存中,同時分配好數據發(fā)送的去向,分配相應的PANID,以方便數據接收端與發(fā)送端之間數據校驗。串口接收到數據后,經過無線通信將其帶著的地址信息發(fā)出,而無線通信主要通過ZigBee協(xié)議實現(xiàn)。ZigBee 使用的路由協(xié)議是基于AODV(Ad-Hoc 按需距離矢量)路由協(xié)議的Ad-Hoc網絡。
2 TI 2530 8051核心主函數
下面的函數是串口接收發(fā)送函數,首先要求接收的字符串長度要小于CC2530所能接收的長度,此后才開始進行接收,接收碼率固定為115 200 b/s(其規(guī)定于初始化中),剩下的功能為異常判斷,若出現(xiàn)異常則返回數據長度為0,接收失敗,返回未接收狀態(tài),等待下一次接收[6]。
void rxCB(uint8 port,uint8 event)
{
if ((event & (HAL_UART_RX_FULL | HAL_UART_RX_ABOUT_FULL | HAL_UART_RX_TIMEOUT)) &&
#if SERIAL_APP_LOOPBACK
(SerialApp_TxLen < SERIAL_APP_TX_MAX))
#else
!SerialApp_TxLen)
#endif
{
SerialApp_TxLen = HalUARTRead(0, RxBuf, SERIAL_APP_TX_MAX);
if (SerialApp_TxLen)
{
if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,
SAMPLEAPP_PERIODIC_CLUSTERID,
SerialApp_TxLen,
RxBuf,
&SampleApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS {}
else
{// Error occurred in request to send. }
SerialApp_TxLen=0;
}
}}
3 仿真及實物下載驗證
對于有線通信部分,首先對I2C和SPI做功能時序仿真,以驗證設計的正確性和可行性,然后將實物下板驗證,實現(xiàn)其具體功能。仿真部分使用Verilog HDL語言編程和模塊設計,ModelSim軟件做功能時序仿真。I2C主要仿真結果如圖3和圖4所示。在I2C發(fā)送寄存器地址之后進行數據發(fā)送,從狀態(tài)跳變到0100中可以看出,sda_r在每個iic_scl時鐘的上升沿,隨著slv_reg2依bcnt的位數而確定的數據位改變,即除了第3位為高電平,其余均為低電平,外部讀取結果為00110011,符合slv_reg2中的數據,發(fā)送數據驗證通過[7-8]。
從圖4可以看出,每個時鐘升沿之后,當數據保持穩(wěn)定的高電平中心時,iic_rddb在由bcnt確定的相關位被寫入iic_sda_in的數據位,所有位的時序均符合要求,接收數據驗證通過。
SPI主要仿真結果如圖5所示。其仿真過程實現(xiàn)了兩個完整時序收發(fā)功能,其中包含了整體收發(fā)功能,包括起始、發(fā)送、讀取采樣、終止及兩個工作時序中的外部信號觸發(fā)的采樣時序改變和采樣觸發(fā)時鐘的改變[9]。
實物下載驗證部分,以Quartus Prime軟件作為開發(fā)平臺,在完成模塊程序調試和仿真之后,將生成的目標文件下載到Altera公司的FPGA芯片中,實現(xiàn)I2C和SPI協(xié)議的數據發(fā)送與接收功能,最終完成硬件實物的運行與驗證,如圖6所示,左側為I2C,右側為SPI[10]。
對于無線通信部分,選用TI公司CC2530芯片,基于IEEE 802.15.4標準的ZigBee協(xié)議,使用IAR Work Bench軟件進行開發(fā)與調試,最終下載到硬件實物板中進行驗證,實現(xiàn)無線通信功能如圖7所示。
4 結 語
本設計中,有線和無線通信均通過軟件編程、仿真、測試和實物下載驗證,實現(xiàn)了設計的基本功能,完成了數據的接收和發(fā)送,實現(xiàn)了智能家居主控系統(tǒng)與分控系統(tǒng)之間的通信聯(lián)系。設計中高效利用FPGA設計方法的多變性和可編程等優(yōu)勢,實現(xiàn)的I2C和SPI協(xié)議,具有高效、小型和專用的優(yōu)點。設計中CC2530通信模塊,可單獨作為模塊直接使用,亦可移植到大型通信系統(tǒng)中。
參 考 文 獻
[1]楊曉菊.智能家居應用現(xiàn)狀及其發(fā)展分析[J].智能建筑與智慧城市,2018(8):71-72.
[2]李紅海,張紀芬.淺析有線通信技術的現(xiàn)狀及發(fā)展趨勢[J].東方企業(yè)文化,2015(21):371.
[3]鄭達峰.短距離無線通信技術的優(yōu)勢及運用[J].通信電源技術,2014(6):70-71.
[4]張軍才,茹偉,趙臘才,等.I2C總線測試系統(tǒng)的設計與實現(xiàn)[J].儀表技術與傳感器,2016(12):57-58.
[5]朱道山.一種可復用的SPI接口設計與實現(xiàn)[J].通信技術,2017(2):389-392.
[6]馬靜.基于ZigBee無線網絡智能家居系統(tǒng)的設計與實現(xiàn)[J].科技創(chuàng)新與應,2017(4):34-35.
[7]蔡亞芹.語音識別技術在智能家居系統(tǒng)中的應用[J].河南科技,2014(14):68.
[8]劉星.基于藍牙和單片機的智能家居控制系統(tǒng)設計[J].電子技術,2013(11):46-48.
[9]呂莉,羅杰,智能家居及其發(fā)展趨勢[J].計算機與現(xiàn)代化,2007(11):18-20.
[10]李元建.藍牙與智能家居[J].電子技術,2007(2):5-7.