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

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

?? ti_cc_spi.c

?? 430成都技術(shù)培訓(xùn)會代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable

  return x;
}

void TI_CC_SPIStrobe(char strobe)
{
  IFG2 &= ~UCB1RXIFG;                       // Clear flag
  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
  UCB1TXBUF = strobe;                       // Send strobe
  // Strobe addr is now being TX'ed
  while (!(IFG2&UCB1RXIFG));                // 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_USCIB1_PxIN&TI_CC_SPI_USCIB1_SOMI);// Wait for CCxxxx ready
  UCB1TXBUF = TI_CCxxx0_SRES;               // Send strobe
  // Strobe addr is now being TX'ed
  IFG2 &= ~UCB1RXIFG;                       // Clear flag
  while (!(IFG2&UCB1RXIFG));                // Wait for end of addr TX
  while (TI_CC_SPI_USCIB1_PxIN&TI_CC_SPI_USCIB1_SOMI);
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable
}


#elif TI_CC_RF_SER_INTF == TI_CC_SER_INTF_USI


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

  USICTL0 |= USIPE7 +  USIPE6 + USIPE5 + USIMST + USIOE;// Port, SPI master
  USICKCTL = USISSEL_2 + USICKPL;           // SCLK = SMCLK
  USICTL0 &= ~USISWRST;                     // USI released for operation

  USISRL = 0x00;                            // Ensure SDO low instead of high,
  USICNT = 1;                               // to avoid conflict with CCxxxx
}

void TI_CC_SPIWriteReg(char addr, char value)
{
  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (TI_CC_SPI_USI_PxIN&TI_CC_SPI_USI_SOMI);// Wait for CCxxxx ready
  USISRL = addr;                            // Load address
  USICNT = 8;                               // Send it
  while (!(USICTL1&USIIFG));                // Wait for TX to finish
  USISRL = value;                           // Load value
  USICNT = 8;                               // Send it
  while (!(USICTL1&USIIFG));                // 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_USI_PxIN&TI_CC_SPI_USI_SOMI);// Wait for CCxxxx ready
  USISRL = addr | TI_CCxxx0_WRITE_BURST;    // Load address
  USICNT = 8;                               // Send it
  while (!(USICTL1&USIIFG));                // Wait for TX to finish
  for (i = 0; i < count; i++)
  {
    USISRL = buffer[i];                     // Load data
    USICNT = 8;                             // Send it
    while (!(USICTL1&USIIFG));              // Wait for TX to finish
  }
  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 (TI_CC_SPI_USI_PxIN&TI_CC_SPI_USI_SOMI);// Wait for CCxxxx ready
  USISRL = addr | TI_CCxxx0_READ_SINGLE;    // Load address
  USICNT = 8;                               // Send it
  while (!(USICTL1&USIIFG));                // Wait for TX to finish
  USICNT = 8;                               // Dummy write so we can read data
  while (!(USICTL1&USIIFG));                // Wait for RX to finish
  x = USISRL;                               // Store data
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable

  return x;
}

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

  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (TI_CC_SPI_USI_PxIN&TI_CC_SPI_USI_SOMI);// Wait for CCxxxx ready
  USISRL = addr | TI_CCxxx0_READ_BURST;     // Load address
  USICNT = 8;                               // Send it
  while (!(USICTL1&USIIFG));                // Wait for TX to finish
  for (i = 0; i < count; i++)
  {
    USICNT = 8;                             // Dummy write so we can read data
    while (!(USICTL1&USIIFG));              // Wait for RX to finish
    buffer[i] = USISRL;                     // Store data
  }
  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_USI_PxIN&TI_CC_SPI_USI_SOMI);// Wait for CCxxxx ready
  USISRL = addr | TI_CCxxx0_READ_BURST;     // Load address
  USICNT = 8;                               // Send it
  while (!(USICTL1&USIIFG));                // Wait for TX to finish
  USICNT = 8;                               // Dummy write so we can read data
  while (!(USICTL1&USIIFG));                // Wait for RX to finish
  x = USISRL;                               // Store data
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable

  return x;
}

void TI_CC_SPIStrobe(char strobe)
{
  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (TI_CC_SPI_USI_PxIN&TI_CC_SPI_USI_SOMI);// Wait for CCxxxx ready
  USISRL = strobe;                          // Load strobe
  USICNT = 8;                               // Send it
  while (!(USICTL1&USIIFG));                // Wait for TX to finish
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable
}

void TI_CC_PowerupResetCCxxxx(void)
{
  // Sec. 27.1 of CC1100 datasheet
  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;
  while (TI_CC_SPI_USI_PxIN&TI_CC_SPI_USI_SOMI);
  USISRL = TI_CCxxx0_SRES;
  USICNT = 8;
  while (!(USICTL1&USIIFG));
  while (TI_CC_SPI_USI_PxIN&TI_CC_SPI_USI_SOMI);
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;
}


#elif TI_CC_RF_SER_INTF == TI_CC_SER_INTF_BITBANG

void TI_CC_SPI_bitbang_out(char);
char TI_CC_SPI_bitbang_in();

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

  // Config bitbang pins
  TI_CC_SPI_BITBANG_PxOUT |= TI_CC_SPI_BITBANG_SIMO|TI_CC_SPI_BITBANG_UCLK;
  TI_CC_SPI_BITBANG_PxDIR |= TI_CC_SPI_BITBANG_SIMO | TI_CC_SPI_BITBANG_UCLK;
}

// Output eight-bit value using selected bit-bang pins
void TI_CC_SPI_bitbang_out(char value)
{
  char x;

  for(x=8;x>0;x--)
  {
    if(value & 0x80)                                     // If bit is high...
      TI_CC_SPI_BITBANG_PxOUT |= TI_CC_SPI_BITBANG_SIMO; // Set SIMO high...
    else
      TI_CC_SPI_BITBANG_PxOUT &= ~TI_CC_SPI_BITBANG_SIMO;// Set SIMO low...
    value = value << 1;                                  // Rotate bits

    TI_CC_SPI_BITBANG_PxOUT &= ~TI_CC_SPI_BITBANG_UCLK;  // Set clock low
    TI_CC_SPI_BITBANG_PxOUT |= TI_CC_SPI_BITBANG_UCLK;   // Set clock high
  }
}

// Input eight-bit value using selected bit-bang pins
char TI_CC_SPI_bitbang_in()
{
  char x=0,shift=0;
  int y;

  // Determine how many bit positions SOMI is from least-significant bit
  x = TI_CC_SPI_BITBANG_SOMI;
  while(x>1)
  {
    shift++;
    x = x >> 1;
  };

  x = 0;
  for(y=8;y>0;y--)
  {
    TI_CC_SPI_BITBANG_PxOUT &= ~TI_CC_SPI_BITBANG_UCLK;// Set clock low
    TI_CC_SPI_BITBANG_PxOUT |= TI_CC_SPI_BITBANG_UCLK;// Set clock high

    x = x << 1;                             // Make room for next bit
    x = x | ((TI_CC_SPI_BITBANG_PxIN & TI_CC_SPI_BITBANG_SOMI) >> shift);
  }                                         // Store next bit
  return(x);
}

void TI_CC_SPIWriteReg(char addr, char value)
{
    TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;      // /CS enable
    while (TI_CC_SPI_BITBANG_PxIN&TI_CC_SPI_BITBANG_SOMI); // Wait CCxxxx ready
    TI_CC_SPI_bitbang_out(addr);            // Send address
    TI_CC_SPI_bitbang_out(value);           // Send data
    TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;       // /CS disable
}

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

    TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;      // /CS enable
    while (TI_CC_SPI_BITBANG_PxIN&TI_CC_SPI_BITBANG_SOMI); // Wait CCxxxx ready
    TI_CC_SPI_bitbang_out(addr | TI_CCxxx0_WRITE_BURST);   // Send address
    for (i = 0; i < count; i++)
      TI_CC_SPI_bitbang_out(buffer[i]);     // Send data
    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
  TI_CC_SPI_bitbang_out(addr | TI_CCxxx0_READ_SINGLE);//Send address
  x = TI_CC_SPI_bitbang_in();               // 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_BITBANG_PxIN&TI_CC_SPI_BITBANG_SOMI); // Wait CCxxxx ready
  TI_CC_SPI_bitbang_out(addr | TI_CCxxx0_READ_BURST);    // Send address
  for (i = 0; i < count; i++)
    buffer[i] = TI_CC_SPI_bitbang_in();     // Read data
  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_BITBANG_PxIN & TI_CC_SPI_BITBANG_SOMI); // Wait CCxxxx ready
  TI_CC_SPI_bitbang_out(addr | TI_CCxxx0_READ_BURST);      // Send address
  x = TI_CC_SPI_bitbang_in();               // Read data
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable

  return x;
}

void TI_CC_SPIStrobe(char strobe)
{
  TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN;        // /CS enable
  while (TI_CC_SPI_BITBANG_PxIN&TI_CC_SPI_BITBANG_SOMI);// Wait for CCxxxx ready
  TI_CC_SPI_bitbang_out(strobe);            // Send strobe
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;         // /CS disable
}

void TI_CC_PowerupResetCCxxxx(void)
{
  // Sec. 27.1 of CC1100 datasheet
  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;
  while (TI_CC_SPI_BITBANG_PxIN&TI_CC_SPI_BITBANG_SOMI);
  TI_CC_SPI_bitbang_out(TI_CCxxx0_SRES);
  while (TI_CC_SPI_BITBANG_PxIN&TI_CC_SPI_BITBANG_SOMI);
  TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN;
}
#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美专区日韩专区| 精品剧情v国产在线观看在线| 成人自拍视频在线观看| 日韩一区二区电影网| 欧美久久久久久蜜桃| 欧美日韩极品在线观看一区| 91福利在线观看| 欧美日韩亚洲综合| 欧美情侣在线播放| 日韩欧美国产麻豆| 精品国产sm最大网站| 久久久久久久久久久久久夜| 中文字幕乱码一区二区免费| 欧美极品aⅴ影院| 中文字幕在线观看一区二区| 成人免费在线观看入口| 一区二区三区在线视频观看| 亚洲制服丝袜在线| 日韩精品欧美精品| 六月丁香综合在线视频| 国产69精品久久久久777| 不卡的av电影| 欧美日韩亚洲综合在线| 日韩精品综合一本久道在线视频| 久久久久久久久久久黄色| 国产精品全国免费观看高清| 国产精品国产成人国产三级| 一区二区在线免费| 日韩av不卡在线观看| 国产精品一二一区| 91麻豆精品秘密| 欧美一级日韩免费不卡| 久久综合久久久久88| 中文字幕在线一区二区三区| 亚洲亚洲人成综合网络| 精品在线你懂的| av在线播放成人| 6080午夜不卡| 欧美激情一区二区在线| 一区二区在线观看不卡| 日韩福利视频导航| 成人免费毛片a| 777xxx欧美| 国产精品久久久久久久久免费樱桃 | 欧洲一区二区av| 日韩欧美一级特黄在线播放| 国产精品久久久久9999吃药| 午夜天堂影视香蕉久久| 国产福利精品一区二区| 欧美色欧美亚洲另类二区| 久久久影视传媒| 香蕉久久夜色精品国产使用方法| 国产成人亚洲综合色影视| 欧美午夜免费电影| 国产亚洲一区二区在线观看| 婷婷丁香激情综合| 国产精品区一区二区三区| 亚洲成av人片一区二区| 成人高清免费在线播放| 91麻豆精品国产91久久久资源速度| 欧美国产一区在线| 美女免费视频一区| 欧美中文字幕一区二区三区亚洲| 国产日产精品1区| 日韩高清一区二区| 日本久久一区二区三区| 久久精品无码一区二区三区| 日韩国产欧美在线视频| 91网站视频在线观看| 久久久久高清精品| 蜜臀精品一区二区三区在线观看| 91首页免费视频| 中文字幕欧美日本乱码一线二线| 日韩电影在线一区二区| 日本丰满少妇一区二区三区| 国产校园另类小说区| 久久av老司机精品网站导航| 欧美性一级生活| 亚洲视频中文字幕| 国产成人精品网址| 久久久久久久久一| 久草精品在线观看| 欧美日本韩国一区| 亚洲一二三区在线观看| 91免费看`日韩一区二区| 中文在线免费一区三区高中清不卡| 久久99久久99| 精品区一区二区| 日韩国产在线观看一区| 欧美日韩免费观看一区二区三区| 亚洲欧美日韩系列| 91在线免费视频观看| 国产精品女同一区二区三区| 国产美女av一区二区三区| 欧美变态凌虐bdsm| 免费成人在线视频观看| 欧美一区二区在线看| 天天色综合成人网| 51久久夜色精品国产麻豆| 午夜电影网亚洲视频| 欧美日韩中文一区| 偷拍一区二区三区| 欧美一级日韩一级| 另类小说一区二区三区| 亚洲精品一区二区三区在线观看| 另类专区欧美蜜桃臀第一页| 精品日韩一区二区| 日韩欧美亚洲另类制服综合在线| 久久电影网电视剧免费观看| 欧美大片顶级少妇| 国产伦精一区二区三区| 国产日韩欧美在线一区| 成人av影院在线| 1000精品久久久久久久久| 91在线视频观看| 一个色在线综合| 欧美久久久久久久久中文字幕| 日韩精品电影在线观看| 欧美一区二区三区不卡| 国产一区二区精品久久91| 国产精品国产三级国产aⅴ中文| 91麻豆国产自产在线观看| 亚洲超碰97人人做人人爱| 日韩三级.com| 国产91精品在线观看| 亚洲欧美一区二区久久| 欧美午夜精品电影| 蜜乳av一区二区三区| 久久影音资源网| 91视频.com| 日韩影视精彩在线| 精品国产成人系列| 成人激情电影免费在线观看| 一区二区三区在线视频观看58 | 国产精品午夜春色av| 91在线云播放| 婷婷一区二区三区| 精品国产伦理网| 91小视频在线| 日本免费在线视频不卡一不卡二| 久久久精品影视| 欧美影片第一页| 国产麻豆精品在线| 亚洲欧美韩国综合色| 日韩丝袜美女视频| 成人v精品蜜桃久久一区| 欧美少妇bbb| 国产精品主播直播| 亚洲综合激情网| 久久久久久久一区| 欧美色精品在线视频| 国产乱淫av一区二区三区 | 99视频热这里只有精品免费| 午夜激情一区二区三区| 欧美国产综合一区二区| 欧美另类变人与禽xxxxx| 国产精品69久久久久水密桃| 亚洲一区二区三区自拍| 26uuu亚洲综合色欧美| 欧洲国内综合视频| 成人夜色视频网站在线观看| 亚洲国产精品嫩草影院| 亚洲国产精品黑人久久久| 欧美日韩成人综合天天影院| 成人av电影在线| 久久av资源网| 亚洲成av人片| 亚洲欧洲制服丝袜| 国产欧美日韩激情| 日韩一级片在线观看| 91免费国产在线| 成人av网在线| 国产一区二区精品久久99| 日韩成人一级大片| 一区二区三区日韩精品视频| 国产人成亚洲第一网站在线播放| 欧美一区二区久久久| 欧美日韩免费观看一区二区三区| 99久久99久久免费精品蜜臀| 国产精品一区二区在线看| 日本aⅴ亚洲精品中文乱码| 一区二区在线电影| 亚洲视频一区二区在线| 久久精品日韩一区二区三区| 日韩一区二区三免费高清| 欧美三级在线看| 91麻豆成人久久精品二区三区| 国产99久久久精品| 国内精品视频666| 精品一区二区av| 麻豆成人久久精品二区三区红| 亚洲国产精品一区二区久久| 一区二区三区在线观看视频| 亚洲欧洲色图综合| 中文字幕av不卡| 国产偷国产偷亚洲高清人白洁| 精品999在线播放| 精品av久久707| 久久午夜电影网| 国产视频一区在线观看|