亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cc1020.c

?? msp430+無(wú)線芯片cc1020程序
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
    // Monitor actual calibration start (ref. Errata Note 04 - CC1020)
    for(TimeOutCounter=CAL_TIMEOUT; ((ReadFromCC1020Register(CC1020_STATUS)&0x80)==0x80)&&(TimeOutCounter>0); TimeOutCounter--);
    // Important note:
    // In active mode the CC1020 should theoretically initiate an internal action/process more or less
    // instantly upon receiving any command from e.g. an MCU. However, upon sending a [calibration start]
    // command to CC1020, tests shows that the [STATUS.CAL_COMPLETE]-signal sometimes remains asserted
    // (or idle) close to 100 usec after the command has been originally issued. Consequently this process
    // must be carefully monitored to avoid premature PLL LOCK monitoring; do not proceed with subsequent
    // PLL LOCK monitoring before the calibration has actually completed inside the CC1020! Errata Note 04
    // suggests that [calibration start] should be monitored by a fixed timeout > 100 usec. However, the
    // above method implements an adaptive monitoring of [calibration start], which basically waits for the
    // [STATUS.CAL_COMPLETE]-signal to initialise/deassert (indicating calibration has actually started)
    // before proceeding with monitoring calibration complete and PLL LOCK. Chipcon considers both methods
    // safe, and thus leaves it up to the user, which one to use.

    // Monitor calibration complete
    for(TimeOutCounter=CAL_TIMEOUT; ((ReadFromCC1020Register(CC1020_STATUS)&0x80)==0x00)&&(TimeOutCounter>0); TimeOutCounter--);

    // Monitor lock
    for(TimeOutCounter=LOCK_TIMEOUT; ((ReadFromCC1020Register(CC1020_STATUS)&0x10)==0x00)&&(TimeOutCounter>0); TimeOutCounter--);

    // Abort further recalibration attempts if successful LOCK
    if((ReadFromCC1020Register(CC1020_STATUS)&0x10) == 0x10) {
      break;
    }
  }

  // Restore PA setting
  WriteToCC1020Register(CC1020_PA_POWER, PA_POWER);

  // Return state of LOCK_CONTINUOUS bit
  return ((ReadFromCC1020Register(CC1020_STATUS)&0x10)==0x10);
}

/****************************************************************************/
/*  This routine puts the CC1020 into RX mode (from TX). When switching to  */
/*  RX from PD, use WakeupC1020ToRX first                                   */
/****************************************************************************/

char SetupCC1020RX(char RXANALOG, char PA_POWER)
{
  volatile int TimeOutCounter;
  char lock_status;

  // Switch into RX, switch to freq. reg A
  WriteToCC1020Register(CC1020_MAIN,0x11);

  // Setup bias current adjustment
  WriteToCC1020Register(CC1020_ANALOG,RXANALOG);

  // Monitor LOCK
  for(TimeOutCounter=LOCK_TIMEOUT; ((ReadFromCC1020Register(CC1020_STATUS)&0x10)==0)&&(TimeOutCounter>0); TimeOutCounter--);

  // If PLL in lock
  if((ReadFromCC1020Register(CC1020_STATUS)&0x10)==0x10){
    // Indicate PLL in LOCK
    lock_status = LOCK_OK;
  // Else (PLL out of LOCK)
  }else{
    // If recalibration ok
    if(CalibrateCC1020(PA_POWER)){
      // Indicate PLL in LOCK
      lock_status = LOCK_RECAL_OK;
    // Else (recalibration failed)
    }else{
      // Indicate PLL out of LOCK
      lock_status = LOCK_NOK;
    }
  }

  // Switch RX part of CC1020 on
  WriteToCC1020Register(CC1020_MAIN,0x01);

  // Return LOCK status to application
  return (lock_status);
}

/****************************************************************************/
/*  This routine puts the CC1020 into TX mode (from RX). When switching to  */
/*  TX from PD, use WakeupCC1020ToTX first                                  */
/****************************************************************************/

char SetupCC1020TX(char TXANALOG, char PA_POWER)
{
  volatile int TimeOutCounter;
  char lock_status;

  // Turn off PA to avoid frequency splatter
  WriteToCC1020Register(CC1020_PA_POWER,0x00);

  // Setup bias current adjustment
  WriteToCC1020Register(CC1020_ANALOG,TXANALOG);

  // Switch into TX, switch to freq. reg B
  WriteToCC1020Register(CC1020_MAIN,0xC1);

  // Monitor LOCK
  for(TimeOutCounter=LOCK_TIMEOUT; ((ReadFromCC1020Register(CC1020_STATUS)&0x10)==0)&&(TimeOutCounter>0); TimeOutCounter--);

  // If PLL in lock
  if((ReadFromCC1020Register(CC1020_STATUS)&0x10)==0x10){
    // Indicate PLL in LOCK
    lock_status = LOCK_OK;
  // Else (PLL out of LOCK)
  }else{
    // If recalibration ok
    if(CalibrateCC1020(PA_POWER)){
      // Indicate PLL in LOCK
      lock_status = LOCK_RECAL_OK;
    // Else (recalibration failed)
    }else{
      // Indicate PLL out of LOCK
      lock_status = LOCK_NOK;
    }
  }

  // Restore PA setting
  WriteToCC1020Register(CC1020_PA_POWER,PA_POWER);

  // Turn OFF DCLK squelch in TX
  WriteToCC1020Register(CC1020_INTERFACE,ReadFromCC1020Register(CC1020_INTERFACE)&~0x10);

  // Return LOCK status to application
  return (lock_status);
}

