CC2431是TI公司推出的帶硬件定位引擎的片上系統(SoC)解決方案,能夠滿足低功耗ZigBee/IEEE 802.15.4無線傳感器網絡的應用需要。CC2431定位引擎基于RSSI技術,根據接收信號強度與已知參考節點位置準確計算出有關節點位置,然后將位置信息發送給接收端。相比于集中型定位系統,RSSI功能減小了網絡流量與通信延遲,在典型應用中可實現3~5m定位精度和0.25 m的分辨率。
1 、CC2431的主要特點
CC2431片上系統(SoC)由CC2430加上Motorola公司基于IEEE 802.15.4標準的無線定位引擎組成,具有2.4 GHz DSSS(直接序列擴頻)射頻收發器核心和高效的8051控制器。其中,MCU包括存儲器及其外圍,其他模塊提供電源管理、時鐘分配和測試等重要功能。
CC2431的設計結合了8 KB的RAM及強大的外圍模塊,并且有3種不同的版本。它們根據不同的閃存空間32 KB、64 KB和128 KB來優化復雜度與成本。CC2431的尺寸只有7 mm×7 mm的48腳封裝,采用具有內嵌閃存的0.18 μm CMOS標準技術。針對協議棧、網絡和應用軟件執行時對MCU處理能力的要求,CC2431包含一個增強型工業標準的8位8051微控制器內核,運行時鐘為32 MHz。CC2431還包含一個DMA控制器,可以減少8051微控制器內核對數據的傳送操作,因此提高了芯片整體的性能。
在CC2431 8 KB靜態RAM中的4 KB是超低功耗SRAM。32 KB、64 KB或128 KB的片內Flash塊提供在線可編程非易失性存儲器。CC2431集成了4個振蕩器用于系統時鐘和定時操作,以及用于用戶自定義應用的外設;具有4個定時器,此外,還集成了實時時鐘、上電復位、8通道8~14位ADC等其他外設,并帶有語音和定位跟蹤引擎。CC2431的主要特點如下:
◇ 定位引擎能精確計算網絡中節點位置;
◇ 具有高性能、低功耗的8051控制器核;
◇ 集成符合IEEE 802.15.4標準的2.4 GHz RF無線收發機(具有工業領先的CC2420射頻內核);
◇ 優良的無線接收靈敏度和強大的抗干擾能力;
◇ 128 KB可編程閃存,8 KB RAM,4 KB帶全部功耗模式數據保持功能;
◇ 強大的DMA功能;
◇ 極少的外部元器件;
◇ 低電流損耗(微控制器運行于32 MHz時,接收和發射分別為27 mA和25 mA);
◇ 休眠模式時僅0.9 μA電流損耗,外部中斷或RTC能喚醒系統;
◇ 待機模式下小于0.6 μA電流損耗,外部中斷能喚醒系統;
◇ 低功耗模式與主動模式之間的快速切換;
◇ 硬件支持CSMA/CA功能;
◇ 較寬的電壓范圍(2.0~3.6 V);
◇ 數字化的RSSI/LQI支持;
◇ 具有電池監測和溫度傳感器;
◇ 多達8路輸入的8~14位模/數轉換;
◇ 集成AES128安全協處理器;
◇ 帶有2個功能強大的支持多組協議的USART;
◇ 集成看門狗定時器;
◇ 具有1個符合IEEE 802.15.4規范的MAC計時器,1個常規的16位計時器和2個8位計時器;
◇ 21個普通I/O引腳,其中2個具有20 mA的驅動能力;
◇ 支持硬件調試,具有強大靈活的開發工具。
2、 CC2431的定位引擎操作
CC2431和CC2430是引腳兼容的,除定位引擎之外,CC2430的MCU和RF部分與CC2431完全相同。為避免重復,本文重點介紹CC2431的定位引擎。
定位引擎用于估算無線網絡中節點的位置。通常參考節點坐標已知,其他需要估計坐標的節點為“盲節點”。進行定位估計時,定位引擎需要獲得3~8個參考節點的坐標值以及其他測量參數,定位引擎計算后的輸出是一個節點的估計坐標。在定位引擎運行之前,必須使能定位引擎寄存器LOCENG的第4位LOCENG.EN。當要停止定位引擎運行時,應往LOCENG.EN寫入0關斷引擎的時鐘信號,從而降低CC2431的功耗。對定位引擎的操作主要就是對與定位引擎有關的寄存器的操作。下面詳細說明各部分的操作。
2.1 參考坐標
定位引擎運行時需要3~8個參考坐標輸入。參考坐標以m為單位表示各個參考節點的位置,其數值位于0~63.75,最高精度為0.25 m,以最低2位為小數部分,剩余6位為整數部分。參考坐標存放于RF寄存器REFCOORD中。在寫入REFCOORD之前,寄存器LOCENG的第1位LOCENG.REFLD必須寫入1,用于指示一組參考坐標將要被寫入。一旦坐標寫入過程開始(LOCENG.REFLD=1),8對坐標必須一次性寫入。當定位引擎使用少于8個參考坐標時,要將未用的參考坐標寫入0.0。
2.2 測量參數
定位引擎除了需要參考坐標外,還需要一組測量參數。這組參數由2個射頻參數和8個RSSI值組成。射頻參數是數值A和n,用于描述網絡操作環境。在全向模式下,射頻參數A被定義為用dBm表示的距發射器1 m接收到的平均能量絕對值。若平均接收能量為-40 dBm,那么參數A被定為40。定位引擎期望參數A為30.0~50.0,精度為0.5。參數A用無符號定點數值給出,最低位為小數位,而其余各位為整數位,一個典型值為40.0。射頻參數n被定義為路徑損失指數,它指出了信號能量隨著到收發器距離的增加而衰減的速率。衰減與d-n成比例,這里,d是發射器和接收器之間的距離。實際寫入定位引擎的參數n是一個可通過查表得到的整數索引值。
例如,通過測量得到n=2.98,查表得到最接近的有效值為3.000,相應的索引值是13。因此,整數13作為參數n寫入到定位引擎中。參數n以[0,31]之間的整數索引寫入定位引擎,索引用整數表示。如n=7,即寫入000000111。n的典型值是13。RSSI值是相應于一組參考坐標的RSSI測量值。
RSSI值為[-40 dBm,-95 dBm],精度為0.5 dBm,寫入值中應去掉負號。如RSSI的值為-50.35 dB,則寫入到定位引擎中為50.5。注意,未用的參考坐標必須用0.0作為RSSI值寫入。如果僅有部分參數寫入,則定位引擎不能正確工作。
所有的測量參數應寫入RF寄存器MEASPARM中,在寫入MEASPARM之前寄存器LOCENG的第2位LOCENG.PARLD必須寫入1,表示一組測量參數將被寫入。一旦參數寫入開始(LOCENG.PARLD=1),所有10個參數必須一次性全部寫入。測量參數必須按[A,n,rssi0,rssi1,…,rssi7]順序寫入MEASPARM寄存器,任何未使用的位必須寫0。10個參數全部寫完之后,LOCENG.PARLD必須寫入0。
2.3 定位估計
參數坐標和測量參數寫入之后,通過將寄存器LOCENG第0位LOCENG.RUN寫入1,啟動定位估計計算。通常,LOCENG.RUN被置1后的1
200個系統周期之后,LOCENG的第3位LOCENG.DONE被置1。此時,估計坐標可從LOCX和LOCY寄存器讀出。定位引擎不產生任何中斷請求。在新的結果被計算出來或下一次重新啟動之前,估計坐標值在LOCX和LOCY中保持有效。CC2431定位引擎操作流程。
2.4 軟件編程
下面介紹定位引擎操作的源代碼。
void CalcultePostition(LOC_REF_NODE refNodes[LOC_ENGINE_NODE_CAPA],uint
a_val,uint n_index,uint *locX,uint *locY) {
uint i;
//啟動定位引擎
LOC_DISABLE();
LOC_ENABLE();
//使能LOC_REFERENCE_LOAD,準備寫入參考坐標
LOC_REFERENCE_LOAD(TRUE);
//寫入參考坐標
for(i=0;i
責任編輯:lq6
-
微控制器
+關注
關注
48文章
7559瀏覽量
151471 -
振蕩器
+關注
關注
28文章
3832瀏覽量
139118 -
soc
+關注
關注
38文章
4169瀏覽量
218333 -
無線傳感器
+關注
關注
15文章
770瀏覽量
98368
發布評論請先 登錄
相關推薦
評論