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

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

?? ti_cc_spi.h

?? msp430f149+cc2500控制程序
?? H
字號(hào):
// SPI port definitions                     // Adjust the values for the chosen
#define SPI_PxSEL  P3SEL       // interfaces, according to the pin
#define SPI_PxDIR  P3DIR       // assignments indicated in the
#define SPI_PxIN   P3IN        // chosen MSP430 device datasheet.
#define SPI_PxOUT  P3OUT
#define SPI_CSn    BIT0
#define SPI_MOSI   BIT1
#define SPI_MISO   BIT2
#define SPI_SCLK   BIT3
#define DelayTime  40

#define TI_CC_GDO0_PxIN P2IN
#define TI_CC_GDO0_PxDIR P2DIR
#define TI_CC_GDO0_PIN  BIT7


// PATABLE (0 dBm output power)
extern U8 paTable[] = {0xFB};
extern U8 paTableLen = 1;
//
U8 txBuffer[5]={4,1,3,1,4};
U8 rxBuffer[8]={0,0,0,0,0,0,0,0};
U8 rxlength[1]={10};

void SPI_Port_Setup(void)
{
SPI_PxSEL=0;
SPI_PxDIR=0x00;
SPI_PxDIR|=SPI_MOSI+SPI_SCLK+SPI_CSn;

TI_CC_GDO0_PxDIR=0;

}

void SPISendByte(U8 ch)
{U8 n=8;
SPI_PxOUT&=~SPI_SCLK;
while(n--)
  {
  SPI_PxOUT&=~SPI_SCLK;
  if(ch&0x80)
    {
    SPI_PxOUT|=SPI_MOSI;
    }
  else
    {
    SPI_PxOUT&=~SPI_MOSI;
    }
  ch<<=1;
  SPI_PxOUT|=SPI_SCLK;  
  }
SPI_PxOUT&=~SPI_SCLK;
SPI_PxOUT&=~SPI_MOSI;
}
U8 SPIReceiveByte(void)
{U8 n=8;
U8 dat=0;;
SPI_PxOUT&=~SPI_SCLK;
while(n--)
  {
  SPI_PxOUT&=~SPI_SCLK;
    dat<<=1;  
  if(SPI_PxIN&SPI_MISO)
    {
    dat|=0x01;
    }

  SPI_PxOUT|=SPI_SCLK;  
  }
SPI_PxOUT&=~SPI_SCLK;
return(dat);
}
void TI_CC_SPIWriteReg(U8 addr, U8 value)
{
SPI_PxOUT&=~SPI_CSn;
while(SPI_PxIN&SPI_MISO);
SPISendByte(addr);
Delay_us(DelayTime);
SPISendByte(value);
Delay_us(DelayTime);
SPI_PxOUT|=SPI_CSn;  
}

void TI_CC_SPIWriteBurstReg(U8 addr, U8 *buffer, U8 count)
{U8 i;
SPI_PxOUT&=~SPI_CSn;
while(SPI_PxIN&SPI_MISO);
SPISendByte(addr | TI_CCxxx0_WRITE_BURST);
Delay_us(DelayTime);
for (i = 0; i < count; i++)
  {
  SPISendByte(buffer[i]);
  Delay_us(DelayTime);
  }
SPI_PxOUT|=SPI_CSn;  
}
U8 TI_CC_SPIReadReg(U8 addr)
{U8 dat;
SPI_PxOUT&=~SPI_CSn;
while(SPI_PxIN&SPI_MISO);
SPISendByte(addr | TI_CCxxx0_READ_SINGLE);
Delay_us(DelayTime);
dat=SPIReceiveByte();
Delay_us(DelayTime);
SPI_PxOUT|=SPI_CSn;
return (dat);
}
void TI_CC_SPIReadBurstReg(U8 addr, U8 *buffer, U8 count)
{U16 i;
SPI_PxOUT&=~SPI_CSn;
while(SPI_PxIN&SPI_MISO);
SPISendByte(addr | TI_CCxxx0_READ_BURST);
Delay_us(DelayTime);
for(i=0;i<count;i++)
  {
  buffer[i]=SPIReceiveByte();
  Delay_us(DelayTime);
  }
SPI_PxOUT|=SPI_CSn;
}
U8 TI_CC_SPIReadStatus(U8 addr)
{U8 dat;
SPI_PxOUT&=~SPI_CSn;
while(SPI_PxIN&SPI_MISO);
SPISendByte(addr | TI_CCxxx0_READ_BURST);
dat=SPIReceiveByte();
Delay_us(DelayTime);
SPI_PxOUT|=SPI_CSn;
return dat;
}
void TI_CC_SPIStrobe(U8 strobe)
{
SPI_PxOUT&=~SPI_CSn;
while(SPI_PxIN&SPI_MISO);
SPISendByte(strobe);
Delay_us(DelayTime);
SPI_PxOUT|=SPI_CSn;
}
void TI_CC_PowerupResetCCxxxx(void)
{
SPI_PxOUT|=SPI_CSn;
Delay_us(30);
SPI_PxOUT&=~SPI_CSn;
Delay_us(30);
SPI_PxOUT|=SPI_CSn;
Delay_us(45);

SPI_PxOUT&=~SPI_CSn;
while(SPI_PxIN&SPI_MISO);
SPISendByte(TI_CCxxx0_SRES);
Delay_us(DelayTime);
while(SPI_PxIN&SPI_MISO);
SPI_PxOUT|=SPI_CSn;
}


