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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ti_cc_spi.c

?? 430成都技術培訓會代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
}

char TI_CC_SPIReadStatus(char addr)
{
  char x;

  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (TI_CC_SPI_USCIA1_PxIN & TI_CC_SPI_USCIA1_SOMI);// Wait for CCxxxx ready
  IFG2 &= ~UCA1RXIFG;                       // Clear flag set during last write
  UCA1TXBUF = (addr | TI_CCxxx0_READ_BURST);// Send address
  while (!(IFG2&UCA1RXIFG));                // Wait for TX to finish
  IFG2 &= ~UCA1RXIFG;                       // Clear flag set during last write
  UCA1TXBUF = 0;                            // Dummy write so we can read data
  while (!(IFG2&UCA1RXIFG));                // Wait for RX to finish
  x = UCA1RXBUF;                            // Read data
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable

  return x;
}

void TI_CC_SPIStrobe(char strobe)
{
  IFG2 &= ~UCA1RXIFG;                       // Clear flag
  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (TI_CC_SPI_USCIA1_PxIN&TI_CC_SPI_USCIA1_SOMI);// Wait for CCxxxx ready
  UCA1TXBUF = strobe;                       // Send strobe
  // Strobe addr is now being TX'ed
  while (!(IFG2&UCA1RXIFG));                // Wait for end of addr TX
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable
}

void TI_CC_PowerupResetCCxxxx(void)
{
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;
  TI_CC_Wait(30);
  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;
  TI_CC_Wait(30);
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;
  TI_CC_Wait(45);

  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (TI_CC_SPI_USCIA1_PxIN&TI_CC_SPI_USCIA1_SOMI);// Wait for CCxxxx ready
  UCA1TXBUF = TI_CCxxx0_SRES;               // Send strobe
  // Strobe addr is now being TX'ed
  IFG2 &= ~UCA1RXIFG;                       // Clear flag
  while (!(IFG2&UCA1RXIFG));                // Wait for end of addr TX
  while (TI_CC_SPI_USCIA1_PxIN&TI_CC_SPI_USCIA1_SOMI);
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable
}


#elif TI_CC_RF_SER_INTF == TI_CC_SER_INTF_USCIB0


void TI_CC_SPISetup(void)
{
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;
  TI_CC_CSn_PxDIR |= TI_CC_CSn_PIN;         // /CS disable

  UCB0CTL0 |= UCMST+UCCKPL+UCMSB+UCSYNC;    // 3-pin, 8-bit SPI master
  UCB0CTL1 |= UCSSEL_2;                     // SMCLK
  UCB0BR0 |= 0x02;                          // UCLK/2
  UCB0BR1 = 0;
  //UCB0MCTL = 0;
  TI_CC_SPI_USCIB0_PxSEL |= TI_CC_SPI_USCIB0_SIMO | TI_CC_SPI_USCIB0_SOMI | TI_CC_SPI_USCIB0_UCLK;
                                            // SPI option select
  TI_CC_SPI_USCIB0_PxDIR |= TI_CC_SPI_USCIB0_SIMO | TI_CC_SPI_USCIB0_UCLK;
                                            // SPI TXD out direction
  UCB0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
}

void TI_CC_SPIWriteReg(char addr, char value)
{
    TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;      // /CS enable
    while (TI_CC_SPI_USCIB0_PxIN&TI_CC_SPI_USCIB0_SOMI);// Wait for CCxxxx ready
    IFG2 &= ~UCB0RXIFG;                     // Clear flag
    UCB0TXBUF = addr;                       // Send address
    while (!(IFG2&UCB0RXIFG));              // Wait for TX to finish
    IFG2 &= ~UCB0RXIFG;                     // Clear flag
    UCB0TXBUF = value;                      // Send data
    while (!(IFG2&UCB0RXIFG));              // Wait for TX to finish
    TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;       // /CS disable
}

