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

📄 cc1100_tx.lst

📁 CC1100射频电路的线路板和已经调通的源码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 282   1              {
 283   2                      if(dat & 0x80)
 284   2                        {
 285   3                              MOSI = 1;
 286   3                        }
 287   2                      else MOSI = 0;
 288   2                              
 289   2                      dat <<= 1;
 290   2      
 291   2                      SCK = 1; 
 292   2                      _nop_();
 293   2                      _nop_();
 294   2              _nop_();
 295   2                      _nop_();
 296   2                      temp <<= 1;
 297   2                      if(MISO)temp++; 
 298   2                      SCK = 0;
 299   2                      _nop_();
 300   2                      _nop_();
 301   2                      _nop_();
 302   2                      _nop_();                                        
C51 COMPILER V8.02   CC1100_TX                                                             11/15/2007 11:51:04 PAGE 6   

 303   2              }
 304   1              return temp;
 305   1      }
 306          
 307          
 308          
 309          
 310          
 311          
 312          //*****************************************************************************************
 313          //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
 314          //输入:地址和配置字
 315          //输出:无
 316          //功能描述:SPI写寄存器
 317          //*****************************************************************************************
 318          void halSpiWriteReg(INT8U addr, INT8U value) 
 319          {
 320   1          CS_CC1100 = 0;
 321   1          while (GDO0);
 322   1          SpiReadWrite(addr);              //写地址
 323   1          SpiReadWrite(value);                //写入配置
 324   1          CS_CC1100 = 1;
 325   1      }
 326          
 327          
 328          
 329          //*****************************************************************************************
 330          //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
 331          //输入:地址,写入缓冲区,写入个数
 332          //输出:无
 333          //功能描述:SPI连续写配置寄存器
 334          //*****************************************************************************************
 335          void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count) 
 336          {
 337   1          INT8U i, temp;
 338   1              temp = addr | WRITE_BURST;
 339   1              EA = 0;
 340   1          CS_CC1100 = 0;
 341   1          while (GDO0);
 342   1          SpiReadWrite(temp);
 343   1          for (i = 0; i < count; i++)
 344   1              {
 345   2              SpiReadWrite(buffer[i]);
 346   2          }
 347   1          EA = 1;
 348   1              CS_CC1100 = 1;
 349   1      }
 350          
 351          
 352          //*****************************************************************************************
 353          //函数名:void halSpiStrobe(INT8U strobe)
 354          //输入:命令
 355          //输出:无
 356          //功能描述:SPI写命令
 357          //*****************************************************************************************
 358          void halSpiStrobe(INT8U strobe) 
 359          {
 360   1          CS_CC1100 = 0;
 361   1          while (GDO0);
 362   1          SpiReadWrite(strobe);               //写入命令
 363   1          CS_CC1100 = 1;
 364   1      }
C51 COMPILER V8.02   CC1100_TX                                                             11/15/2007 11:51:04 PAGE 7   

 365          
 366          //*****************************************************************************************
 367          //函数名:INT8U halSpiReadReg(INT8U addr)
 368          //输入:地址
 369          //输出:该寄存器的配置字
 370          //功能描述:SPI读寄存器
 371          //*****************************************************************************************
 372          INT8U halSpiReadReg(INT8U addr) 
 373          {
 374   1              INT8U temp, value;
 375   1          temp = addr|READ_SINGLE;//读寄存器命令
 376   1              CS_CC1100 = 0;
 377   1              while (GDO0);
 378   1              SpiReadWrite(temp);
 379   1              value = SpiReadWrite(0);
 380   1              CS_CC1100 = 1;
 381   1              return value;
 382   1      }
 383          
 384          //*****************************************************************************************
 385          //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
 386          //输入:地址,读出数据后暂存的缓冲区,读出配置个数
 387          //输出:无
 388          //功能描述:SPI连续写配置寄存器
 389          //*****************************************************************************************
 390          void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count) 
 391          {
 392   1          INT8U i,temp;
 393   1              temp = addr | READ_BURST;               //写入要读的配置寄存器地址和读命令
 394   1          CS_CC1100 = 0;
 395   1          while (GDO0);
 396   1              SpiReadWrite(temp);   
 397   1          for (i = 0; i < count; i++) 
 398   1              {
 399   2              buffer[i] = SpiReadWrite(0);
 400   2          }
 401   1          CS_CC1100 = 1;
 402   1      }
 403          
 404          //*****************************************************************************************
 405          //函数名:INT8U halSpiReadStatus(INT8U addr)
 406          //输入:地址
 407          //输出:该状态寄存器当前值
 408          //功能描述:SPI读状态寄存器
 409          //*****************************************************************************************
 410          INT8U halSpiReadStatus(INT8U addr) 
 411          {
 412   1          INT8U value,temp;
 413   1              temp = addr | READ_BURST;               //写入要读的状态寄存器的地址同时写入读命令
 414   1          CS_CC1100 = 0;
 415   1          while (GDO0);
 416   1          SpiReadWrite(temp);
 417   1              value = SpiReadWrite(0);
 418   1              CS_CC1100 = 1;
 419   1              return value;
 420   1      }
 421          
 422          
 423          
 424          //*****************************************************************************************
 425          //
 426          //
C51 COMPILER V8.02   CC1100_TX                                                             11/15/2007 11:51:04 PAGE 8   

 427          void halWait(INT16U timeout) 
 428          {
 429   1          do {
 430   2              _nop_();
 431   2                      _nop_();
 432   2                      _nop_();
 433   2                      _nop_();
 434   2                      _nop_();
 435   2                      _nop_();
 436   2                      _nop_();
 437   2                      _nop_();
 438   2                      _nop_();
 439   2                      _nop_();
 440   2                      _nop_();
 441   2                      _nop_();
 442   2                      _nop_();
 443   2                      _nop_();
 444   2                      _nop_(); 
 445   2          } while (--timeout);
 446   1      }
 447          
 448          //*****************************************************************************************
 449          //函数名:void RESET_CC1100(void)
 450          //输入:无
 451          //输出:无
 452          //功能描述:复位CC1100
 453          //*****************************************************************************************
 454          void RESET_CC1100(void) 
 455          {
 456   1              CS_CC1100= 0; 
 457   1              while (GDO0); 
 458   1              SpiReadWrite(CCxxx0_SRES);              //写入复位命令
 459   1              while (GDO0); 
 460   1              CS_CC1100 = 1;
 461   1               
 462   1      }
 463          
 464          
 465          
 466          //*****************************************************************************************
 467          //函数名:void POWER_UP_RESET_CC1100(void) 
 468          //输入:无
 469          //输出:无
 470          //功能描述:上电复位CC1100
 471          //*****************************************************************************************
 472          void POWER_UP_RESET_CC1100(void) 
 473          {
 474   1              CS_CC1100 = 1; 
 475   1              halWait(1); 
 476   1              CS_CC1100 = 0; 
 477   1              halWait(1); 
 478   1              CS_CC1100 = 1; 
 479   1              halWait(41); 
 480   1              RESET_CC1100();                 //复位CC1100
 481   1      }
 482          
 483          
 484          //*****************************************************************************************
 485          //函数名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)
 486          //输入:无
 487          //输出:无
 488          //功能描述:配置CC1100的寄存器
C51 COMPILER V8.02   CC1100_TX                                                             11/15/2007 11:51:04 PAGE 9   

 489          //*****************************************************************************************
 490          void halRfWriteRfSettings(void) 
 491          {
 492   1              halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL2);//自已加的
 493   1          // Write register settings
 494   1          halSpiWriteReg(CCxxx0_FSCTRL1,  rfSettings.FSCTRL1);
 495   1          halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL0);
 496   1          halSpiWriteReg(CCxxx0_FREQ2,    rfSettings.FREQ2);
 497   1          halSpiWriteReg(CCxxx0_FREQ1,    rfSettings.FREQ1);
 498   1          halSpiWriteReg(CCxxx0_FREQ0,    rfSettings.FREQ0);
 499   1          halSpiWriteReg(CCxxx0_MDMCFG4,  rfSettings.MDMCFG4);
 500   1          halSpiWriteReg(CCxxx0_MDMCFG3,  rfSettings.MDMCFG3);
 501   1          halSpiWriteReg(CCxxx0_MDMCFG2,  rfSettings.MDMCFG2);
 502   1          halSpiWriteReg(CCxxx0_MDMCFG1,  rfSettings.MDMCFG1);
 503   1          halSpiWriteReg(CCxxx0_MDMCFG0,  rfSettings.MDMCFG0);
 504   1          halSpiWriteReg(CCxxx0_CHANNR,   rfSettings.CHANNR);
 505   1          halSpiWriteReg(CCxxx0_DEVIATN,  rfSettings.DEVIATN);
 506   1          halSpiWriteReg(CCxxx0_FREND1,   rfSettings.FREND1);
 507   1          halSpiWriteReg(CCxxx0_FREND0,   rfSettings.FREND0);
 508   1          halSpiWriteReg(CCxxx0_MCSM0 ,   rfSettings.MCSM0 );
 509   1          halSpiWriteReg(CCxxx0_FOCCFG,   rfSettings.FOCCFG);
 510   1          halSpiWriteReg(CCxxx0_BSCFG,    rfSettings.BSCFG);
 511   1          halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);
 512   1              halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);
 513   1          halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);
 514   1          halSpiWriteReg(CCxxx0_FSCAL3,   rfSettings.FSCAL3);
 515   1              halSpiWriteReg(CCxxx0_FSCAL2,   rfSettings.FSCAL2);
 516   1              halSpiWriteReg(CCxxx0_FSCAL1,   rfSettings.FSCAL1);
 517   1          halSpiWriteReg(CCxxx0_FSCAL0,   rfSettings.FSCAL0);
 518   1          halSpiWriteReg(CCxxx0_FSTEST,   rfSettings.FSTEST);
 519   1          halSpiWriteReg(CCxxx0_TEST2,    rfSettings.TEST2);
 520   1          halSpiWriteReg(CCxxx0_TEST1,    rfSettings.TEST1);
 521   1          halSpiWriteReg(CCxxx0_TEST0,    rfSettings.TEST0);
 522   1          halSpiWriteReg(CCxxx0_IOCFG2,   rfSettings.IOCFG2);
 523   1          halSpiWriteReg(CCxxx0_IOCFG0,   rfSettings.IOCFG0);    
 524   1          halSpiWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1);
 525   1          halSpiWriteReg(CCxxx0_PKTCTRL0, rfSettings.PKTCTRL0);
 526   1          halSpiWriteReg(CCxxx0_ADDR,     rfSettings.ADDR);
 527   1          halSpiWriteReg(CCxxx0_PKTLEN,   rfSettings.PKTLEN);
 528   1      }
 529          
 530          
 531          
 532          //*****************************************************************************************
 533          //函数名:void Init_CC1100(void)
 534          //输入:无
 535          //输出:无
 536          //功能描述:chushihua CC1100
 537          //*****************************************************************************************
 538          void Init_CC1100(void) 
 539          {
 540   1      
 541   1          POWER_UP_RESET_CC1100();
 542   1              halRfWriteRfSettings();
 543   1              halSpiWriteBurstReg(CCxxx0_PATABLE, PaTabel, 8);
 544   1      }
 545          
 546          
 547          
 548          //*****************************************************************************************
 549          //函数名:void halRfSendPacket(INT8U *txBuffer, INT8U size)
 550          //输入:发送的缓冲区,发送数据个数
C51 COMPILER V8.02   CC1100_TX                                                             11/15/2007 11:51:04 PAGE 10  

 551          //输出:无
 552          //功能描述:CC1100发送一组数据
 553          //*****************************************************************************************
 554          void halRfSendPacket(INT8U *txBuffer, INT8U size) 
 555          {
 556   1              halSpiWriteReg(CCxxx0_TXFIFO, size);
 557   1          halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size); //写入要发送的数据
 558   1      
 559   1          halSpiStrobe(CCxxx0_STX);           //进入发送模式发送数据
 560   1      
 561   1          // Wait for GDO2 to be set -> sync transmitted
 562   1          while (!GDO2);
 563   1      
 564   1          // Wait for GDO2 to be cleared -> end of packet
 565   1          while (GDO2);
 566   1              halSpiStrobe(CCxxx0_SFTX);
 567   1      }
 568          
 569          //*****************************************************************************************
 570          //函数名

⌨️ 快捷键说明

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