📄 rw910.c
字号:
#include "rw910.h"
#include "global.h"
#include "crc.h"
/*
pc0------CNT_SWTCH--out
pc2------TXOUT------out
pc5------SCK--------out
pc6------SDA--------out
pc7-----SLA---------out
pd7-----DIN---------in
*/
void rw910InterfaceConfigInit()
{
DDRC = 0xff; //config portc as outport
PORTC = 0xff; // init for '1',cnt_switch,txout,clk,data,en
DDRD = 0x80;
PORTD = 0x00; //init for '0',rfin
}
void configRw910ControlRigister(unsigned char opcode,unsigned int data)
{
unsigned long set;
unsigned char i;
set = ((unsigned long)data)<<4 | opcode;
SLA(0);SLA(0);SLA(0);SLA(0);
for(i=0;i<20;i++)
{
SCK(0);SCK(0);SCK(0);SCK(0);SCK(0);SCK(0);SCK(0);
if(set&0x80000){SDA(1);}
else {SDA(0);}
SCK(1);SCK(1);SCK(1);SCK(1);SCK(1);SCK(1);SCK(1);
set = set<<1;
}
SLA(1);SLA(1);SLA(1);SLA(1);SLA(1);SLA(1);SLA(1);
SLA(0);SLA(0);SLA(0);SLA(0);SLA(0);SLA(0);SLA(0);
SLA(1);SLA(1);SLA(1);SLA(1);SLA(1);SLA(1);SLA(1);
}
void setCarrierWave(unsigned int p1,unsigned int s1,unsigned int p2,unsigned int s2)
{
powerUpDelay(10000);
configRw910ControlRigister(SYNTH_REG,0x7f);//set synthesizer status
powerUpDelay(10000);
configRw910ControlRigister(VCO_SELCT_REG,0x01);//set vco band
powerUpDelay(10000);
configRw910ControlRigister(INT_N1_REG,s1|(p1<<6));//set synthesizer n1
powerUpDelay(10000);
configRw910ControlRigister(INT_N2_REG,s2|(p2<<6));//set synthesizer n2
powerUpDelay(10000);
configRw910ControlRigister(TXRX_MOD_REG,0x00);//930Mhz
powerUpDelay(10000);
}
/*
Tari = 12.5us
data-1 = 2.0*Tari = 25us
PW = 0.5Tari = 6.25us ,
6.1875us<6.25<6.3125------powerUpDelay(12)+TXOUT(0);
18.5625<18.75<18.9375-----powerUpDelay(45);
delimiter 11.875us<delimiter<13.125us
RTcal = 3.0Tari=37.5=31.25+6.25
TRcal = 6.0Tari=75=68.75+6.25
*/
void txoutDataCode(unsigned char flag )
{
if(flag) //1
{
TXOUT(1);
powerUpDelay(45);TXOUT(0);TXOUT(0);//delay 18.75us,time compensation
TXOUT(0);
powerUpDelay(12);TXOUT(0);//delay 6.25us,time compensation
TXOUT(1); //restore bus
}
else //0
{
TXOUT(1);
powerUpDelay(12);TXOUT(1) //6.25us
TXOUT(0);
powerUpDelay(12);TXOUT(0);//delay 6.25us,time compensation
TXOUT(1); //restore bus
}
}
void r_tPreamble(void)
{
TXOUT(1);
TXOUT(0);powerUpDelay(30); //delimiter,12.5us
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TXOUT(1);
powerUpDelay(12);TXOUT(1);
TXOUT(0);powerUpDelay(12);TXOUT(0);//data-0,12.5us
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TXOUT(1);
powerUpDelay(79);
TXOUT(0);
powerUpDelay(12);TXOUT(0);//RTcal,37.5us
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TXOUT(1);
powerUpDelay(179);
TXOUT(0);
powerUpDelay(12);TXOUT(0);//TRcal,75us
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TXOUT(1);//restore bus
}
void r_tFrameSync(void)
{
TXOUT(1);
TXOUT(0);powerUpDelay(30); //delimiter,12.5us
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TXOUT(1);
powerUpDelay(12);TXOUT(1);
TXOUT(0);powerUpDelay(12);TXOUT(0);//data-0,12.5us
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TXOUT(1);
powerUpDelay(79);
TXOUT(0);
powerUpDelay(12);TXOUT(0);//RTcal,37.5us
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TXOUT(1); //restore bus
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -