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

📄 rw910.c

📁 avr mega128的源代码串口
💻 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 + -