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

📄 main.lst

📁 A7125无线模块
💻 LST
📖 第 1 页 / 共 2 页
字号:
 266   1      
 267   1          _nop_();
 268   1          SDIO = 1;
 269   1      
 270   1          //read data
 271   1          for(i = 0; i < 8; i++)
 272   1          {
 273   2              if(SDIO)
 274   2                  tmp = (tmp << 1) | 0x01;
 275   2              else
 276   2                  tmp = tmp << 1;
 277   2      
 278   2              SCK = 1;
 279   2              _nop_();
 280   2              SCK = 0;
 281   2          }
 282   1          SCS = 1;
 283   1          return tmp;
 284   1      }
 285          
 286          
 287          /*********************************************************************
 288          ** Strobe Command
 289          *********************************************************************/
 290          void StrobeCmd(Uint8 src)
 291          {
 292   1          Uint8 i;
 293   1      
 294   1          SCS = 0;
 295   1          for(i = 0; i < 8; i++)
 296   1          {
 297   2              if(src & 0x80)
 298   2                  SDIO = 1;
 299   2              else
 300   2                  SDIO = 0;
 301   2      
 302   2              _nop_();
 303   2              SCK = 1;
C51 COMPILER V9.01   MAIN                                                                  01/07/2011 01:47:00 PAGE 6   

 304   2              _nop_();
 305   2              SCK = 0;
 306   2              src = src << 1;
 307   2          }
 308   1          SCS = 1;
 309   1      }
 310          
 311          /************************************************************************
 312          **  ByteSend
 313          ************************************************************************/
 314          void ByteSend(Uint8 src)
 315          {
 316   1          Uint8 i;
 317   1      
 318   1          for(i = 0; i < 8; i++)
 319   1          {
 320   2              if(src & 0x80)
 321   2                  SDIO = 1;
 322   2              else
 323   2                  SDIO = 0;
 324   2      
 325   2              _nop_();
 326   2              SCK = 1;
 327   2              _nop_();
 328   2              SCK = 0;
 329   2              src = src << 1;
 330   2          }
 331   1      }
 332          
 333          /************************************************************************
 334          **  WriteID
 335          ************************************************************************/
 336          void A7125_WriteID(void)
 337          {
 338   1          Uint8 i;
 339   1          Uint8 addr;
 340   1      
 341   1          addr = IDCODE_REG; //send address 0x06, bit cmd=0, r/w=0
 342   1          SCS = 0;
 343   1          ByteSend(addr);
 344   1          for (i=0; i < 4; i++)
 345   1              ByteSend(ID_Tab[i]);
 346   1          SCS = 1;
 347   1      }
 348          
 349          /************************************************************************
 350          **  Reset_RF
 351          ************************************************************************/
 352          void A7125_Reset(void)
 353          {
 354   1          A7125_WriteReg(MODE_REG, 0x00); //reset RF chip
 355   1      }
 356          /*********************************************************************
 357          ** CHGroupCal
 358          *********************************************************************/
 359          void CHGroupCal(Uint8 ch)
 360          {
 361   1          Uint8 tmp;
 362   1          Uint8 vb,vbcf;
 363   1          Uint8 vcb,vccf;
 364   1      
 365   1          A7125_WriteReg(PLL1_REG, ch);
C51 COMPILER V9.01   MAIN                                                                  01/07/2011 01:47:00 PAGE 7   

 366   1          A7125_WriteReg(CALIBRATION_REG, 0x1C);
 367   1          do
 368   1          {
 369   2              tmp = A7125_ReadReg(CALIBRATION_REG);
 370   2              tmp &= 0x1C;
 371   2          }
 372   1          while (tmp);
 373   1      
 374   1          //for check
 375   1          tmp = A7125_ReadReg(VCOCAL1_REG);
 376   1          vb = tmp & 0x07;
 377   1          vbcf = (tmp >>3) & 0x01;
 378   1      
 379   1          tmp = A7125_ReadReg(VCOCCAL_REG);
 380   1          vcb = tmp & 0x0F;
 381   1          vccf= (tmp >> 4) & 0x01;
 382   1      
 383   1          if (vbcf || vccf)
 384   1             Err_State();//error
 385   1      }
 386          
 387          /*********************************************************************
 388          ** calibration
 389          *********************************************************************/
 390          void A7125_Cal(void)
 391          {
 392   1          Uint8 tmp;
 393   1          Uint8 fb,fbcf,fcd;
 394   1          Uint8 dvt;
 395   1      
 396   1          //calibration RSSI,IF procedure
 397   1          StrobeCmd(CMD_PLL);
 398   1          A7125_WriteReg(CALIBRATION_REG, 0x03);
 399   1          do
 400   1          {
 401   2              tmp = A7125_ReadReg(CALIBRATION_REG);
 402   2              tmp &= 0x03;
 403   2          }
 404   1          while (tmp);
 405   1      
 406   1          //calibration VCO dev,VBC,VCC procedure
 407   1      
 408   1          CHGroupCal(30);     //calibrate channel group Bank I
 409   1          CHGroupCal(90);     //calibrate channel group Bank II
 410   1          CHGroupCal(150);    //calibrate channel group Bank III
 411   1          StrobeCmd(CMD_STBY); //return to STBY state
 412   1      
 413   1          //for check
 414   1          tmp = A7125_ReadReg(IFCAL1_REG);
 415   1          fb = tmp & 0x0F;
 416   1          fbcf = (tmp >>4) & 0x01;
 417   1      
 418   1          tmp = A7125_ReadReg(IFCAL2_REG);
 419   1          fcd = tmp & 0x1F;
 420   1      
 421   1          tmp = A7125_ReadReg(VCOCAL2_REG);
 422   1          dvt = tmp;
 423   1      
 424   1          if (fbcf)
 425   1              Err_State(); //error
 426   1      }
 427          
