📄 tmexicoiar.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 + -