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

📄 rf.lst

📁 单片机与a7105组成无线收发程序2.4G多通道
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   RF                                                                    10/29/2008 11:22:42 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE RF
OBJECT MODULE PLACED IN rf.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\rf.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND PRINT(.\rf.lst) OBJECT(r
                    -f.obj)

stmt level    source

   1          /************************************************************************************
   2          ;copyright              :shenzhen coolwaveasia 
   3          ;filename               :rf.c
   4          ;RF                             :A7105
   5          ;rf crystal             :16MHZ
   6          ;RF rate                :250k
   7          ;control mcu    :W78E52B        
   8          ;writeby                :dengyihong
   9          ;describe               :A7105 控制
  10          ;notice                 :Fdev 固定为 80k
  11          ;***********************************************************************
  12          ;                            --------------------
  13          ;                     P1.0  |1                 40|  VCC
  14          ;                     P1.1  |2                 39|  P0.0     ----  LCD_DATA0
  15          ;   RF_SCK  ----      P1.2  |3                 38|  P0.1     ----  LCD_DATA1
  16          ;   RF_SDIO ----      P1.3  |4                 37|  P0.2     ----  LCD_DATA2
  17          ;                     P1.4  |5                 36|  P0.3     ----  LCD_DATA3
  18          ;   RF_SCS  ----      P1.5  |6                 35|  P0.4     ----  LCD_DATA4
  19          ;                     P1.6  |7                 34|  P0.5     ----  LCD_DATA5
  20          ;                     P1.7  |8                 33|  P0.6     ----  LCD_DATA6
  21          ;                  RST/Vpd  |9                 32|  P0.7     ----  LCD_DATA7
  22          ;                 RXD/P3.0  |10                31|  /EA/Vpp
  23          ;                 TXD/P3.1  |11                30|  ALE/PROG
  24          ;  RF_GPIO2 --- /INT0/P3.2  |12                29|  /PSEN
  25          ;  RF_GPIO1 --- /INT1/P3.3  |13                28|  P2.7     ----  KEY4
  26          ;                  T0/P3.4  |14                27|  P2.6     ----  KEY3
  27          ;  RX\TX   ---     T1/P3.5  |15                26|  P2.5     ----  KEY2
  28          ;                 /WR/P3.6  |16                25|  P2.4     ----  KEY1
  29          ;                 /RD/P3.7  |17                24|  P2.3
  30          ;                    XTAL2  |18                23|  P2.2     ----  LCD_RW
  31          ;                    XTAL1  |19                22|  P2.1     ----  LCD_RS
  32          ;                      VSS  |20                21|  P2.0     ----  LCD_EN
  33          ;                            --------------------
  34          ;                                W78E52B(PDIP)
  35          ;***********************************************************************/
  36          
  37          #include "..\header\rf.h"
  38          
  39          U8 const code Rf_Rate_Tab[7] = {19,9,7,4,3,1,0};
  40                                                                          //25k,50k,62.5k,100k,125k,250k,500k 
  41          
  42          
  43          // A7105 寄存器默认配置
  44          U8 const code A7105_Default_Par[51] = 
  45          {
  46              //0x00 register
  47              0x00,                 // RESET register : not use on config 
  48            
  49              //0x01 register
  50                  //#if(TEST_MODE)
  51                  //      0xc2,                             // direct mode 
  52                  //#else
  53                      0x42,                 // MODE register: FIFO mode 
  54                  //#endif
C51 COMPILER V7.06   RF                                                                    10/29/2008 11:22:42 PAGE 2   

  55                  
  56              //0x02 register
  57              0x00,                 // CALIBRATION register
  58            
  59              //0x03 register
  60              RF_FIFO_LEN - 1,      // FIFO1 register : packet length
  61                  
  62              //0x04 register
  63              0xc0,                 // FIFO2 register : FIFO pointer margin threshold 16/48bytes(TX/RX)
  64                  
  65              //0x05 register
  66              0x00,                 // fifo register,not use on config
  67            
  68              //0x06 register
  69              0x00,                 // ID data register,not use on config
  70          
  71              //0x07 register
  72              0x00,                 // RCOSC1 register 
  73              0x00,                 // RCOSC2 register 
  74              0x00,                 // RCOSC3 register 
  75          
  76              //0x0a register
  77          //  0x02,                 // CKO register,clk out enable,bit clock
  78              0x00,                 // CKO disable
  79          
  80              //0x0b register
  81              0x01,                 // GPIO1 register :WTR output,enable GPIO1 output 
  82              0x09,                 // GPIO2 register :CD carrier detect,enable GPIO2 output 
  83                                    // GPIO1,2按上面设置时,在接收状态下GPIO2保持为低电平,GPIO1保持为高电平,
  84                                    // 发送方发送一帧数据时,GPIO2会产生一个正脉冲,接收方GPIO2也会产生一个正脉冲
  85                                    // 发送方发送一帧数据时,GPIO1会产生一个负脉冲,接收方GPIO2也会产生一个负脉冲
  86              //0x0d register
  87              0x05,                 // CLOCK register: Crystal oscillator enable bit
  88              
  89              //0x0e register
  90              0x01,                 // data rate select 250K    
  91                                    // data rate = system clock / 32*(SDR[7:0] + 1
  92          //  0x04,                 // data rate = 100k
  93          
  94              //0x0f register
  95              0x14,                 // PLL register1, LO channel number select   
  96                                    // channel = 0x14  RF frequency = 2400MHZ + 500K * 20 = 2.410GHZ
  97                                     
  98              //0x10 register
  99              0x9e,                 // PLL register2, 
 100                                    // DBL = 1, crystal frequency double select
 101                                    // RRC[1:0] = 00, Fpfd = Fcrystal(16MHZ) * (1 + DBL) /(RRC[1:0] + 1) = 32MHZ 
 102                                    // CHR[3:0] = 0x0F, channel frequency step setting
 103                                    // channel setp frequency = 0.25 * Fpfd / (CHR[3:0] + 1) = 500KHZ
 104          
 105              //0x11 register
 106              0x4b,                 // PLL register3 BIP[7:0] = 75
 107              0x00,                 // PLL register4 BFP[15:8] = 0
 108              0x00,                 // PLL register5 BFP[7:0] = 0  
 109              
 110              //0x14 register
 111              //  0x06,                           // TX register1
 112                                                                  // frequency deviation power setting = [110]
 113                                                                  // TX modulation disable
 114                  0x16,                                   // enable tx modulation                                   
 115                                                     
 116              //0x15 register
C51 COMPILER V7.06   RF                                                                    10/29/2008 11:22:42 PAGE 3   

 117          //  0x2b,                 // Fdev = 187k   // TX register2
 118                                    // Fpfd = 32MHZ,PDV[1:0] = 01,SDR[7:0] = 0000 0001                      
 119                                    // Tx rate = Fpfd / (32 * (PDV[1:0]+1) * (SDR[7:0]+1)) = 250kbps
 120                                    // TX frequency deviation = Fpfd * 127 * 2^FDP[2:0] * (FD[4:0]+1) /2^24 = 187.5K
             -HZ
 121          
 122          //  0x20,                 // Fdev = 15K @FD[2:0] = [110]
 123          //  0x21,                 // Fdev = 31k @FD[2:0] = [110]        
 124          //  0x22,                 // Fdev = 46k @FD[2:0] = [110]
 125                  0x23,                 // Fdev = 62k @FD[2:0] = [110]                                      
 126          //      0x24,                 // Fdev = 80k @FD[2:0] = [110]
 127          //  0x25,                 // Fdev = 93k @FD[2:0] = [110]
 128          //  0x26,                 // Fdev = 108k @FD[2:0] = [110]
 129          //  0x27,                 // Fdev = 124k @FD[2:0] = [110]
 130          //  0x28,                 // Fdev = 139k @FD[2:0] = [110]
 131          //      0x29,                 // Fdev = 155k @FD[2:0] = [110]
 132          //      0x2a,                 // Fdev = 170k @FD[2:0] = [110]
 133          //      0x2b,                             // Fdev = 186k @FD[2:0] = [110]
 134          //  0x2c,                 // Fdev = 200k @FD[2:0] = [110]
 135          //  0x2d,                                 // Fdev = 217k @FD[2:0] = [110]
 136          //      0x2e,                             // Fdev = 232k @FD[2:0] = [110]
 137          //      0x2f,                             // Fdev = 248k @FD[2:0] = [110]
 138          //      0x30,                             // Fdev = 263k @FD[2:0] = [110]
 139          //      0x32,                             // Fdev = 294k @FD[2:0] = [110]
 140          //  0x39,                 // Fdev = 400k @FD[2:0] = [110]                     
 141                                          
 142              //0x16 register                              
 143              0x12,                 // Delay register1
 144                                    // DPR[2:0] = 0, TDL[1:0] = 2, PDL[2:0] = 2
 145                                    // TX setting delay = 20*(TDL[1:0]+1)*(DPR[2:0]+1) = 20*3 = 60us
 146                                    // PLL setting delay = 20*(PDL[2:0]+1)*(DPR[2:0]+1) = 20*3 = 60us     
 147                                                                                      
 148              //0x17 register
 149              0xf8,                 // Delay register2
 150                                    // Crystal turn on delay 2.5ms
 151                                    // AGC delay 40us
 152                                    // RSSI measurement delay 10us
 153                                    
 154              //0x18 register
 155              0x26,                 // RX register
 156                                    // Demodulator filter bandwidth = 1M
 157                                    // Demodulator gain select * 3
 158                                    // BPF bandwidth 500khz
 159                                    // Up side band select
 160          //  0x36,                 // AFC = 1,frequency compensation select (auto)                                 
 161                                                            
 162              //0x19 register                     
 163              0x80,                 // RX gain register1, 手动校验VGA, PGA gain 12db,mixer gain 24db, LNA gain 24db 
             -                                                 
 164          
 165              //0x1a register
 166              0x80,                 // RX gain register2, VGA calibrate upper limit target
 167              
 168              //0x1b register
 169              0x00,                 // RX gain register3, VGA calibrate lower limit target
 170          
 171              //0x1c register
 172              0x0e,                 // RX gain register4, VGC calibrate continues until ID code word is received
 173                                    // Mixer current select 1.2mA
 174                                    // LNA current select 2.0mA
 175              
 176              //0x1d register
C51 COMPILER V7.06   RF                                                                    10/29/2008 11:22:42 PAGE 4   

 177              0x32,                 // RSSI register RSSI 50
 178              
 179              //0x1e register
 180              0xc3,                 // ADC register 
 181              
 182              //0x1f register
 183          //  0x0f,                 // CODE register1, ID length 4 bytes, preamble length 4 bytes
 184          //  0x4f,                 // open manchester
 185              0x5f,                 // open manchester, FEC
 186              
 187              //0x20 register
 188              0x12,                 // CODE register2, 
 189              
 190              //0x21 register
 191              0x00,                 // CODE register3, 
 192              
 193              //0x22 register
 194              0x00,                 // IF calibration1, auto calibration IF
 195              
 196              //0x23 register
 197              0x00,                 // IF calibration2, read only
 198              
 199              //0x24 register               
 200              0x00,                 // VCO current calibration register    
 201          
 202              //0x25 register
 203              0x00,                 // VCO Single band calibration register1
 204                                    // auto calibration
 205                                    
 206              //0x26 register
 207              0x3a,                 // VCO Single band calibration register2  
 208                                    // REGA = 1.1V,VCO tuning voltage  =0.3V
 209                                    
 210              //0x27 register
 211              0x00,                 // battery register default
 212              
 213              //0x28 register
 214              0x17,                 // TX test register default
 215              
 216              //0x29 register
 217              0x47,                 // RX DEM test registe1 default
 218              
 219              //0x2a register
 220              0x80,                 // RX DEM test register2 defalut
 221                                   
 222              //0x2b register
 223              0x01,                 // charge pump current register 
 224                                    // charge pump curretn = 1.0mA
 225                                    
 226              //0x2c register
 227              0x05,                 // Crystal test register default
 228              
 229              //0x2d register
 230              0x45,                 // PLL TEST register default
 231              
 232              //0x2e register
 233              0x18,                 // VCO test register1 default
 234              
 235              //0x2f register
 236              0x00,                 // VCO test register2 default
 237              
 238              //0x30 register
C51 COMPILER V7.06   RF                                                                    10/29/2008 11:22:42 PAGE 5   

 239              0x01,                 // IFAT register default
 240              
 241              //0x31 register
 242              0x0f,                 // RScale register RSSI tuning scale default
 243              
 244              //0x32 register
 245              0x00                  // Filter test register default                                            
 246          };
 247          
 248          
 249          /****************************************************************
 250          name:           ini rf
 251          input:          none
 252          output:         none
 253          describe:       初始化A7105
 254          notice:
 255          creat date:     2008-7-20 
 256          creator:        dengyihong
 257          ****************************************************************/
 258          void ini_rf(void)
 259          {
 260   1          set_rf_io();
 261   1          A7105_reset_chip();        
 262   1          delay_2us(50000);    
 263   1          delay_2us(50000); 
 264   1              
 265   1          A7105_write_ID();
 266   1      
 267   1          A7105_config_chip();
 268   1      
 269   1          A7105_calibration();
 270   1      
 271   1              if(System_Mode)
 272   1              {
 273   2                  A7105_setup_channel(Rf_Rec_Channel);
 274   2                      A7105_setup_wpll();
 275   2                      A7105_entry_tx();
 276   2              }
 277   1              else
 278   1          {
 279   2                      A7105_setup_channel(Rf_Rec_Channel);
 280   2                      A7105_setup_wpll();
 281   2              delay_2us(100);
 282   2              A7105_entry_rx();                               // 接收状态     
 283   2              }

⌨️ 快捷键说明

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