C51 COMPILER V9.01   MAIN                                                                  01/07/2011 01:47:00 PAGE 8   

 428          /*********************************************************************
 429          ** A7125_Config
 430          *********************************************************************/
 431          void A7125_Config(void)
 432          {
 433   1          Uint8 i;
 434   1      
 435   1          //0x00 mode register, for reset
 436   1          //0x05 fifo data register
 437   1          //0x06 id code register
 438   1          //0x24 IF calibration II, only read
 439   1      
 440   1          for ( i=0x01; i<=0x38; i++ )
 441   1          {
 442   2              if ( (i==0x05) || (i==0x06) || (i==0x24) )
 443   2                  continue;
 444   2      
 445   2              A7125_WriteReg( i, A7125Config[i] );
 446   2          }
 447   1      }
 448          
 449          /*********************************************************************
 450          ** initRF
 451          *********************************************************************/
 452          void initRF(void)
 453          {
 454   1          //init io pin
 455   1          SCS = 1;
 456   1          SCK = 0;
 457   1          SDIO = 1;
 458   1          GIO1 = 1;
 459   1          GIO2 = 1;
 460   1      
 461   1          A7125_Reset();      //reset A7125 RF chip
 462   1          A7125_WriteID();    //write ID code
 463   1          A7125_Config();     //config A7125 chip
 464   1          A7125_Cal();        //calibration IF,vco, vcoc
 465   1      }
 466          
 467          //**********************************************************************
 468          //  ByteRead
 469          //**********************************************************************
 470          Uint8 ByteRead(void)
 471          {
 472   1          Uint8 i,tmp;
 473   1      
 474   1          SDIO = 1; //sdio pull high
 475   1          for(i = 0; i < 8; i++)
 476   1          {
 477   2              if(SDIO)
 478   2                  tmp = (tmp << 1) | 0x01;
 479   2              else
 480   2                  tmp = tmp << 1;
 481   2              SCK = 1;
 482   2              _nop_();
 483   2              SCK = 0;
 484   2          }
 485   1          return tmp;
 486   1      }
 487          
 488          //**********************************************************************
 489          //  ReadFIFO
C51 COMPILER V9.01   MAIN                                                                  01/07/2011 01:47:00 PAGE 9   

 490          //**********************************************************************
 491          void ReadFIFO(Uint8 length)
 492          {
 493   1          Uint8 i;
 494   1      
 495   1          SCS = 0;
 496   1          ByteSend(FIFO_REG | 0x40);
 497   1          for(i = 0; i <length; i++)
 498   1              RfBuf[i] = ByteRead();
 499   1          SCS=1;
 500   1      }
 501          
 502          //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
 503          //                      DELAY 1MS FUNCTION                          //
 504          //           USER NEED CHANGE THIS FUNCTION TO FIT SYSTEM.          //
 505          //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
 506          void Delay1ms(Uint8 n)
 507          {
 508   1          Uint8 i, j;
 509   1          while(n--)
 510   1          {
 511   2              for(j = 0; j < 6; j ++)
 512   2              {
 513   3                  for(i = 0; i < 235; i ++)
 514   3                  {
 515   4                      _nop_();
 516   4                      _nop_();
 517   4                      _nop_();
 518   4                      _nop_();
 519   4                  }
 520   3              }
 521   2          }
 522   1      }
 523          
 524          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    617    ----
   CONSTANT SIZE    =    182    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
   IDATA SIZE       =     65    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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