void TI_CC_SPIWriteBurstReg(char addr, char *buffer, char count)
{
    unsigned int i;

    TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;      // /CS enable
    while (TI_CC_SPI_USCIB0_PxIN&TI_CC_SPI_USCIB0_SOMI);// Wait for CCxxxx ready
    IFG2 &= ~UCB0RXIFG;
    UCB0TXBUF = addr | TI_CCxxx0_WRITE_BURST;// Send address
    while (!(IFG2&UCB0RXIFG));              // Wait for TX to finish
    for (i = 0; i < count; i++)
    {
      IFG2 &= ~UCB0RXIFG;
      UCB0TXBUF = buffer[i];                // Send data
      while (!(IFG2&UCB0RXIFG));            // Wait for TX to finish
    }
    //while (!(IFG2&UCB0RXIFG));
    TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;       // /CS disable
}

char TI_CC_SPIReadReg(char addr)
{
  char x;

  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (!(IFG2&UCB0TXIFG));                // Wait for TX to finish
  UCB0TXBUF = (addr | TI_CCxxx0_READ_SINGLE);// Send address
  while (!(IFG2&UCB0TXIFG));                // Wait for TX to finish
  UCB0TXBUF = 0;                            // Dummy write so we can read data
  // Address is now being TX'ed, with dummy byte waiting in TXBUF...
  while (!(IFG2&UCB0RXIFG));                // Wait for RX to finish
  // Dummy byte RX'ed during addr TX now in RXBUF
  IFG2 &= ~UCB0RXIFG;                       // Clear flag set during addr write
  while (!(IFG2&UCB0RXIFG));                // Wait for end of dummy byte TX
  // Data byte RX'ed during dummy byte write is now in RXBUF
  x = UCB0RXBUF;                            // Read data
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable

  return x;
}

void TI_CC_SPIReadBurstReg(char addr, char *buffer, char count)
{
  char i;

  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (TI_CC_SPI_USCIB0_PxIN&TI_CC_SPI_USCIB0_SOMI);// Wait for CCxxxx ready
  IFG2 &= ~UCB0RXIFG;                       // Clear flag
  UCB0TXBUF = (addr | TI_CCxxx0_READ_BURST);// Send address
  while (!(IFG2&UCB0TXIFG));                // Wait for TXBUF ready
  UCB0TXBUF = 0;                            // Dummy write to read 1st data byte
  // Addr byte is now being TX'ed, with dummy byte to follow immediately after
  while (!(IFG2&UCB0RXIFG));                // Wait for end of addr byte TX
  IFG2 &= ~UCB0RXIFG;                       // Clear flag
  while (!(IFG2&UCB0RXIFG));                // Wait for end of 1st data byte TX
  // First data byte now in RXBUF
  for (i = 0; i < (count-1); i++)
  {
    UCB0TXBUF = 0;                          //Initiate next data RX, meanwhile..
    buffer[i] = UCB0RXBUF;                  // Store data from last data RX
    while (!(IFG2&UCB0RXIFG));              // Wait for RX to finish
  }
  buffer[count-1] = UCB0RXBUF;              // Store last RX byte in buffer
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable
}

char TI_CC_SPIReadStatus(char addr)
{
  char x;

  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (TI_CC_SPI_USCIB0_PxIN & TI_CC_SPI_USCIB0_SOMI);// Wait for CCxxxx ready
  IFG2 &= ~UCB0RXIFG;                       // Clear flag set during last write
  UCB0TXBUF = (addr | TI_CCxxx0_READ_BURST);// Send address
  while (!(IFG2&UCB0RXIFG));                // Wait for TX to finish
  IFG2 &= ~UCB0RXIFG;                       // Clear flag set during last write
  UCB0TXBUF = 0;                            // Dummy write so we can read data
  while (!(IFG2&UCB0RXIFG));                // Wait for RX to finish
  x = UCB0RXBUF;                            // Read data
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable

  return x;
}

void TI_CC_SPIStrobe(char strobe)
{
  IFG2 &= ~UCB0RXIFG;                       // Clear flag
  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (TI_CC_SPI_USCIB0_PxIN&TI_CC_SPI_USCIB0_SOMI);// Wait for CCxxxx ready
  UCB0TXBUF = strobe;                       // Send strobe
  // Strobe addr is now being TX'ed
  while (!(IFG2&UCB0RXIFG));                // Wait for end of addr TX
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable
}

void TI_CC_PowerupResetCCxxxx(void)
{
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;
  TI_CC_Wait(30);
  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;
  TI_CC_Wait(30);
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;
  TI_CC_Wait(45);

  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (TI_CC_SPI_USCIB0_PxIN&TI_CC_SPI_USCIB0_SOMI);// Wait for CCxxxx ready
  UCB0TXBUF = TI_CCxxx0_SRES;               // Send strobe
  // Strobe addr is now being TX'ed
  IFG2 &= ~UCB0RXIFG;                       // Clear flag
  while (!(IFG2&UCB0RXIFG));                // Wait for end of addr TX
  while (TI_CC_SPI_USCIB0_PxIN&TI_CC_SPI_USCIB0_SOMI);
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable
}


#elif TI_CC_RF_SER_INTF == TI_CC_SER_INTF_USCIB1


void TI_CC_SPISetup(void)
{
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;
  TI_CC_CSn_PxDIR |= TI_CC_CSn_PIN;         // /CS disable

  UCB1CTL0 |= UCMST+UCCKPL+UCMSB+UCSYNC;    // 3-pin, 8-bit SPI master
  UCB1CTL1 |= UCSSEL_2;                     // SMCLK
  UCB1BR0 |= 0x02;                          // UCLK/2
  UCB1BR1 = 0;
  UCB1MCTL = 0;
  TI_CC_SPI_USCIB1_PxSEL |= TI_CC_SPI_USCIB1_SIMO | TI_CC_SPI_USCIB1_SOMI | TI_CC_SPI_USCIB1_UCLK;
                                            // SPI option select
  TI_CC_SPI_USCIB1_PxDIR |= TI_CC_SPI_USCIB1_SIMO | TI_CC_SPI_USCIB1_UCLK;
                                            // SPI TXD out direction
  UCB1CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
}

void TI_CC_SPIWriteReg(char addr, char value)
{
    TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;      // /CS enable
    while (TI_CC_SPI_USCIB1_PxIN&TI_CC_SPI_USCIB1_SOMI);// Wait for CCxxxx ready
    IFG2 &= ~UCB1RXIFG;                     // Clear flag
    UCB1TXBUF = addr;                       // Send address
    while (!(IFG2&UCB1RXIFG));              // Wait for TX to finish
    IFG2 &= ~UCB1RXIFG;                     // Clear flag
    UCB1TXBUF = value;                      // Send data
    while (!(IFG2&UCB1RXIFG));              // Wait for TX to finish
    TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;       // /CS disable
}

void TI_CC_SPIWriteBurstReg(char addr, char *buffer, char count)
{
    unsigned int i;

    TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;      // /CS enable
    while (TI_CC_SPI_USCIB1_PxIN&TI_CC_SPI_USCIB1_SOMI);// Wait for CCxxxx ready
    IFG2 &= ~UCB1RXIFG;
    UCB1TXBUF = addr | TI_CCxxx0_WRITE_BURST;// Send address
    while (!(IFG2&UCB1RXIFG));              // Wait for TX to finish
    for (i = 0; i < count; i++)
    {
      IFG2 &= ~UCB1RXIFG;
      UCB1TXBUF = buffer[i];                // Send data
      while (!(IFG2&UCB1RXIFG));            // Wait for TX to finish
    }
    //while (!(IFG2&UCB1RXIFG));
    TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;       // /CS disable
}

char TI_CC_SPIReadReg(char addr)
{
  char x;

  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (!(IFG2&UCB1TXIFG));                // Wait for TX to finish
  UCB1TXBUF = (addr | TI_CCxxx0_READ_SINGLE);// Send address
  while (!(IFG2&UCB1TXIFG));                // Wait for TX to finish
  UCB1TXBUF = 0;                            // Dummy write so we can read data
  // Address is now being TX'ed, with dummy byte waiting in TXBUF...
  while (!(IFG2&UCB1RXIFG));                // Wait for RX to finish
  // Dummy byte RX'ed during addr TX now in RXBUF
  IFG2 &= ~UCB1RXIFG;                       // Clear flag set during addr write
  while (!(IFG2&UCB1RXIFG));                // Wait for end of dummy byte TX
  // Data byte RX'ed during dummy byte write is now in RXBUF
  x = UCB1RXBUF;                            // Read data
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable

  return x;
}

