⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tmexicoiar.c

📁 MSP430 LMX2326 sends 24 specified bits for LMX2326 SynthBuf[0] identical for three groups of Freq,
💻 C
字号:
/*******************************************************************
sends 24 specified bits for LMX2326
  SynthBuf[0] identical for three groups of Freq,Ref and Init 
*******************************************************************/
#include  <msp430x20x2.h>
void InitLMX2326(void);
void SetLMX2326Ref(void);
void SetLMX2326Freq(unsigned int hzFreq);
void ChkSpacing(void);
unsigned char SynthBuf[3];
unsigned int  NB_Cnt,TxFreq;
unsigned char NA_Cnt;
//unsigned int TxFreq;
//unsigned char SynthBuf[3];
void InitLMX2326(void)
{
 //SynthBuf[0] = 0;
  SynthBuf[1] = 0;
  SynthBuf[2] = 0xB2;
} 
void SetLMX2326Ref(void)
{
   // SynthBuf[0] = 0;
    SynthBuf[1] = 0x00;
    SynthBuf[2] = 0xC8;
}
void SetLMX2326Freq(unsigned int hzFreq)
{
  
 /*  NB_Cnt = (unsigned int)(hzFreq / 32); 
   NA_Cnt = (unsigned char)(hzFreq % 32);
   SynthBuf[0] = (unsigned char)((NB_Cnt >> 9) & 0x0F) + 0x10;//Go bit
   SynthBuf[1] = (unsigned char)((NB_Cnt >> 1) & 0xFF);
   SynthBuf[2] = (unsigned char)((NB_Cnt <<7 ) & 0x80) + 
                         ((NA_Cnt << 2) & 0xFC) + 1;*/
  if((P1IN & 0x1F))// d
  {
    if((P1IN & 0xF7))//from controller
    {
     // SynthBuf[0] = 0;
      SynthBuf[1] = 0x4E;
      SynthBuf[2] = 0xBA;
    }
    else
    {
       SynthBuf[0] = 0;
      SynthBuf[1] = 0x4F;
     SynthBuf[2] = 0xCA; 
    }  
  }
else//uplink
  {
    if((P1IN & 0xF7))//from controller
    {
      // SynthBuf[0] = 0;
     SynthBuf[1] = 0x46;
    SynthBuf[2] = 0x22;
    }
    else
    {
        // SynthBuf[0] = 0;
       SynthBuf[1] = 0x47;
      SynthBuf[2] = 0x30;
    } 
  }
}
void ChkSpacing(void)
{ 
     TxFreq = 20154;
     TxFreq = TxFreq / 2;//since 200 KHz
}

void main(void)
{ 
  unsigned char num,tmp,x,b;
 // unsigned long TxFreq;
 /* buf[0] = 0x26;
  buf[1] = 0x15;
  buf[2] = 0x78;*/
  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
  P1DIR |= 0x07;                        // Set three pins to output direction
  SynthBuf[0] = 0;
  for(b=0;b<3;b++)
  {
    switch(b)
    {
    case 0: SetLMX2326Ref();
     break;
    case 1: SetLMX2326Freq(TxFreq);
            ChkSpacing();
     break;
    case 2: InitLMX2326();
     break;
    default: break;
    }
  x = 0;
  while(x != 3)
  {
    tmp = SynthBuf[x];
          P1OUT |= 0x04;//CS pin
  for (num=0;num<8;num++)                              
  {
    P1OUT &= ~0x04;//CS pin,toggle to "0"
    unsigned int i;
    P1OUT &= ~0x01;                      // toggling CLK
    if((tmp & 0x80) == 0x80)      
       P1OUT |= 0x02;
     else
        P1OUT &= 0xFD; 
     i = 5;                          // Delay approx. ~1msec
    do (i--);
    while (i != 0);
      
    P1OUT ^= 0x01;//toggling CLK
    tmp = tmp << 1;
    i = 5;                          // Delay approx. ~1msec
    do (i--);
    while (i != 0);
  }
      P1OUT |= 0x04;//CS pin
      P1OUT &= ~0x03;
      x++;
  }
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -