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

📄 1100.lst

📁 买NewMsg-RF1100这个无线模块时
💻 LST
📖 第 1 页 / 共 3 页
字号:
 462   1          halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL0);
 463   1          halSpiWriteReg(CCxxx0_FREQ2,    rfSettings.FREQ2);
 464   1          halSpiWriteReg(CCxxx0_FREQ1,    rfSettings.FREQ1);
 465   1          halSpiWriteReg(CCxxx0_FREQ0,    rfSettings.FREQ0);
 466   1          halSpiWriteReg(CCxxx0_MDMCFG4,  rfSettings.MDMCFG4);
 467   1          halSpiWriteReg(CCxxx0_MDMCFG3,  rfSettings.MDMCFG3);
 468   1          halSpiWriteReg(CCxxx0_MDMCFG2,  rfSettings.MDMCFG2);
 469   1          halSpiWriteReg(CCxxx0_MDMCFG1,  rfSettings.MDMCFG1);
 470   1          halSpiWriteReg(CCxxx0_MDMCFG0,  rfSettings.MDMCFG0);
 471   1          halSpiWriteReg(CCxxx0_CHANNR,   rfSettings.CHANNR);
 472   1          halSpiWriteReg(CCxxx0_DEVIATN,  rfSettings.DEVIATN);
 473   1          halSpiWriteReg(CCxxx0_FREND1,   rfSettings.FREND1);
 474   1          halSpiWriteReg(CCxxx0_FREND0,   rfSettings.FREND0);
 475   1          halSpiWriteReg(CCxxx0_MCSM0 ,   rfSettings.MCSM0 );
 476   1          halSpiWriteReg(CCxxx0_FOCCFG,   rfSettings.FOCCFG);
 477   1          halSpiWriteReg(CCxxx0_BSCFG,    rfSettings.BSCFG);
 478   1          halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);
 479   1              halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);
 480   1          halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);
 481   1          halSpiWriteReg(CCxxx0_FSCAL3,   rfSettings.FSCAL3);
 482   1              halSpiWriteReg(CCxxx0_FSCAL2,   rfSettings.FSCAL2);
 483   1              halSpiWriteReg(CCxxx0_FSCAL1,   rfSettings.FSCAL1);
 484   1          halSpiWriteReg(CCxxx0_FSCAL0,   rfSettings.FSCAL0);
 485   1          halSpiWriteReg(CCxxx0_FSTEST,   rfSettings.FSTEST);
 486   1          halSpiWriteReg(CCxxx0_TEST2,    rfSettings.TEST2);
 487   1          halSpiWriteReg(CCxxx0_TEST1,    rfSettings.TEST1);