void TI_CC_SPIReadBurstReg(char addr, char *buffer, char count)
{
  char i;

  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (TI_CC_SPI_USCIB1_PxIN&TI_CC_SPI_USCIB1_SOMI);// Wait for CCxxxx ready
  IFG2 &= ~UCB1RXIFG;                       // Clear flag
  UCB1TXBUF = (addr | TI_CCxxx0_READ_BURST);// Send address
  while (!(IFG2&UCB1TXIFG));                // Wait for TXBUF ready
  UCB1TXBUF = 0;                            // Dummy write to read 1st data byte
  // Addr byte is now being TX'ed, with dummy byte to follow immediately after
  while (!(IFG2&UCB1RXIFG));                // Wait for end of addr byte TX
  IFG2 &= ~UCB1RXIFG;                       // Clear flag
  while (!(IFG2&UCB1RXIFG));                // Wait for end of 1st data byte TX
  // First data byte now in RXBUF
  for (i = 0; i < (count-1); i++)
  {
    UCB1TXBUF = 0;                          //Initiate next data RX, meanwhile..
    buffer[i] = UCB1RXBUF;                  // Store data from last data RX
    while (!(IFG2&UCB1RXIFG));              // Wait for RX to finish
  }
  buffer[count-1] = UCB1RXBUF;              // Store last RX byte in buffer
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable
}