/****************************************************************************/
/*  This routine puts the CC1020 into power down mode. Use WakeUpCC1020ToRX */
/*  followed by SetupCC1020RX or WakeupCC1020ToTX followed by SetupCC1020TX */
/*  to wake up from power down                                              */
/****************************************************************************/

void SetupCC1020PD(void)
{
  // Put CC1020 into power-down
  WriteToCC1020Register(CC1020_MAIN,0x1F);

  // Turn off PA to minimise current draw
  WriteToCC1020Register(CC1020_PA_POWER,0x00);
}

/****************************************************************************/
/*  This routine wakes the CC1020 up from PD mode to RX mode                */
/****************************************************************************/

void WakeUpCC1020ToRX(char RXANALOG)
{
  volatile int i;

  // Turn on xtal oscillator core
  WriteToCC1020Register(CC1020_MAIN,0x1B);

  // Setup bias current adjustment
  WriteToCC1020Register(CC1020_ANALOG,RXANALOG);

  // Insert wait routine here, must wait for xtal oscillator to stabilise,
  // typically takes 2-5ms.
  for (i=0x0260; i > 0; i--);

  // Turn on bias generator
  WriteToCC1020Register(CC1020_MAIN,0x19);

  // Wait for 150 usec
  for (i=0x0010; i > 0; i--);

  // Turn on frequency synthesiser
  WriteToCC1020Register(CC1020_MAIN,0x11);
}

/****************************************************************************/
/*  This routine wakes the CC1020 up from PD mode to TX mode                */
/****************************************************************************/

void WakeUpCC1020ToTX(char TXANALOG)
{
  volatile int i;

  // Turn on xtal oscillator core
  WriteToCC1020Register(CC1020_MAIN,0xDB);

  // Setup bias current adjustment
  WriteToCC1020Register(CC1020_ANALOG,TXANALOG);

  // Insert wait routine here, must wait for xtal oscillator to stabilise,
  // typically takes 2-5ms.
  for (i=0x0260; i > 0; i--);

  // Turn on bias generator
  WriteToCC1020Register(CC1020_MAIN,0xD9);

  // Wait for 150 usec
  for (i=0x0010; i > 0; i--);

  // Turn on frequency synthesiser
  WriteToCC1020Register(CC1020_MAIN,0xD1);
}

