Amiccom RF WOR(低功耗接收)介紹(以A7169 為例)

SamYang2024-03-0151核165

(一). 本篇介紹Amiccom A7169 RF IC的WOR(Wake On Rx)功能,又稱低功耗接收模式

    • WOR的喚醒方式可分成3種類,最常使用的是第2種by ID SYNC(也就是當掃描到相同ID Code時,RF IC將會被喚醒,執行RX CMD)

  1. by_preamble

  2. by_sync

  3. by_carrier

    • 使用者可以自行調整WOR_SL & WOR_AC的參數來設定休眠時間與接收時間 

    image.png


啟動WOR時需要將 RCOSC_E=1 & WORE=1 & WMODE=0 & TWSOE=0

    底下說明這些Bit的寄存器位址

  • RCOSC_E=1

image.png

  • 注意:WWSE=WORE=1

image.png

  • WMODE=0

image.png

  • TWSOE=0

image.png

  • 代碼:

A7169-A40 RX_WOR_By ID Sync.zip


底下介紹WOR_enable_by_sync 功能:

  1. 先將RF 設為Standby mode,執行RC Oscillator校準

  2. 設定GIO1=FSYNC(By ID Code)

    Uint16 worsl,worac;
  
    StrobeCMD(CMD_STBY);
    RCOSC_Cal();        //RC Oscillator Calibration
    
    A7169_WritePageA(GIO_PAGEA, (A7169Config_PageA[GIO_PAGEA] & 0xF000) | 0x0045);  //GIO1=FSYNC

   3.設定sleep time & active time

注意:若是加長sleep time & 縮短active time,雖然可以達到更省電的效果,但有可能造成Tx發包時active時間太短,導致RX端ID 不好Sync,漏接的狀況出現,建議使用demo code推薦的參數為主 。

sleep time=204.06ms

active time=3.96552ms

    //setup WOR Sleep time and Rx time 
	worsl = 25;//WTR Low Period = 1 + (25 + 1) x 7.81 = 204.06ms 
	worac = 125;//WTR High Period = (120 x 1) + (125 + 1) x 30.52 = 3.96552ms
	
    A7169_WritePageA(WOR1_PAGEA, (((worac & 0x003F) << 10) | (worsl & 0x03FF)));//WOR_AC[5:0] & WOR_SL[9:0]
    A7169_WritePageB(SYN_PAGEB, (((worac & 0x01C0) >> 6) << 11));//WOR_AC[8:6] 
    A7169_WritePageB(WOR3_PAGEB, ((worsl & 0xFC00) >> 10) | (((worac & 0xFE00) >> 9) << 6));//WOR_AC[15:9] & WOR_SL[15:10]

    4.Enable RC Oscillator (RCOSC_E=1) & Enable WOR(WORE=1),RF IC將自動進入WOR模式,等待active時接收到正確ID後才會喚醒起來

    A7169_WritePageA(WOR2_PAGEA, A7169Config_PageA[WOR2_PAGEA] | 0x0010);   //enable RC OSC & WOR by sync
    A7169_WriteReg(MODE_REG, A7169Config[MODE_REG] | 0x0200);               //WORE=1 to enable WOR function   
    while(GIO1==0);     //Stay in WOR mode until receiving ID code(ID detect ok)

     5.當ID正確後,Disable WOR功能,將GIO1設回WTR mode,並執行RX CMD,觀察GIO1(WTR)是否成功完成RX CMD

    A7169_WriteReg(MODE_REG, A7169Config[MODE_REG] & ~0x0200);              //WORE=0 to disable WOR function
    A7169_WritePageA(GIO_PAGEA, (A7169Config_PageA[GIO_PAGEA] & 0xF000) | 0x0001);  //GIO1=WTR
    StrobeCMD(CMD_STBY);
    StrobeCMD(CMD_RX);
    while(GIO1==0);		//wait RX ready
    while(GIO1==1);     //wait receive completed

    6.執行RxPacket();儲存Rx Data到tmpbuf中

        RxPacket();

(二).計算WOR平均電流,由於WOR屬於Sleep一段時間後active一段時間的交互方式運行,所以無法使用萬用表量測(因為萬用表只能量測出瞬間電流),若拿來量測WOR電流,萬用表數值會跳動難以觀察,但如果使用者有紀錄型的電源供應器,就能輕鬆觀察WOR下的平均電流,若沒有則可採用計算的方式得出大概的WOR平均電流

1.找到Amiccom提供的手冊上,sleep mode帶WOR On時的電流為1.3uA,RX mode時為3mA

在套用代碼上設定的Sleep time=204.06ms,Rx Active time=3.96552ms,計算出平均電流約為58.5uA

平均電流公式:

image.png


image.png

image.png










发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。