// 2.4GHz
// Product = CC2500
// Crystal accuracy = 40 ppm
// X-tal frequency = 26 MHz
// RF output power = 0 dBm
// RX filterbandwidth = 540.000000 kHz
// Deviation = 0.000000
// Return state:  Return to RX state upon leaving either TX or RX
// Datarate = 250.000000 kbps
// Modulation = (7) MSK
// Manchester enable = (0) Manchester disabled
// RF Frequency = 2433.000000 MHz
// Channel spacing = 199.950000 kHz
// Channel number = 0
// Optimization = Sensitivity
// Sync mode = (3) 30/32 sync word bits detected
// Format of RX/TX data = (0) Normal mode, use FIFOs for RX and TX
// CRC operation = (1) CRC calculation in TX and CRC check in RX enabled
// Forward Error Correction = (0) FEC disabled
// Length configuration = (1) Variable length packets, packet length configured by the first received byte after sync word.
// Packetlength = 255
// Preamble count = (2)  4 bytes
// Append status = 1
// Address check = (0) No address check
// FIFO autoflush = 0
// Device address = 0
// GDO0 signal selection = ( 6) Asserts when sync word has been sent / received, and de-asserts at the end of the packet
// GDO2 signal selection = (11) Serial Clock
void writeRFSettings(void)
{
    // Write register settings
    TI_CC_SPIWriteReg(TI_CCxxx0_IOCFG2,   0x0B);  // GDO2 output pin config.
    TI_CC_SPIWriteReg(TI_CCxxx0_IOCFG0,   0x06);  // GDO0 output pin config.
    TI_CC_SPIWriteReg(TI_CCxxx0_PKTLEN,   0xFF);  // Packet length.
    TI_CC_SPIWriteReg(TI_CCxxx0_PKTCTRL1, 0x05);  // Packet automation control.
    TI_CC_SPIWriteReg(TI_CCxxx0_PKTCTRL0, 0x05);  // Packet automation control.
    TI_CC_SPIWriteReg(TI_CCxxx0_ADDR,     0x01);  // Device address.
    TI_CC_SPIWriteReg(TI_CCxxx0_CHANNR,   0x00); // Channel number.
    TI_CC_SPIWriteReg(TI_CCxxx0_FSCTRL1,  0x07); // Freq synthesizer control.
    TI_CC_SPIWriteReg(TI_CCxxx0_FSCTRL0,  0x00); // Freq synthesizer control.
    TI_CC_SPIWriteReg(TI_CCxxx0_FREQ2,    0x5D); // Freq control word, high byte
    TI_CC_SPIWriteReg(TI_CCxxx0_FREQ1,    0x93); // Freq control word, mid byte.
    TI_CC_SPIWriteReg(TI_CCxxx0_FREQ0,    0xB1); // Freq control word, low byte.
    TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG4,  0x2D); // Modem configuration.
    TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG3,  0x3B); // Modem configuration.
    TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG2,  0x73); // Modem configuration.
    TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG1,  0x22); // Modem configuration.
    TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG0,  0xF8); // Modem configuration.
    TI_CC_SPIWriteReg(TI_CCxxx0_DEVIATN,  0x00); // Modem dev (when FSK mod en)
    TI_CC_SPIWriteReg(TI_CCxxx0_MCSM1 ,   0x3f); //MainRadio Cntrl State Machine
    TI_CC_SPIWriteReg(TI_CCxxx0_MCSM0 ,   0x18); //MainRadio Cntrl State Machine
    TI_CC_SPIWriteReg(TI_CCxxx0_FOCCFG,   0x1D); // Freq Offset Compens. Config
    TI_CC_SPIWriteReg(TI_CCxxx0_BSCFG,    0x1C); //  Bit synchronization config.
    TI_CC_SPIWriteReg(TI_CCxxx0_AGCCTRL2, 0xC7); // AGC control.
    TI_CC_SPIWriteReg(TI_CCxxx0_AGCCTRL1, 0x00); // AGC control.
    TI_CC_SPIWriteReg(TI_CCxxx0_AGCCTRL0, 0xB2); // AGC control.
