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

📄 1100.lst

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

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

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

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

 488   1          halSpiWriteReg(CCxxx0_FSTEST,   rfSettings.FSTEST);
 489   1          halSpiWriteReg(CCxxx0_TEST2,    rfSettings.TEST2);
 490   1          halSpiWriteReg(CCxxx0_TEST1,    rfSettings.TEST1);
 491   1          halSpiWriteReg(CCxxx0_TEST0,    rfSettings.TEST0);

⌨️ 快捷键说明

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