char TI_CC_SPIReadStatus(char addr)
{
  char x;

  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (TI_CC_SPI_USCIB1_PxIN & TI_CC_SPI_USCIB1_SOMI);// Wait for CCxxxx ready
  IFG2 &= ~UCB1RXIFG;                       // Clear flag set during last write
  UCB1TXBUF = (addr | TI_CCxxx0_READ_BURST);// Send address
  while (!(IFG2&UCB1RXIFG));                // Wait for TX to finish
  IFG2 &= ~UCB1RXIFG;                       // Clear flag set during last write
  UCB1TXBUF = 0;                            // Dummy write so we can read data
  while (!(IFG2&UCB1RXIFG));                // Wait for RX to finish
  x = UCB1RXBUF;                            // Read data

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲婷婷国产精品电影人久久| 欧美日韩亚洲综合一区二区三区| 欧美精品一区二区三区很污很色的 | 欧美片在线播放| 国产精品一区二区不卡| 久久影院视频免费| 国产成人av在线影院| 国产精品国产成人国产三级| 色综合色综合色综合色综合色综合 | 开心九九激情九九欧美日韩精美视频电影| 91精品国产综合久久精品麻豆 | 欧美羞羞免费网站| 亚洲一区二区成人在线观看| 欧美日韩国产高清一区二区三区 | 亚洲主播在线播放| 欧美高清视频一二三区| 久久99国产精品久久99| 国产日韩欧美麻豆| 在线视频你懂得一区| 美女国产一区二区| 日本一二三四高清不卡| 欧美在线free| 国内精品伊人久久久久影院对白| 国产人成亚洲第一网站在线播放| 色婷婷久久99综合精品jk白丝| 天天综合网天天综合色| 国产三级精品在线| 欧美在线视频日韩| 国内精品不卡在线| 一区二区三区在线免费视频| 日韩美女一区二区三区四区| 波多野结衣亚洲一区| 丝袜诱惑制服诱惑色一区在线观看| 精品国产乱码久久久久久闺蜜| 99re这里只有精品首页| 久久99久久99精品免视看婷婷| 国产精品毛片久久久久久久| 欧美一区二区三级| 日本韩国欧美在线| 韩国v欧美v日本v亚洲v| 亚洲一级片在线观看| 欧美精品一区二| 欧美日韩免费一区二区三区| 成人免费毛片aaaaa**| 无码av免费一区二区三区试看 | 亚洲久本草在线中文字幕| 日韩欧美亚洲另类制服综合在线| 色美美综合视频| 国产成人精品www牛牛影视| 偷拍一区二区三区四区| 中文字幕欧美一区| 久久久久99精品一区| 日韩一级成人av| 在线欧美一区二区| 成人国产精品免费网站| 国产精品一色哟哟哟| 蜜桃一区二区三区在线观看| 亚洲一二三四区不卡| 中文字幕第一区第二区| 精品国产伦一区二区三区免费| 欧美日韩亚洲另类| 91亚洲国产成人精品一区二区三| 国产综合色精品一区二区三区| 日韩精品三区四区| 亚洲国产美女搞黄色| 亚洲女同女同女同女同女同69| 国产欧美一区视频| 久久精品在线观看| 久久亚洲一级片| 精品久久国产97色综合| 日韩视频免费观看高清完整版 | 亚洲在线成人精品| 亚洲丝袜制服诱惑| 中文字幕在线不卡一区| 国产精品天美传媒| 国产欧美日韩综合精品一区二区 | 91精品办公室少妇高潮对白| 99久久精品情趣| 99国产欧美另类久久久精品 | 成人手机在线视频| 成人激情动漫在线观看| 成人h动漫精品| 99精品欧美一区| zzijzzij亚洲日本少妇熟睡| 99综合影院在线| 一本大道综合伊人精品热热| 91麻豆免费在线观看| 欧美综合色免费| 欧美日韩精品一区二区三区| 欧美精品国产精品| 欧美成人艳星乳罩| 国产性天天综合网| 中文字幕亚洲在| 亚洲高清中文字幕| 久久激情五月婷婷| 国产成人午夜视频| 91天堂素人约啪| 欧美三片在线视频观看 | 国产白丝精品91爽爽久久| 国产福利一区在线观看| 99综合影院在线| 欧美日韩视频一区二区| 日韩美女视频在线| 国产丝袜美腿一区二区三区| 中文字幕亚洲视频| 日韩电影一区二区三区| 国内成人免费视频| 色综合天天视频在线观看| 在线播放91灌醉迷j高跟美女| 欧美成人三级在线| 国产精品九色蝌蚪自拍| 亚洲国产成人tv| 国产精品123区| 欧美性生活一区| 久久蜜臀精品av| 夜夜嗨av一区二区三区网页| 麻豆91在线观看| 91欧美激情一区二区三区成人| 欧美一级一级性生活免费录像| 欧美国产日韩亚洲一区| 亚洲成人tv网| 成人短视频下载| 日韩欧美在线综合网| 亚洲人成伊人成综合网小说| 喷白浆一区二区| 色综合久久中文字幕综合网| 日韩欧美中文字幕制服| 成人欧美一区二区三区小说| 亚洲一区二区五区| 天堂蜜桃91精品| www.视频一区| 欧美一二三区精品| 国产精品嫩草久久久久| 亚洲欧美日韩中文字幕一区二区三区 | 国产人伦精品一区二区| 一区二区三区中文在线观看| 捆绑调教美女网站视频一区| av一二三不卡影片| 日韩一区二区免费在线电影 | 国产精品久久久久影院亚瑟| 午夜a成v人精品| 成人久久18免费网站麻豆| 欧美亚洲国产一卡| 亚洲视频狠狠干| 国产一区 二区| 欧美日韩国产一二三| 日本一区二区三区在线不卡| 久久国产生活片100| 欧美色视频在线观看| 日本一区二区成人| 精品在线亚洲视频| 国产精品自拍三区| 精品日韩一区二区三区| 亚洲综合一二区| 国产一区二区三区不卡在线观看| av一二三不卡影片| 久久久久久夜精品精品免费| 午夜精品国产更新| 色综合天天综合色综合av | jlzzjlzz亚洲日本少妇| 欧美草草影院在线视频| 亚洲成人tv网| 国产传媒一区在线| 欧美大片在线观看| 亚洲成av人在线观看| 色先锋久久av资源部| 国产精品区一区二区三区| 亚洲午夜免费视频| 一本大道av一区二区在线播放| 久久人人97超碰com| 首页综合国产亚洲丝袜| 99久久婷婷国产| 中文字幕乱码一区二区免费| 韩日精品视频一区| 欧美老女人第四色| 婷婷开心久久网| 成人91在线观看| 亚洲国产精品二十页| 国产成人夜色高潮福利影视| 精品免费日韩av| 免费看黄色91| 欧美电视剧在线看免费| 麻豆精品一区二区综合av| 日韩一区二区电影| 亚洲最新视频在线播放| 成人av电影在线| 亚洲欧美综合色| 91福利视频久久久久| 亚洲精选免费视频| 91在线视频在线| 亚洲综合激情网| 欧美午夜理伦三级在线观看| 亚洲欧美色一区| 在线成人av影院| 日韩av一区二区三区四区| 日韩一区二区三免费高清| 亚洲小少妇裸体bbw| 日韩精品一区二区三区视频播放 | 99re热这里只有精品免费视频| 久久在线免费观看|