C51 COMPILER V7.06   1100                                                                  10/28/2008 22:55:12 PAGE 9   

 488   1          halSpiWriteReg(CCxxx0_TEST0,    rfSettings.TEST0);
 489   1          halSpiWriteReg(CCxxx0_IOCFG2,   rfSettings.IOCFG2);
 490   1          halSpiWriteReg(CCxxx0_IOCFG0,   rfSettings.IOCFG0);    
 491   1          halSpiWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1);
 492   1          halSpiWriteReg(CCxxx0_PKTCTRL0, rfSettings.PKTCTRL0);
 493   1          halSpiWriteReg(CCxxx0_ADDR,     rfSettings.ADDR);
 494   1          halSpiWriteReg(CCxxx0_PKTLEN,   rfSettings.PKTLEN);
 495   1      }
 496          
 497          //*****************************************************************************************
 498          //函数名:void halRfSendPacket(INT8U *txBuffer, INT8U size)
 499          //输入:发送的缓冲区,发送数据个数
 500          //输出:无
 501          //功能描述:CC1100发送一组数据
 502          //*****************************************************************************************
 503          
 504          void halRfSendPacket(INT8U *txBuffer, INT8U size) 
 505          {
 506   1              halSpiWriteReg(CCxxx0_TXFIFO, size);
 507   1          halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size); //写入要发送的数据
 508   1      
 509   1          halSpiStrobe(CCxxx0_STX);           //进入发送模式发送数据
 510   1      
 511   1          // Wait for GDO0 to be set -> sync transmitted
 512   1          while (!GDO0);
 513   1          // Wait for GDO0 to be cleared -> end of packet
 514   1          while (GDO0);
 515   1              halSpiStrobe(CCxxx0_SFTX);
 516   1      }
 517          
 518          
 519          void setRxMode(void)
 520          {
 521   1          halSpiStrobe(CCxxx0_SRX);           //进入接收状态
 522   1      }
 523          
 524          /*
 525          // Bit masks corresponding to STATE[2:0] in the status byte returned on MISO
 526          #define CCxx00_STATE_BM                 0x70
 527          #define CCxx00_FIFO_BYTES_AVAILABLE_BM  0x0F
 528          #define CCxx00_STATE_TX_BM              0x20
 529          #define CCxx00_STATE_TX_UNDERFLOW_BM    0x70
 530          #define CCxx00_STATE_RX_BM              0x10
 531          #define CCxx00_STATE_RX_OVERFLOW_BM     0x60
 532          #define CCxx00_STATE_IDLE_BM            0x00
 533          
 534          static INT8U RfGetRxStatus(void)
 535          {
 536                  INT8U temp, spiRxStatus1,spiRxStatus2;
 537                  INT8U i=4;// 循环测试次数
 538              temp = CCxxx0_SNOP|READ_SINGLE;//读寄存器命令
 539                  CSN = 0;
 540                  while (MISO);
 541                  SpiTxRxByte(temp);
 542                  spiRxStatus1 = SpiTxRxByte(0);
 543                  do
 544                  {
 545                          SpiTxRxByte(temp);
 546                          spiRxStatus2 = SpiTxRxByte(0);
 547                          if(spiRxStatus1 == spiRxStatus2)
 548                          {
 549                                  if( (spiRxStatus1 & CCxx00_STATE_BM) == CCxx00_STATE_RX_OVERFLOW_BM)
C51 COMPILER V7.06   1100                                                                  10/28/2008 22:55:12 PAGE 10  

 550                                  {
 551                         halSpiStrobe(CCxxx0_SFRX);
 552                                     return 0;
 553                                  }
 554                              return 1;
 555                          }
 556                           spiRxStatus1=spiRxStatus2;
 557                  }
 558                  while(i--);
 559                  CSN = 1;
 560              return 0;   
 561          }
 562           */
 563          INT8U halRfReceivePacket(INT8U *rxBuffer, INT8U *length) 
 564          {
 565   1          INT8U status[2];
 566   1          INT8U packetLength;
 567   1              INT8U i=(*length)*4;  // 具体多少要根据datarate和length来决定
 568   1      
 569   1          halSpiStrobe(CCxxx0_SRX);           //进入接收状态
 570   1              //delay(5);
 571   1          //while (!GDO1);
 572   1          //while (GDO1);
 573   1              delay(2);
 574   1              while (GDO0)
 575   1              {
 576   2                      delay(2);
 577   2                      --i;
 578   2                      if(i<1)
 579   2                         return 0;        
 580   2              }        
 581   1          if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0
 582   1              {
 583   2              packetLength = halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度
 584   2              if (packetLength <= *length)            //如果所要的有效数据长度小于等于接收到的数据包的长度
 585   2                      {
 586   3                  halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength); //读出所有接收到的数据
 587   3                  *length = packetLength;                             //把接收数据长度的修改为当前数据的长度
 588   3              
 589   3                  // Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)
 590   3                  halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2);       //读出CRC校验位
 591   3                              halSpiStrobe(CCxxx0_SFRX);              //清洗接收缓冲区
 592   3                  return (status[1] & CRC_OK);                        //如果校验成功返回接收成功
 593   3              }
 594   2                       else 
 595   2                      {
 596   3                  *length = packetLength;
 597   3                  halSpiStrobe(CCxxx0_SFRX);          //清洗接收缓冲区
 598   3                  return 0;
 599   3              }
 600   2          } 
 601   1              else
 602   1              return 0;
 603   1      }
 604          /*
 605          void Delay(unsigned int s)
 606          {
 607                  unsigned int i;
 608                  for(i=0; i<s; i++);
 609                  for(i=0; i<s; i++);
 610          }
 611          
C51 COMPILER V7.06   1100                                                                  10/28/2008 22:55:12 PAGE 11  

 612          */
 613          void main(void)
 614          {
 615   1              INT8U leng =0;
 616   1              INT8U tf =0;
 617   1              INT8U TxBuf[8]={0};      // 8字节, 如果需要更长的数据包,请正确设置
 618   1              INT8U RxBuf[8]={0};     
 619   1              CpuInit();
 620   1              POWER_UP_RESET_CC1100();
 621   1              halRfWriteRfSettings();
 622   1              halSpiWriteBurstReg(CCxxx0_PATABLE, PaTabel, 8);
 623   1      
 624   1              //TxBuf[0] = 8 ;
 625   1              TxBuf[1] = 1 ;
 626   1              TxBuf[2] = 1 ;
 627   1              halRfSendPacket(TxBuf,8);       // Transmit Tx buffer data
 628   1              delay(6000);
 629   1              P0=0xBF;
 630   1                      led0=0;led1=0;led2=0;led3=0;
 631   1              while(1)
 632   1              {
 633   2                  //setRxMode();
 634   2              if(KEY1 ==0 ) 
 635   2                      {
 636   3                          TxBuf[1] = 1 ;
 637   3                          tf = 1 ; 
 638   3                              //while(KEY1 ==0);
 639   3                  }
 640   2                 if(KEY2 ==0 )
 641   2                 {
 642   3                              TxBuf[2] = 1 ;
 643   3                              tf = 1 ; 
 644   3                 }
 645   2      
 646   2                 if (tf==1)
 647   2             {        
 648   3                              halRfSendPacket(TxBuf,8);       // Transmit Tx buffer data
 649   3                              TxBuf[1] = 0xff;
 650   3                              TxBuf[2] = 0xff;
 651   3                              tf=0;
 652   3                              delay(500);
 653   3                      led0=0;led1=0;led2=0;led3=0;
 654   3                 }
 655   2      
 656   2                      leng =8; // 预计接受8 bytes
 657   2                      if(halRfReceivePacket(RxBuf,&leng))
 658   2                      {
 659   3                                                      
 660   3                              if(     RxBuf[1]==1)
 661   3                              {               
 662   4                                      P0=0xF7;
 663   4                              led0=0;led1=0;led2=0;led3=0;
 664   4                              }
 665   3                              if(     RxBuf[2]==1)
 666   3                              {
 667   4                                      P0=0xFE;        
 668   4                              led0=0;led1=0;led2=0;led3=0;
 669   4                              }
 670   3                      delay(1000);
 671   3                              led0=1;led1=1;led2=1;led3=1;
 672   3                      }
 673   2      
C51 COMPILER V7.06   1100                                                                  10/28/2008 22:55:12 PAGE 12  

 674   2                      RxBuf[1] = 0xff;
 675   2                      RxBuf[2] = 0xff;
 676   2              }
 677   1              
 678   1      }
 679          
 680          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1003    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     43      38
   IDATA SIZE       =   ----    ----
   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 + -