//------------------------    
//    TI_CC_SPIWriteReg(TI_CCxxx0_WORCTRL, 0xf9); // AGC control. 
    
    TI_CC_SPIWriteReg(TI_CCxxx0_FREND1,   0xB6); // Front end RX configuration.
    TI_CC_SPIWriteReg(TI_CCxxx0_FREND0,   0x10); // Front end RX configuration.
    TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL3,   0xEA); // Frequency synthesizer cal.
    TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL2,   0x0A); // Frequency synthesizer cal.
    TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL1,   0x00); // Frequency synthesizer cal.
    TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL0,   0x11); // Frequency synthesizer cal.
    TI_CC_SPIWriteReg(TI_CCxxx0_FSTEST,   0x59); // Frequency synthesizer cal.
    TI_CC_SPIWriteReg(TI_CCxxx0_TEST2,    0x88); // Various test settings.
    TI_CC_SPIWriteReg(TI_CCxxx0_TEST1,    0x31); // Various test settings.
    TI_CC_SPIWriteReg(TI_CCxxx0_TEST0,    0x0B);  // Various test settings.
}






//-----------------------------------------------------------------------------
//  void RFSendPacket(U8 *txBuffer, U8 size)
//
//  DESCRIPTION:
//  This function transmits a packet with length up to 63 bytes.  To use this
//  function, GD00 must be configured to be asserted when sync word is sent and
//  de-asserted at the end of the packet, which is accomplished by setting the
//  IOCFG0 register to 0x06, per the CCxxxx datasheet.  GDO0 goes high at
//  packet start and returns low when complete.  The function polls GDO0 to
//  ensure packet completion before returning.
//
//  ARGUMENTS:
//      U8 *txBuffer
//          Pointer to a buffer containing the data to be transmitted
//
//      U8 size
//          The size of the txBuffer
//-----------------------------------------------------------------------------
void RFSendPacket(U8 *txBuffer, U8 size)
{    
    TI_CC_SPIWriteBurstReg(TI_CCxxx0_TXFIFO, txBuffer, size); // Write TX data
    TI_CC_SPIStrobe(TI_CCxxx0_STX);         // Change state to TX, initiating
                                            // data transfer

    while (!(TI_CC_GDO0_PxIN&TI_CC_GDO0_PIN));
                                            // Wait GDO0 to go hi -> sync TX'ed
   while (TI_CC_GDO0_PxIN&TI_CC_GDO0_PIN);
                                            // Wait GDO0 to clear -> end of pkt
 //   Delay_us(1);  
}



