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

📄 1100.lst

📁 CC1100无线232收发程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 196              0x1C,   // BSCFG     Bit synchronization Configuration.
 197              0xC7,   // AGCCTRL2  AGC control.
 198              0x00,   // AGCCTRL1  AGC control.
 199              0xB2,   // AGCCTRL0  AGC control.
 200          
 201              0xEA,   // FSCAL3    Frequency synthesizer calibration.
 202              0x2A,   // FSCAL2    Frequency synthesizer calibration.
 203              0x00,   // FSCAL1    Frequency synthesizer calibration.
 204              0x11,   // FSCAL0    Frequency synthesizer calibration.
 205              0x59,   // FSTEST    Frequency synthesizer calibration.
 206              0x81,   // TEST2     Various test settings.
 207              0x35,   // TEST1     Various test settings.
 208              0x09,   // TEST0     Various test settings.
 209              0x0B,   // IOCFG2    GDO2 output pin configuration.
 210              0x06,   // IOCFG0D   GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed p
             -seudo register explanation.
 211          
 212              0x04,   // PKTCTRL1  Packet automation control.
 213              0x05,   // PKTCTRL0  Packet automation control.
 214              0x00,   // ADDR      Device address.
 215              0x0c    // PKTLEN    Packet length.
 216          };
 217          //*****************************************************************************************
 218          //函数名:delay(unsigned int s)
 219          //输入:时间
 220          //输出:无
 221          //功能描述:普通廷时,内部用
 222          //*****************************************************************************************             
 223          static void delay(unsigned int s)
 224          {
 225   1              unsigned int i;
 226   1              for(i=0; i<s; i++);
 227   1              for(i=0; i<s; i++);
 228   1      }
 229          
 230          
 231          void halWait(INT16U timeout) {
 232   1          do {
 233   2              _nop_();
 234   2                      _nop_();
 235   2                      _nop_();
 236   2                      _nop_();
 237   2                      _nop_();
 238   2                      _nop_();
 239   2                      _nop_();
C51 COMPILER V7.06   1100                                                                  12/19/2007 21:10:32 PAGE 5   

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

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

 364   1          while (MISO);
 365   1          SpiTxRxByte(temp);
 366   1          for (i = 0; i < count; i++)
 367   1              {
 368   2              SpiTxRxByte(buffer[i]);
 369   2          }
 370   1          CSN = 1;
 371   1      }
 372          
 373          //*****************************************************************************************
 374          //函数名:void halSpiStrobe(INT8U strobe)
 375          //输入:命令
 376          //输出:无
 377          //功能描述:SPI写命令
 378          //*****************************************************************************************
 379          void halSpiStrobe(INT8U strobe) 
 380          {
 381   1          CSN = 0;
 382   1          while (MISO);
 383   1          SpiTxRxByte(strobe);                //写入命令
 384   1          CSN = 1;
 385   1      }
 386          
 387          
 388          
 389          
 390          
 391          //*****************************************************************************************
 392          //函数名:INT8U halSpiReadReg(INT8U addr)
 393          //输入:地址
 394          //输出:该寄存器的配置字
 395          //功能描述:SPI读寄存器
 396          //*****************************************************************************************
 397          INT8U halSpiReadReg(INT8U addr) 
 398          {
 399   1              INT8U temp, value;

⌨️ 快捷键说明

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