/****************************************************************************/
/*  This routine acquires the average RSSI level in dBm                        */
/****************************************************************************/
int ReadRSSIlevelCC1020(void){
  char i;
  unsigned char RSSI[5];
  unsigned char FILTER;
  int RSSI_dBm;

  // RSSI formula based on CC1020 datahseet and application note 30:
  // P = 1.5 x RSSI - 3 x VGA_SETTING - RSSI_Offset [dBm]

  /*
  VGA_SETTING based on SmartRF Studio - CC1020, v5.3.0.0
  Note: these settings could be subject to optimisation.

  434MHz range:
  -------------------------------------------------
  12.5 => VGA3 = 0x31 => VGA_SETTING = 0x11 = 17dec
  25   => VGA3 = 0x2F => VGA_SETTING = 0x0F = 15dec
  50   => VGA3 = 0x2E => VGA_SETTING = 0x0E = 14dec
  100  => VGA3 = 0x2D => VGA_SETTING = 0x0D = 13dec
  150  => VGA3 = 0x2F => VGA_SETTING = 0x0F = 15dec
  200  => VGA3 = 0x32 => VGA_SETTING = 0x12 = 18dec
  500  => VGA3 = 0x33 => VGA_SETTING = 0x13 = 19dec

  868MHz range:
  -------------------------------------------------
  12.5 => VGA3 = 0x2F => VGA_SETTING = 0x0F = 15dec
  25   => VGA3 = 0x2E => VGA_SETTING = 0x0E = 14dec
  50   => VGA3 = 0x2D => VGA_SETTING = 0x0D = 13dec
  100  => VGA3 = 0x2D => VGA_SETTING = 0x0D = 13dec
  150  => VGA3 = 0x2E => VGA_SETTING = 0x0E = 14dec
  200  => VGA3 = 0x30 => VGA_SETTING = 0x10 = 16dec
  500  => VGA3 = 0x34 => VGA_SETTING = 0x14 = 20dec
  */

  // Get current channel spacing
  FILTER = ReadFromCC1020Register(CC1020_FILTER)&0x7F;

  // Calculate average RSSI in dBm (initially without offset):
  for(i = 0; i < 5; i++) {
    RSSI[i] = ReadFromCC1020Register(CC1020_RSSI);
  }
  RSSI_dBm = (int)((((unsigned int)RSSI[0]+(unsigned int)RSSI[1]+(unsigned int)RSSI[2]+(unsigned int)RSSI[3]+(unsigned int)RSSI[4])*3)/(2*5));
  RSSI_dBm = ((RSSI_dBm*3) - (3*(int)(ReadFromCC1020Register(CC1020_VGA3)&0x1F)*2)) / 2;

  // Calculate average RSSI in dBm with offset, according to frequency band:
  // Active frequency is in 800 MHz band
  if( (ReadFromCC1020Register(CC1020_ANALOG)&0x80) == 0x80 ) {
    switch ( FILTER ) {
      case 0x58://12.5 kHz spacing
      case 0x3F://12.5 kHz spacing, optimal sensitivity
        RSSI_dBm = RSSI_dBm - 95;
        break;
      case 0x2F://25 kHz spacing
        RSSI_dBm = RSSI_dBm - 96;
        break;
      case 0x2B://50 kHz spacing
        RSSI_dBm = RSSI_dBm - 95;
        break;
      case 0x25://100 kHz spacing
        RSSI_dBm = RSSI_dBm - 96;
        break;
      case 0x22://150 kHz spacing
        RSSI_dBm = RSSI_dBm - 99;
        break;
      case 0x01://200 kHz spacing
        RSSI_dBm = RSSI_dBm - 99;
        break;
      case 0x00://500 kHz spacing
        RSSI_dBm = RSSI_dBm - 101;
        break;
    }
  // Active frequency is in 434 MHz band
  } else {
    switch ( FILTER ) {
      case 0x38://12.5 kHz spacing
      case 0x2F://25 kHz spacing
        RSSI_dBm = RSSI_dBm - 102;
        break;
      case 0x2B://50 kHz spacing
        RSSI_dBm = RSSI_dBm - 100;
        break;
      case 0x25://100 kHz spacing
        RSSI_dBm = RSSI_dBm - 99;
        break;
      case 0x22://150 kHz spacing
        RSSI_dBm = RSSI_dBm - 101;
        break;
      case 0x01://200 kHz spacing
        RSSI_dBm = RSSI_dBm - 102;
        break;
      case 0x00://500 kHz spacing
        RSSI_dBm = RSSI_dBm - 103;
        break;
      }
  }

  return(RSSI_dBm);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲欧洲一区高清在线观看| 91精品国产综合久久小美女| 婷婷综合在线观看| 久久久不卡网国产精品二区| 欧美影院午夜播放| 成人自拍视频在线| 日本不卡中文字幕| 伊人开心综合网| 国产情人综合久久777777| 欧美日韩一本到| av激情亚洲男人天堂| 精东粉嫩av免费一区二区三区| 伊人婷婷欧美激情| 国产精品美女www爽爽爽| 日韩一区二区三区电影在线观看| 99精品国产99久久久久久白柏| 国产在线国偷精品产拍免费yy| 午夜私人影院久久久久| 亚洲图片激情小说| 欧美国产禁国产网站cc| 精品国产一区二区亚洲人成毛片| 欧美在线视频不卡| 91美女在线观看| 成人av中文字幕| 国产福利不卡视频| 激情五月播播久久久精品| 日韩国产在线一| 亚洲第一成年网| 一区二区不卡在线播放| 中文字幕亚洲综合久久菠萝蜜| 国产亚洲精品精华液| 精品国免费一区二区三区| 日韩一区二区三区在线观看| 欧美三日本三级三级在线播放| 色呦呦日韩精品| 91性感美女视频| 91看片淫黄大片一级| 99久久精品国产导航| 成人亚洲一区二区一| 福利一区二区在线| 成人一区二区三区| 成年人国产精品| 91美女片黄在线观看| 色婷婷激情久久| 在线观看区一区二| 欧美三级电影网站| 欧美日本在线一区| 正在播放亚洲一区| 欧美xxxxx裸体时装秀| 日韩欧美高清在线| 久久综合成人精品亚洲另类欧美| 欧美精品一区二区三区蜜桃| 久久久久久久久久电影| 国产精品天美传媒| 亚洲丝袜另类动漫二区| 亚洲情趣在线观看| 一区二区三区中文在线观看| 一区二区三区中文在线| 午夜精品久久一牛影视| 九九在线精品视频| 国产成人亚洲精品狼色在线 | 又紧又大又爽精品一区二区| 亚洲精品国产第一综合99久久 | 国产毛片精品国产一区二区三区| 国产在线精品国自产拍免费| voyeur盗摄精品| 欧美在线色视频| 欧美成va人片在线观看| 国产日韩欧美一区二区三区乱码| 国产精品美女一区二区在线观看| 亚洲天堂免费看| 日韩精品久久久久久| 国产中文字幕一区| 91在线观看成人| 日韩一区二区在线观看视频播放| 国产亚洲精品aa| 一区2区3区在线看| 麻豆精品一区二区综合av| 丁香五精品蜜臀久久久久99网站 | 精品欧美乱码久久久久久 | 天天操天天综合网| 国产精品一区二区三区四区| 色综合视频在线观看| 这里只有精品免费| 国产欧美va欧美不卡在线| 一区二区三区四区在线免费观看| 另类综合日韩欧美亚洲| 91浏览器在线视频| 精品国产凹凸成av人网站| 亚洲人吸女人奶水| 久久精品国产澳门| 色网综合在线观看| 久久综合狠狠综合久久综合88 | 欧美日本一区二区三区四区| 精品福利二区三区| 亚洲老司机在线| 韩国欧美一区二区| 欧美日韩精品一区视频| 欧美高清在线一区| 香蕉成人伊视频在线观看| 丰满少妇在线播放bd日韩电影| 欧美人xxxx| 中文字幕亚洲精品在线观看 | 日韩成人精品在线| 99精品视频在线免费观看| 欧美成人a∨高清免费观看| 一区二区高清免费观看影视大全 | 色欧美88888久久久久久影院| ww亚洲ww在线观看国产| 亚洲成人午夜影院| 91麻豆免费观看| 欧美国产1区2区| 国产一区二区三区在线观看免费| 欧美色倩网站大全免费| 国产精品国产馆在线真实露脸| 韩国一区二区三区| 欧美一区二区三区四区在线观看| 一区二区高清视频在线观看| 波多野结衣91| 国产清纯在线一区二区www| 黄色日韩网站视频| 欧美一级搡bbbb搡bbbb| 亚洲激情综合网| 99久久免费国产| 中文久久乱码一区二区| 国产成人小视频| 国产欧美日韩中文久久| 国内精品免费**视频| 欧美电视剧免费全集观看| 日本va欧美va精品发布| 在线播放日韩导航| 视频在线在亚洲| 欧美精品三级在线观看| 亚洲国产美女搞黄色| 在线亚洲一区二区| 一区二区在线看| 欧美性大战久久久久久久蜜臀| 一区二区三区在线高清| 在线观看欧美日本| 午夜精品久久久久久久蜜桃app| 欧美性受xxxx黑人xyx| 午夜精品影院在线观看| 91精品免费在线| 奇米影视一区二区三区小说| 日韩一级二级三级| 精品一区二区三区久久| 久久久亚洲高清| 成人成人成人在线视频| 亚洲人成人一区二区在线观看| 色999日韩国产欧美一区二区| 一区二区三区视频在线看| 欧美日韩亚洲综合| 蜜桃视频一区二区三区| 欧美精品一区视频| 成人丝袜18视频在线观看| 国产精品久久久久久久久快鸭 | 天天亚洲美女在线视频| 911精品国产一区二区在线| 美女视频黄a大片欧美| 久久久久国产免费免费| 成人精品视频网站| 亚洲一区在线观看免费观看电影高清 | 亚洲va国产va欧美va观看| 日韩一区二区三区精品视频 | 91电影在线观看| 日韩中文字幕91| 久久综合一区二区| 成人18精品视频| 日韩在线一区二区| 国产蜜臀av在线一区二区三区| 成人av片在线观看| 午夜精品视频在线观看| 精品国产亚洲一区二区三区在线观看| 国产高清精品久久久久| 亚洲欧美另类久久久精品| 欧美美女网站色| 国产99久久久精品| 亚洲成人av电影在线| 精品福利av导航| 欧美在线观看你懂的| 麻豆成人av在线| 亚洲视频在线一区二区| 7777精品伊人久久久大香线蕉经典版下载 | 一区二区激情小说| 2024国产精品视频| 色狠狠综合天天综合综合| 精品一区二区av| 一区二区国产视频| 久久九九久久九九| 欧美高清激情brazzers| 国产91在线|亚洲| 日韩福利视频导航| 中文字幕日韩一区| 精品少妇一区二区| 在线观看日韩一区| 国产成人在线观看免费网站| 日韩不卡免费视频| 亚洲欧美日韩久久精品| 久久―日本道色综合久久| 欧美日韩高清一区|