//-----------------------------------------------------------------------------
//  U8 RFReceivePacket(U8 *rxBuffer, U8 *length)
//
//  DESCRIPTION:
//  Receives a packet of variable length (first byte in the packet must be the
//  length byte).  The packet length should not exceed the RXFIFO size.  To use
//  this function, APPEND_STATUS in the PKTCTRL1 register must be enabled.  It
//  is assumed that the function is called after it is known that a packet has
//  been received; for example, in response to GDO0 going low when it is
//  configured to output packet reception status.
//
//  The RXBYTES register is first read to ensure there are bytes in the FIFO.
//  This is done because the GDO signal will go high even if the FIFO is flushed
//  due to address filtering, CRC filtering, or packet length filtering.
//
//  ARGUMENTS:
//      U8 *rxBuffer
//          Pointer to the buffer where the incoming data should be stored
//      U8 *length
//          Pointer to a variable containing the size of the buffer where the
//          incoming data should be stored. After this function returns, that
//          variable holds the packet length.
//
//  RETURN VALUE:
//      U8
//          0x80:  CRC OK
//          0x00:  CRC NOT OK (or no pkt was put in the RXFIFO due to filtering)
//-----------------------------------------------------------------------------
U8 RFReceivePacket(U8 *rxBuffer, U8 *length)
{
  U8 status[2];
  U8 pktLen;

  if ((TI_CC_SPIReadStatus(TI_CCxxx0_RXBYTES) & TI_CCxxx0_NUM_RXBYTES))
  {
    pktLen = TI_CC_SPIReadReg(TI_CCxxx0_RXFIFO); // Read length byte

    if (pktLen <= *length)                  // If pktLen size <= rxBuffer
    {
      TI_CC_SPIReadBurstReg(TI_CCxxx0_RXFIFO, rxBuffer, pktLen); // Pull data
      *length = pktLen;                     // Return the actual size
      TI_CC_SPIReadBurstReg(TI_CCxxx0_RXFIFO, status, 2);
                                            // Read appended status bytes
      return (U8)(status[TI_CCxxx0_LQI_RX]&TI_CCxxx0_CRC_OK);
    }                                       // Return CRC_OK bit
    else
    {
      *length = pktLen;                     // Return the large size
      TI_CC_SPIStrobe(TI_CCxxx0_SFRX);      // Flush RXFIFO
      return 0;                             // Error
    }
  }
  else
      return 0;                             // Error
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品亚洲国内自在自线福利| 亚洲人成人一区二区在线观看| 欧美国产1区2区| 亚洲三级免费电影| 偷窥少妇高潮呻吟av久久免费 | 色噜噜狠狠一区二区三区果冻| 欧美三级中文字幕在线观看| 日韩欧美高清在线| 国产精品福利在线播放| 亚洲福利电影网| 国产大片一区二区| 欧美探花视频资源| 久久久99精品久久| 亚洲综合无码一区二区| 麻豆精品视频在线观看免费| 国产v综合v亚洲欧| 在线观看一区二区视频| 久久综合色综合88| 亚洲一区在线观看网站| 亚洲成人午夜影院| 成人免费毛片app| 91麻豆免费视频| 日韩欧美国产一区二区在线播放| 国产精品三级电影| 久久精品国产在热久久| 色一区在线观看| www成人在线观看| 五月婷婷欧美视频| 99久久婷婷国产综合精品电影| 欧美一区二区三区啪啪| 亚洲伦理在线精品| 国产麻豆视频一区| 337p亚洲精品色噜噜狠狠| 1区2区3区欧美| 激情综合网最新| 777xxx欧美| 亚洲免费视频成人| 国产99久久久久久免费看农村| 911精品国产一区二区在线| 中文字幕一区二区日韩精品绯色| 激情综合色丁香一区二区| 精品婷婷伊人一区三区三| 综合婷婷亚洲小说| 国产精品一区二区久久不卡 | 久久综合色婷婷| 日韩国产一区二| 欧美网站大全在线观看| 国产精品网曝门| 国产精品中文字幕一区二区三区| 7777精品伊人久久久大香线蕉| 亚洲欧美日韩一区二区| 国产成人精品在线看| 久久众筹精品私拍模特| 久久精品国产免费| 欧美国产精品久久| 蜜臀国产一区二区三区在线播放| 91福利精品视频| 亚洲天堂久久久久久久| 国产成人精品免费在线| www精品美女久久久tv| 免费久久99精品国产| 91精品国产乱| 爽好多水快深点欧美视频| 欧美性做爰猛烈叫床潮| 亚洲综合久久av| 色婷婷av一区二区| 一区二区欧美在线观看| 91麻豆成人久久精品二区三区| 国产日产亚洲精品系列| 国产盗摄精品一区二区三区在线| 久久久久久久久岛国免费| 国产乱人伦偷精品视频不卡| 久久尤物电影视频在线观看| 激情综合色综合久久| 久久久亚洲精品一区二区三区| 国产一区二区伦理片| 久久久国产精品午夜一区ai换脸 | 国产亚洲欧美一区在线观看| 卡一卡二国产精品| 久久免费偷拍视频| 国产高清不卡二三区| 国产精品视频线看| 一本大道久久a久久综合婷婷| 亚洲美女一区二区三区| 欧美日韩在线直播| 青青草91视频| 久久综合久久综合久久| 成人一级片在线观看| 亚洲桃色在线一区| 欧美日韩一区二区三区不卡 | 久久综合色播五月| 成人精品国产免费网站| 亚洲欧美日韩国产成人精品影院 | 亚洲一区二区欧美激情| 在线91免费看| 国产剧情一区二区三区| 中文字幕成人在线观看| 欧日韩精品视频| 日韩精品一二三四| 久久综合国产精品| 99国产精品视频免费观看| 亚洲综合色噜噜狠狠| 欧美一区二区免费视频| 豆国产96在线|亚洲| 亚洲欧美另类图片小说| 欧美电影一区二区| 国产麻豆精品theporn| 亚洲欧美激情小说另类| 91精品国产91久久综合桃花| 国产成a人无v码亚洲福利| 亚洲欧洲国产日韩| 日韩一区二区免费高清| 粉嫩aⅴ一区二区三区四区五区| 一区二区三区中文在线| 欧美一区午夜精品| www.成人在线| 青青草原综合久久大伊人精品| 亚洲国产成人在线| 欧美日韩成人在线| 成人三级伦理片| 亚洲动漫第一页| 国产日韩欧美一区二区三区乱码| 欧美午夜精品理论片a级按摩| 精品在线播放午夜| 夜夜嗨av一区二区三区四季av| 日韩精品一区二区三区在线| av欧美精品.com| 青青草成人在线观看| 免费观看在线综合| 国产永久精品大片wwwapp | 成人动漫一区二区三区| 国产乱妇无码大片在线观看| 精品亚洲成a人| 欧美性欧美巨大黑白大战| 欧美福利视频导航| 一区二区三区产品免费精品久久75| 国产精品国产三级国产aⅴ入口| 韩国av一区二区三区| 久久综合网色—综合色88| 国产一区三区三区| 一区二区激情小说| 久久色在线视频| 在线播放日韩导航| 97se亚洲国产综合在线| 国产一区二区按摩在线观看| 无码av免费一区二区三区试看| 国产精品久久久一本精品| 欧美一级艳片视频免费观看| 色婷婷久久综合| 成人免费毛片a| 久久99国产精品尤物| 亚洲成av人片在线| 国产精品久久福利| 久久伊人蜜桃av一区二区| 91精品国产手机| 欧美日韩高清一区| 色婷婷一区二区三区四区| 不卡的电影网站| 国产成人福利片| 国产制服丝袜一区| 久久精品国产秦先生| 日韩成人一级片| 性久久久久久久久久久久| 一区二区三区四区高清精品免费观看 | 欧美日韩精品久久久| 色8久久人人97超碰香蕉987| 国产黑丝在线一区二区三区| 久久成人久久爱| 奇米影视7777精品一区二区| 亚洲h动漫在线| 亚洲一二三四在线| 亚洲综合一区在线| 一区二区欧美国产| 亚洲免费三区一区二区| 日韩码欧中文字| 中文字幕在线免费不卡| 国产精品盗摄一区二区三区| 国产清纯在线一区二区www| 26uuu成人网一区二区三区| 精品美女一区二区三区| 欧美va亚洲va香蕉在线| 日韩美女在线视频| 337p粉嫩大胆噜噜噜噜噜91av| 日韩一区二区在线播放| 日韩欧美在线影院| 久久久亚洲高清| 麻豆91小视频| 精品国产麻豆免费人成网站| 九一久久久久久| 国产女人水真多18毛片18精品视频| 国产一区二区不卡老阿姨| 中文字幕亚洲区| 日韩女同互慰一区二区| 久久成人18免费观看| 欧美国产禁国产网站cc| 色婷婷久久99综合精品jk白丝| 亚洲第一av色| 国产清纯在线一区二区www| 色综合久久中文综合久久97| 亚洲一区二区免费视频|