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

📄 1100.lst

📁 无线模块cc1101学习资料
💻 LST
📖 第 1 页 / 共 3 页
字号:
 246          void halWait(INT16U timeout) {
 247   1          do {
 248   2              _nop_();
 249   2                      _nop_();
 250   2                      _nop_();
 251   2                      _nop_();
 252   2                      _nop_();
 253   2                      _nop_();
 254   2                      _nop_();
 255   2                      _nop_();
 256   2                      _nop_();
 257   2                      _nop_();
 258   2                      _nop_();
 259   2                      _nop_();
 260   2                      _nop_();
 261   2                      _nop_();
 262   2                      _nop_(); 
 263   2          } while (--timeout);
 264   1      }
 265          
 266          
 267          void SpiInit(void)
 268          {
 269   1              CSN=0;
 270   1              SCK=0;
 271   1              CSN=1;
 272   1      }
 273          
 274          /*****************************************************************************************
 275          //函数名:CpuInit()
 276          //输入:无
 277          //输出:无
 278          //功能描述:SPI初始化程序
 279          /*****************************************************************************************/
 280          void CpuInit(void)
 281          {
 282   1              SpiInit();
 283   1              delay(5000);
 284   1      }
 285                  
 286          
 287          //*****************************************************************************************
 288          //函数名:SpisendByte(INT8U dat)
 289          //输入:发送的数据
 290          //输出:无
 291          //功能描述:SPI发送一个字节
 292          //*****************************************************************************************
 293          INT8U SpiTxRxByte(INT8U dat)
 294          {
 295   1              INT8U i,temp;
 296   1              temp = 0;
 297   1              
 298   1              SCK = 0;
 299   1              for(i=0; i<8; i++)
 300   1              {
 301   2                      if(dat & 0x80)
C51 COMPILER V7.06   1100                                                                  12/19/2007 21:21:42 PAGE 6   

 302   2                      {
 303   3                              MOSI = 1;
 304   3                      }
 305   2                      else MOSI = 0;
 306   2                      dat <<= 1;
 307   2      
 308   2                      SCK = 1; 
 309   2                      _nop_();
 310   2                      _nop_();
 311   2      
 312   2                      temp <<= 1;
 313   2                      if(MISO)temp++; 
 314   2                      SCK = 0;
 315   2                      _nop_();
 316   2                      _nop_();        
 317   2              }
 318   1              return temp;
 319   1      }
 320          
 321          //*****************************************************************************************
 322          //函数名:void RESET_CC1100(void)
 323          //输入:无
 324          //输出:无
 325          //功能描述:复位CC1100
 326          //*****************************************************************************************
 327          void RESET_CC1100(void) 
 328          {
 329   1              CSN = 0; 
 330   1              while (MISO);
 331   1          SpiTxRxByte(CCxxx0_SRES);           //写入复位命令
 332   1              while (MISO); 
 333   1          CSN = 1; 
 334   1      }
 335          
 336          //*****************************************************************************************
 337          //函数名:void POWER_UP_RESET_CC1100(void) 
 338          //输入:无
 339          //输出:无
 340          //功能描述:上电复位CC1100
 341          //*****************************************************************************************
 342          void POWER_UP_RESET_CC1100(void) 
 343          {
 344   1              CSN = 1; 
 345   1              halWait(1); 
 346   1              CSN = 0; 
 347   1              halWait(1); 
 348   1              CSN = 1; 
 349   1              halWait(41); 
 350   1              RESET_CC1100();                 //复位CC1100
 351   1      }
 352          
 353          //*****************************************************************************************
 354          //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
 355          //输入:地址和配置字
 356          //输出:无
 357          //功能描述:SPI写寄存器
 358          //*****************************************************************************************
 359          void halSpiWriteReg(INT8U addr, INT8U value) 
 360          {
 361   1          CSN = 0;
 362   1          while (MISO);
 363   1          SpiTxRxByte(addr);          //写地址
C51 COMPILER V7.06   1100                                                                  12/19/2007 21:21:42 PAGE 7   

 364   1          SpiTxRxByte(value);         //写入配置
 365   1          CSN = 1;
 366   1      }
 367          
 368          //*****************************************************************************************
 369          //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
 370          //输入:地址,写入缓冲区,写入个数
 371          //输出:无
 372          //功能描述:SPI连续写配置寄存器
 373          //*****************************************************************************************
 374          void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count) 
 375          {
 376   1          INT8U i, temp;
 377   1              temp = addr | WRITE_BURST;
 378   1          CSN = 0;
 379   1          while (MISO);
 380   1          SpiTxRxByte(temp);
 381   1          for (i = 0; i < count; i++)
 382   1              {
 383   2              SpiTxRxByte(buffer[i]);
 384   2          }
 385   1          CSN = 1;
 386   1      }
 387          
 388          //*****************************************************************************************
 389          //函数名:void halSpiStrobe(INT8U strobe)
 390          //输入:命令
 391          //输出:无
 392          //功能描述:SPI写命令
 393          //*****************************************************************************************
 394          void halSpiStrobe(INT8U strobe) 
 395          {
 396   1          CSN = 0;
 397   1          while (MISO);
 398   1          SpiTxRxByte(strobe);                //写入命令
 399   1          CSN = 1;
 400   1      }
 401          
 402          
 403          
 404          
 405          
 406          //*****************************************************************************************
 407          //函数名:INT8U halSpiReadReg(INT8U addr)
 408          //输入:地址
 409          //输出:该寄存器的配置字
 410          //功能描述:SPI读寄存器
 411          //*****************************************************************************************
 412          INT8U halSpiReadReg(INT8U addr) 
 413          {
 414   1              INT8U temp, value;
 415   1          temp = addr|READ_SINGLE;//读寄存器命令
 416   1              CSN = 0;
 417   1              while (MISO);
 418   1              SpiTxRxByte(temp);
 419   1              value = SpiTxRxByte(0);
 420   1              CSN = 1;
 421   1              return value;
 422   1      }
 423          
 424          
 425          //*****************************************************************************************
C51 COMPILER V7.06   1100                                                                  12/19/2007 21:21:42 PAGE 8   

 426          //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
 427          //输入:地址,读出数据后暂存的缓冲区,读出配置个数
 428          //输出:无
 429          //功能描述:SPI连续写配置寄存器
 430          //*****************************************************************************************
 431          void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count) 
 432          {
 433   1          INT8U i,temp;
 434   1              temp = addr | READ_BURST;               //写入要读的配置寄存器地址和读命令
 435   1          CSN = 0;
 436   1          while (MISO);
 437   1              SpiTxRxByte(temp);   
 438   1          for (i = 0; i < count; i++) 
 439   1              {
 440   2              buffer[i] = SpiTxRxByte(0);
 441   2          }
 442   1          CSN = 1;
 443   1      }
 444          
 445          
 446          //*****************************************************************************************
 447          //函数名:INT8U halSpiReadReg(INT8U addr)
 448          //输入:地址
 449          //输出:该状态寄存器当前值
 450          //功能描述:SPI读状态寄存器
 451          //*****************************************************************************************
 452          INT8U halSpiReadStatus(INT8U addr) 
 453          {
 454   1          INT8U value,temp;
 455   1              temp = addr | READ_BURST;               //写入要读的状态寄存器的地址同时写入读命令
 456   1          CSN = 0;
 457   1          while (MISO);
 458   1          SpiTxRxByte(temp);
 459   1              value = SpiTxRxByte(0);
 460   1              CSN = 1;
 461   1              return value;
 462   1      }
 463          //*****************************************************************************************
 464          //函数名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)
 465          //输入:无
 466          //输出:无
 467          //功能描述:配置CC1100的寄存器
 468          //*****************************************************************************************
 469          void halRfWriteRfSettings(void) 
 470          {
 471   1      
 472   1              halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL2);//自已加的
 473   1          // Write register settings
 474   1          halSpiWriteReg(CCxxx0_FSCTRL1,  rfSettings.FSCTRL1);
 475   1          halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL0);
 476   1          halSpiWriteReg(CCxxx0_FREQ2,    rfSettings.FREQ2);
 477   1          halSpiWriteReg(CCxxx0_FREQ1,    rfSettings.FREQ1);
 478   1          halSpiWriteReg(CCxxx0_FREQ0,    rfSettings.FREQ0);
 479   1          halSpiWriteReg(CCxxx0_MDMCFG4,  rfSettings.MDMCFG4);
 480   1          halSpiWriteReg(CCxxx0_MDMCFG3,  rfSettings.MDMCFG3);
 481   1          halSpiWriteReg(CCxxx0_MDMCFG2,  rfSettings.MDMCFG2);
 482   1          halSpiWriteReg(CCxxx0_MDMCFG1,  rfSettings.MDMCFG1);
 483   1          halSpiWriteReg(CCxxx0_MDMCFG0,  rfSettings.MDMCFG0);
 484   1          halSpiWriteReg(CCxxx0_CHANNR,   rfSettings.CHANNR);
 485   1          halSpiWriteReg(CCxxx0_DEVIATN,  rfSettings.DEVIATN);
 486   1          halSpiWriteReg(CCxxx0_FREND1,   rfSettings.FREND1);
 487   1          halSpiWriteReg(CCxxx0_FREND0,   rfSettings.FREND0);
C51 COMPILER V7.06   1100                                                                  12/19/2007 21:21:42 PAGE 9   

 488   1          halSpiWriteReg(CCxxx0_MCSM0 ,   rfSettings.MCSM0 );
 489   1          halSpiWriteReg(CCxxx0_FOCCFG,   rfSettings.FOCCFG);
 490   1          halSpiWriteReg(CCxxx0_BSCFG,    rfSettings.BSCFG);
 491   1          halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);
 492   1              halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);
 493   1          halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);
 494   1          halSpiWriteReg(CCxxx0_FSCAL3,   rfSettings.FSCAL3);
 495   1              halSpiWriteReg(CCxxx0_FSCAL2,   rfSettings.FSCAL2);
 496   1              halSpiWriteReg(CCxxx0_FSCAL1,   rfSettings.FSCAL1);
 497   1          halSpiWriteReg(CCxxx0_FSCAL0,   rfSettings.FSCAL0);
 498   1          halSpiWriteReg(CCxxx0_FSTEST,   rfSettings.FSTEST);
 499   1          halSpiWriteReg(CCxxx0_TEST2,    rfSettings.TEST2);
 500   1          halSpiWriteReg(CCxxx0_TEST1,    rfSettings.TEST1);
 501   1          halSpiWriteReg(CCxxx0_TEST0,    rfSettings.TEST0);

⌨️ 快捷键说明

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