CC1310 架構組成,TX/RX+WOR嗅探過程,低功耗方法

CC1310主要由四個部分組成:主MCU、RF核、Sensor Controller Engine和一些外設

主MCU搭載的是ARM Cortex-M3,它作爲CC1310主要的操控部份,包含的是RTOS和 對底層外部接口的ㄧ些drivers ,應用程序跑在這個部分

RF核顧名思義就是和射頻相關的,它包含的是射頻的一些接口,主MCU通過發送命令的方式可以控制射頻進行工作,同時RF核會返回 射頻工作的結果給主MCU

Sensor Controller Engine 是CC1310獨有的一個部份,它可以獨立於主MCU工作,主要操控的是外部傳感器和一些接口,可以做一些小的編程(使用Sensor Controller Studio)

Peripherals就是一些外設,包括一些GPIO UART的口 AES加密、Timers相關的

例如CC1310需要完成的工作是以一秒的頻率,從外部的傳感器獲取數據(ADC), 然後把這個數據發送出去的。首先主MCU、RF Core和外設全部都是關閉的,Sensor Controller Engine 獨立於這三個部分獨立工作。從外部的傳感器以一秒的頻率進行採樣,Sensor Controller Engine 它可以獨立編程,那麼在編程邏輯裏面我們加入了對傳感器數據的判斷,如果傳感器的數據高於預值,那麼我們就喚醒主MCU,否則繼續進行採樣

如果Sensor Controller 獲取到的傳感器的數高於預值,那麼它就會喚醒主MCU 主MCU會準備對RF Core進行初始化,主MCU通過發送TX命令 對RF Core進行操控,RF Core在接受到命令之後 會自動對命令進行處理,並把數據返回給主MCU,當發送完成之後主MCU會繼續關閉RF Core。

CC1310的wor嗅探功能爲發送方與接收方都提供了低功耗運行方案。

發送方處於低功耗休眠+sensor controller檢測外部信號,當需要發送數據時,先發送長時間的前導同步碼,發送時間需要大於接收方的接收喚醒週期。發送方不定的時間發送,這就需要接收方定期醒來接收數據,CC1310的嗅探功能可以在不開啓接收模式的狀態下先檢測空中信號,首先使用RSSI檢測空中信號強度,若RSSI滿足設定閾值(信號強度閾值可設)再使用POT檢測前導碼是否滿足要求,檢測信號的存在。再開啓接收器接收數據。在嗅探模式下的功耗約爲60-70uA 。

Wor執行過程中,進入standby模式最低功耗低至0.1uA,執行sniff命令時功耗約爲60~70uA,接收到數據包時功耗約爲6mA。

CC1310的wor功能使用demo驗證,引用的是內部API發送命令形式,WOR自動執行,並且定時自動喚醒MCU來啓動RF的RSSI信號強度檢測和Preamble Quality(PQT)前導碼質量檢測進行載波偵聽。

發送方主要流程:

1、initializeTxAdvCmdFromTxCmd(&RF_cmdPropTxAdv, &RF_cmdPropTx);

初始化發送命令,RF_cmdPropTx 該結構體爲設置發送命令,發送同步字及速率等參數

使用SmartRF Studio的配置導出“數據包發送/接收”選項,以導出此示例的設置。以50kbit / s的速度進行了測試。

2、RF_cmdPropTxAdv.preTime = WOR_PREAMBLE_TIME_RAT_TICKS(WOR_WAKEUPS_PER_SECOND);

該參數決定了接收方的啓動時間間隔,發送方與接收方設置一致。前同步碼的長度是根據WOR_WAKEUPS_PER_SECOND定義動態計算的。即每次發送喚醒請求時,前導碼的發送時間長度由該參數決定。

3、RF_runCmd(rfHandle, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, NULL, 0);

設置發送頻率868MHz

4、RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropTxAdv, RF_PriorityNormal, NULL, 0);

調用該命令即發送數據,例程使用按鍵觸發發送。

接收方主要流程:

1、initializeSniffCmdFromRxCmd(&RF_cmdPropRxSniff, &RF_cmdPropRx);

初始化嗅探命令,與發送方一致使用SmartRF Studio的配置導出

2、configureSniffCmd(&RF_cmdPropRxSniff, WOR_MODE, datarate, WOR_WAKEUPS_PER_SECOND);

配置爲WOR模式,該命令表示爲,首先使用RSSI檢測空中信號強度,若RSSI滿足設定閾值(信號強度閾值可設)再使用POT檢測前導碼是否滿足要求,檢測信號的存在。

3、RF_runCmd(rfHandle, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, &callback, 0);

設置發送速率、同步字、發送頻率868MHz等參數

4、RF_cmdPropRxSniff.startTime = RF_getCurrentTime();

RF_cmdPropRxSniff.startTime += WOR_WAKE_UP_INTERVAL_RAT_TICKS(WOR_WAKEUPS_PER_SECOND);

設置接收觸發時間,設置下次接收的時間。間隔時間內系統進入standby模式

5、RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropRxSniff, RF_PriorityNormal, &callback, RF_EventRxEntryDone);

MCU間隔喚醒執行接收命令及回調函數,RF_runCmd()是阻塞調用,可換用 RF_postCmd()或者RF_scheduleCmd()。然後用RF_pendCmd() 來阻塞命令,【RF_runCmd()其實就是 post + pend】

使用前同步碼來檢測信號的存在,那麼接收器必須經常醒來以免錯過前同步碼。這意味着前同步碼的長度直接影響接收機喚醒的頻率。默認設置是發送500 ms前同步碼,因此每秒大約喚醒兩次以進行檢查。增加了系統中的等待時間,但大大降低了平均功耗。參數WOR_WAKEUPS_PER_SECOND設置發送前同步碼的持續時間,設置爲2即每秒2次喚醒接收,則對應500ms同步碼發送時間。該時間計算使用無線電定時器(RAT:4MHz)的滴答爲單位

WOR空中檢測RSSI及載波監聽同步字、前同步碼的時間根據速率不同而計算,且相關週期需足夠寬以使檢測有一定的餘量。算法中根據50K~200K,300K~400K,500K設置了不同的時間以便於不同的速率下執行WOR。在傳輸距離上WOR會比普通模式短一點,因爲WOR會設置閥值,只有能量高於這個這個值,才能進入後面的接收。

想讓RF core獨立於主MCU進行數據包的嗅探,是不行的。WOR功能的實現是基於sniff命令軟件實現的,也就是說必須每次都處理“sniff command done”回調,去查看是否收到了WOR包,或者是否要調度新的sniff命令。

    Wor執行過程中,進入standby模式最低功耗低至0.1uA,執行sniff命令時功耗約爲60~70uA,接收到數據包時功耗約爲6mA。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章