找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1995|回复: 1
打印 上一主题 下一主题
收起左侧

cc1101的stm32单片机驱动

[复制链接]
跳转到指定楼层
楼主
ID:102231 发表于 2016-1-10 13:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有没有cc1101的驱动,感谢大神帮帮忙

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2016-1-10 16:19 | 只看该作者
STM32的CC1101驱动.rar (4.93 KB, 下载次数: 10)
通信时如果有float类型变量,可以选择联合体来传输。
union
{
   uint8_t U8Data[4];
   float F32Data;
}SampleX;
先计算得到要传输的的float类型数据,然后传输uint8_t类型数据,接收端收到uint8_t类型数据,计算时使用float类型数据,这样很好的解决了float传输问题。

  1. #include"CC1101.h"
  2. #include"Init.h"

  3. u8 PaTabel[8] = {0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60};
  4. // RF_SETTINGS is a data structure which contains all relevant CCxxx0 registers
  5. typedef struct S_RF_SETTINGS
  6. {
  7.         u8 FSCTRL2;                //自已加的
  8.     u8 FSCTRL1;   // Frequency synthesizer control.
  9.     u8 FSCTRL0;   // Frequency synthesizer control.
  10.     u8 FREQ2;     // Frequency control word, high INT8U.
  11.     u8 FREQ1;     // Frequency control word, middle INT8U.
  12.     u8 FREQ0;     // Frequency control word, low INT8U.
  13.     u8 MDMCFG4;   // Modem configuration.
  14.     u8 MDMCFG3;   // Modem configuration.
  15.     u8 MDMCFG2;   // Modem configuration.
  16.     u8 MDMCFG1;   // Modem configuration.
  17.     u8 MDMCFG0;   // Modem configuration.
  18.     u8 CHANNR;    // Channel number.
  19.     u8 DEVIATN;   // Modem deviation setting (when FSK modulation is enabled).
  20.     u8 FREND1;    // Front end RX configuration.
  21.     u8 FREND0;    // Front end RX configuration.
  22.     u8 MCSM0;     // Main Radio Control State Machine configuration.
  23.     u8 FOCCFG;    // Frequency Offset Compensation Configuration.
  24.     u8 BSCFG;     // Bit synchronization Configuration.
  25.     u8 AGCCTRL2;  // AGC control.
  26.         u8 AGCCTRL1;  // AGC control.
  27.     u8 AGCCTRL0;  // AGC control.
  28.     u8 FSCAL3;    // Frequency synthesizer calibration.
  29.     u8 FSCAL2;    // Frequency synthesizer calibration.
  30.         u8 FSCAL1;    // Frequency synthesizer calibration.
  31.     u8 FSCAL0;    // Frequency synthesizer calibration.
  32.     u8 FSTEST;    // Frequency synthesizer calibration control
  33.     u8 TEST2;     // Various test settings.
  34.     u8 TEST1;     // Various test settings.
  35.     u8 TEST0;     // Various test settings.
  36.     u8 IOCFG2;    // GDO2 output pin configuration
  37.     u8 IOCFG0;    // GDO0 output pin configuration
  38.     u8 PKTCTRL1;  // Packet automation control.
  39.     u8 PKTCTRL0;  // Packet automation control.
  40.     u8 ADDR;      // Device address.
  41.     u8 PKTLEN;    // Packet length.
  42. } RF_SETTINGS;

  43. /*const RF_SETTINGS rfSettings =
  44. {
  45.         0x00,
  46.     0x08,   // FSCTRL1   Frequency synthesizer control.
  47.     0x00,   // FSCTRL0   Frequency synthesizer control.
  48.     0x10,   // FREQ2     Frequency control word, high byte.
  49.     0xA7,   // FREQ1     Frequency control word, middle byte.
  50.     0x62,   // FREQ0     Frequency control word, low byte.
  51.     0x5B,   // MDMCFG4   Modem configuration.
  52.     0xF8,   // MDMCFG3   Modem configuration.
  53.     0x03,   // MDMCFG2   Modem configuration.
  54.     0x22,   // MDMCFG1   Modem configuration.
  55.     0xF8,   // MDMCFG0   Modem configuration.

  56.     0x00,   // CHANNR    Channel number.
  57.     0x47,   // DEVIATN   Modem deviation setting (when FSK modulation is enabled).
  58.     0xB6,   // FREND1    Front end RX configuration.
  59.     0x10,   // FREND0    Front end RX configuration.
  60.     0x18,   // MCSM0     Main Radio Control State Machine configuration.
  61.     0x1D,   // FOCCFG    Frequency Offset Compensation Configuration.
  62.     0x1C,   // BSCFG     Bit synchronization Configuration.
  63.     0xC7,   // AGCCTRL2  AGC control.
  64.     0x00,   // AGCCTRL1  AGC control.
  65.     0xB2,   // AGCCTRL0  AGC control.

  66.     0xEA,   // FSCAL3    Frequency synthesizer calibration.
  67.     0x2A,   // FSCAL2    Frequency synthesizer calibration.
  68.     0x00,   // FSCAL1    Frequency synthesizer calibration.
  69.     0x11,   // FSCAL0    Frequency synthesizer calibration.
  70.     0x59,   // FSTEST    Frequency synthesizer calibration.
  71.     0x81,   // TEST2     Various test settings.
  72.     0x35,   // TEST1     Various test settings.
  73.     0x09,   // TEST0     Various test settings.
  74.     0x0B,   // IOCFG2    GDO2 output pin configuration.
  75.     0x06,   // IOCFG0D   GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed pseudo register explanation.

  76.     0x04,   // PKTCTRL1  Packet automation control.
  77.     0x05,   // PKTCTRL0  Packet automation control.
  78.     0x00,   // ADDR      Device address.
  79.     0x0c    // PKTLEN    Packet length.
  80. };*/
  81. /////////////////////////////////////////////////////////////////
  82. const RF_SETTINGS rfSettings =
  83. {
  84.         0x00,
  85.     0x08,   // FSCTRL1   Frequency synthesizer control.
  86.     0x00,   // FSCTRL0   Frequency synthesizer control.
  87.     0x10,   // FREQ2     Frequency control word, high byte.
  88.     0xA7,   // FREQ1     Frequency control word, middle byte.
  89.     0x62,   // FREQ0     Frequency control word, low byte.
  90.     0x5B,   // MDMCFG4   Modem configuration.
  91.     0xF8,   // MDMCFG3   Modem configuration.
  92.     0x03,   // MDMCFG2   Modem configuration.
  93.     0x22,   // MDMCFG1   Modem configuration.
  94.     0xF8,   // MDMCFG0   Modem configuration.

  95.     0x00,   // CHANNR    Channel number.
  96.     0x47,   // DEVIATN   Modem deviation setting (when FSK modulation is enabled).
  97.     0xB6,   // FREND1    Front end RX configuration.
  98.     0x10,   // FREND0    Front end RX configuration.
  99.     0x18,   // MCSM0     Main Radio Control State Machine configuration.
  100.     0x1D,   // FOCCFG    Frequency Offset Compensation Configuration.
  101.     0x1C,   // BSCFG     Bit synchronization Configuration.
  102.     0xC7,   // AGCCTRL2  AGC control.
  103.     0x00,   // AGCCTRL1  AGC control.
  104.     0xB2,   // AGCCTRL0  AGC control.

  105.     0xEA,   // FSCAL3    Frequency synthesizer calibration.
  106.     0x2A,   // FSCAL2    Frequency synthesizer calibration.
  107.     0x00,   // FSCAL1    Frequency synthesizer calibration.
  108.     0x11,   // FSCAL0    Frequency synthesizer calibration.
  109.     0x59,   // FSTEST    Frequency synthesizer calibration.
  110.     0x81,   // TEST2     Various test settings.
  111.     0x35,   // TEST1     Various test settings.
  112.     0x09,   // TEST0     Various test settings.
  113.     0x0B,   // IOCFG2    GDO2 output pin configuration.
  114.     0x06,   // IOCFG0D   GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed pseudo register explanation.

  115.     0x04,   // PKTCTRL1  Packet automation control.
  116.     0x05,   // PKTCTRL0  Packet automation control.
  117.     0x00,   // ADDR      Device address.
  118.     0x0c    // PKTLEN    Packet length.
  119. };
  120. void SpiC1101Init(void)
  121. {
  122.         GPIO_InitTypeDef GPIO_InitStructure;
  123.         SPI_InitTypeDef SPI_InitStructure;
  124.         //配置SPI1接口 PA5、6、7
  125.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
  126.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  127.           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  128.           GPIO_Init(GPIOA, &GPIO_InitStructure);
  129.          //PC2-GDO2 PC1-GDO0
  130.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;
  131.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  132.   
  133.           GPIO_Init(GPIOC, &GPIO_InitStructure);
  134.         //CS-PD12
  135.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
  136.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  137.   
  138.           GPIO_Init(GPIOD, &GPIO_InitStructure);
  139.        
  140.         SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
  141.         SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
  142.         SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;
  143.         SPI_InitStructure.SPI_CPOL=SPI_CPOL_High;
  144.         SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge;
  145.         SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
  146.         SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_8;
  147.         SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;
  148.         SPI_InitStructure.SPI_CRCPolynomial=7;

  149.         SPI_Init(SPI1,&SPI_InitStructure);
  150.         SPI_Cmd(SPI1,ENABLE);
  151. }
  152. void SPiCWriteReg(u8 Addr,u8 Value)
  153. {
  154.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_RESET);        //CS enable
  155.         while(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_6))        ; //wait for 0
  156.         SPI_I2S_SendData(SPI1,(u16)Addr); //send addr
  157.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY));//wait for send finish
  158.         SPI_I2S_SendData(SPI1,(u16)Value);//seng value
  159.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY));//wait for send finish
  160.     GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_SET);        //CS disable
  161. }
  162. void SpiCWriteBurstReg(u8 Addr,u8 *Buffer,u8 Count)
  163. {
  164.         u8 i=0;
  165.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_RESET);        //CS enable
  166.         while(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_6))        ; //wait for 0
  167.         SPI_I2S_SendData(SPI1,(u16)(Addr|WRITE_BURST)); //send Buest addr
  168.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY));//wait for send finish
  169.         for(i=0;i<Count;i++)
  170.         {
  171.                 SPI_I2S_SendData(SPI1,(u16)Buffer[i]);//seng Buffer[i]
  172.                 while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY));//wait for send finish       
  173.         }
  174.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_SET);        //CS disable        
  175. }
  176. u8 SpiCReadReg(u8 Addr)
  177. {
  178.         char Data=0;
  179.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_RESET);        //CS enable
  180.         while(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_6))        ; //wait for 0
  181.         SPI_I2S_SendData(SPI1,(u16)(Addr|READ_SINGLE)); //send read addr
  182.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY));//wait for send finish

  183.         Data=SPI_I2S_ReceiveData(SPI1);// read data
  184.         SPI_I2S_SendData(SPI1,0xff); //send read addr
  185.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY));//wait for send finish
  186.         Data=SPI_I2S_ReceiveData(SPI1);//read data
  187.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_SET);        //CS disable
  188.         return Data;
  189. }
  190. void SpiCReadBurstReg(u8 Addr,u8 *Buffer,u8 Count)
  191. {
  192.         u8 i=0 ;
  193.         char Data;
  194.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_RESET);        //CS enable
  195.         while(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_6))        ; //wait for 0
  196.         SPI_I2S_SendData(SPI1,(u16)(Addr|READ_BURST)); //send read addr
  197.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY));//wait for send finish
  198.                 Data=SPI_I2S_ReceiveData(SPI1);// read data
  199.         SPI_I2S_SendData(SPI1,0xff); //send read addr
  200.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY));//wait for send finish
  201.         Data=SPI_I2S_ReceiveData(SPI1);// read data
  202.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY));//wait for send finish

  203.         for(i=0;i<Count;i++)
  204.         {
  205.                 Buffer[i]=SPI_I2S_ReceiveData(SPI1);//read data               
  206.         }
  207.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_SET);        //CS disable

  208. }
  209. u8 SpiCReadStatue(u8 Addr)
  210. {
  211.         char Data;
  212.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_RESET);        //CS enable
  213.         while(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_6))        ; //wait for 0
  214.         SPI_I2S_SendData(SPI1,(u16)(Addr|READ_BURST)); //send read addr
  215.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY));//wait for send finish
  216.                 Data=SPI_I2S_ReceiveData(SPI1);// read data
  217.         SPI_I2S_SendData(SPI1,0xff); //send read addr
  218.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY));//wait for send finish

  219.         Data=SPI_I2S_ReceiveData(SPI1);//read data
  220.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_SET);        //CS disable
  221.         return Data;
  222. }
  223. void SpiCStrobe(u8 Strobe)
  224. {
  225.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_RESET);        //CS enable
  226.         while(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_6))        ; //wait for 0
  227.         SPI_I2S_SendData(SPI1,(u16)Strobe);         //send strobe
  228.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY));//wait for send finish
  229.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_SET);        //CS disable

  230. }
  231. void SPiCPowerUpReset(void)
  232. {
  233.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_SET);        //CS disable
  234.         Delay(300);
  235.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_RESET);        //CS enable
  236.         Delay(300);
  237.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_SET);        //CS disable
  238.         Delay(1000);
  239.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_RESET);        //CS enable
  240.         while(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_6))        ; //wait for 0
  241.         SPI_I2S_SendData(SPI1,(u16)(CCxxx0_SRES));         //send strobe
  242.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_BSY));//wait for send finish
  243.         while(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_6))        ; //wait for 0
  244.         GPIO_WriteBit(GPIOD,GPIO_Pin_12,Bit_SET);        //CS disable

  245.                
  246. }
  247. void WriteRfSetting(void)
  248. {

  249.         SPiCWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL2);//自已加的
  250.     // Write register settings
  251.     SPiCWriteReg(CCxxx0_FSCTRL1,  rfSettings.FSCTRL1);
  252.     SPiCWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL0);
  253.     SPiCWriteReg(CCxxx0_FREQ2,    rfSettings.FREQ2);
  254.     SPiCWriteReg(CCxxx0_FREQ1,    rfSettings.FREQ1);
  255.     SPiCWriteReg(CCxxx0_FREQ0,    rfSettings.FREQ0);
  256.     SPiCWriteReg(CCxxx0_MDMCFG4,  rfSettings.MDMCFG4);
  257.     SPiCWriteReg(CCxxx0_MDMCFG3,  rfSettings.MDMCFG3);
  258.     SPiCWriteReg(CCxxx0_MDMCFG2,  rfSettings.MDMCFG2);
  259.     SPiCWriteReg(CCxxx0_MDMCFG1,  rfSettings.MDMCFG1);
  260.     SPiCWriteReg(CCxxx0_MDMCFG0,  rfSettings.MDMCFG0);
  261.     SPiCWriteReg(CCxxx0_CHANNR,   rfSettings.CHANNR);
  262.     SPiCWriteReg(CCxxx0_DEVIATN,  rfSettings.DEVIATN);
  263.     SPiCWriteReg(CCxxx0_FREND1,   rfSettings.FREND1);
  264.     SPiCWriteReg(CCxxx0_FREND0,   rfSettings.FREND0);
  265.     SPiCWriteReg(CCxxx0_MCSM0 ,   rfSettings.MCSM0 );
  266.     SPiCWriteReg(CCxxx0_FOCCFG,   rfSettings.FOCCFG);
  267.     SPiCWriteReg(CCxxx0_BSCFG,    rfSettings.BSCFG);
  268.     SPiCWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);
  269.         SPiCWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);
  270.     SPiCWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);
  271.     SPiCWriteReg(CCxxx0_FSCAL3,   rfSettings.FSCAL3);
  272.         SPiCWriteReg(CCxxx0_FSCAL2,   rfSettings.FSCAL2);
  273.         SPiCWriteReg(CCxxx0_FSCAL1,   rfSettings.FSCAL1);
  274.     SPiCWriteReg(CCxxx0_FSCAL0,   rfSettings.FSCAL0);
  275.     SPiCWriteReg(CCxxx0_FSTEST,   rfSettings.FSTEST);
  276.     SPiCWriteReg(CCxxx0_TEST2,    rfSettings.TEST2);
  277.     SPiCWriteReg(CCxxx0_TEST1,    rfSettings.TEST1);
  278.     SPiCWriteReg(CCxxx0_TEST0,    rfSettings.TEST0);
  279.     SPiCWriteReg(CCxxx0_IOCFG2,   rfSettings.IOCFG2);
  280.     SPiCWriteReg(CCxxx0_IOCFG0,   rfSettings.IOCFG0);   
  281.     SPiCWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1);
  282.     SPiCWriteReg(CCxxx0_PKTCTRL0, rfSettings.PKTCTRL0);
  283.     SPiCWriteReg(CCxxx0_ADDR,     rfSettings.ADDR);
  284.     SPiCWriteReg(CCxxx0_PKTLEN,   rfSettings.PKTLEN);
  285. }
  286. //发送一组数组
  287. void SpiCSendPacket(u8 *TxBuffer,u8 Size)
  288. {
  289.         //u8 i;
  290.         SPiCWriteReg(CCxxx0_TXFIFO,Size);//写大小
  291.         SpiCWriteBurstReg(CCxxx0_TXFIFO,TxBuffer,Size);//写入要写的数据
  292.         SpiCStrobe(CCxxx0_STX);//进入发送状态

  293.         while(!GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_1));         //while(!GDO0)
  294. /*        {
  295.                 if(i>10)          //限时等待
  296.                 break;
  297.                 Delay(10);
  298.                 i++;               
  299.         } */
  300.         while(GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_1));         //while(GDO0)
  301.         /*{
  302.                 if(i>10)          //限时等待
  303.                 break;
  304.                 Delay(10);
  305.                 i++;       
  306.         }*/
  307.         SpiCStrobe(CCxxx0_SFTX);// 清除缓冲区
  308.         //SpiCStrobe(CCxxx0_SIDLE);//进入空闲
  309.         //SpiCStrobe(CCxxx0_SRX);//进入接收状态

  310. }

  311. //接收数据
  312. u8 SpiCReceivePacket(u8 *RxBuffer,u8 *Size)
  313. {
  314.         u8 Status[2];
  315.         u8 PacketLength;
  316.         u8 i=(*Size)*4;

  317.         SpiCStrobe(CCxxx0_SRX);//进入接收状态
  318.         Delay(100);
  319.         while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_1))//while(GDO0)
  320.         {
  321.                 Delay(100);
  322.                 --i;
  323.        
  324.         }
  325.         if((SpiCReadStatue(CCxxx0_RXBYTES)&BYTES_IN_RXFIFO))//如果接受的字节数不为0
  326.         {
  327.                 PacketLength=SpiCReadReg(CCxxx0_RXFIFO);//读出第一个——字节数
  328.                 if(PacketLength<=*Size)
  329.                 {
  330.                         SpiCReadBurstReg(CCxxx0_RXFIFO,RxBuffer,PacketLength);//接收数据
  331.                         *Size=PacketLength;//修改数据长度
  332.                         //read CRC data
  333.                         SpiCReadBurstReg(CCxxx0_RXFIFO,Status,2);//接收数据
  334.                         SpiCStrobe(CCxxx0_SFRX);//clear Buffer 清除缓存
  335.                         return(Status[1]&CRC_OK);//if right return 1 如果正确返回1
  336.                 }
  337.                 else
  338.                 {
  339.                         *Size=PacketLength;//修改数据长度
  340.                         SpiCStrobe(CCxxx0_SFRX);//clear Buffer 清除缓存       
  341.                         return 0;
  342.                 }

  343.         }
  344.         else
  345.         {
  346.                 return 0;
  347.         }
  348.                
  349. }
  350. //初始化
  351. void CC1101Init(void)
  352. {
  353.         SPiCPowerUpReset();
  354.         WriteRfSetting();
  355.         SpiCReadBurstReg(CCxxx0_PATABLE,PaTabel,8);        //功率配置
  356.         Delay(1000);       
  357. }
复制代码


下面是头文件:
  1. #include"stm32f10x.h"

  2. /* Private define ------------------------------------------------------------*/
  3. #define WRITE      0x82  /* Write to Memory instruction */
  4. #define READ       0xD3  /* Read from Memory instruction */
  5. #define RDSR       0xD7  /* Read Status Register instruction  */
  6. #define RDID       0x9F  /* Read identification */
  7. #define PE         0x81  /* Page Erase instruction */
  8. #define BE1        0xC7  /* Bulk Erase instruction */
  9. #define BE2        0x94  /* Bulk Erase instruction */
  10. #define BE3        0x80  /* Bulk Erase instruction */
  11. #define BE4        0x9A  /* Bulk Erase instruction */

  12. #define BUSY_Flag  0x01 /* Ready/busy status flag */

  13. #define Dummy_Byte 0xff

  14. /*******************************************************************************/
  15. #define         WRITE_BURST             0x40                                                //连续写入
  16. #define         READ_SINGLE             0x80                                                //读
  17. #define         READ_BURST              0xC0                                                //连续读
  18. #define         BYTES_IN_RXFIFO     0x7F                                                  //接收缓冲区的有效字节数
  19. #define         CRC_OK              0x80                                                 //CRC校验通过位标志
  20. // CC1100 STROBE, CONTROL AND STATUS REGSITER
  21. #define CCxxx0_IOCFG2       0x00        // GDO2 output pin configuration
  22. #define CCxxx0_IOCFG1       0x01        // GDO1 output pin configuration
  23. #define CCxxx0_IOCFG0       0x02        // GDO0 output pin configuration
  24. #define CCxxx0_FIFOTHR      0x03        // RX FIFO and TX FIFO thresholds
  25. #define CCxxx0_SYNC1        0x04        // Sync word, high INT8U
  26. #define CCxxx0_SYNC0        0x05        // Sync word, low INT8U
  27. #define CCxxx0_PKTLEN       0x06        // Packet length
  28. #define CCxxx0_PKTCTRL1     0x07        // Packet automation control
  29. #define CCxxx0_PKTCTRL0     0x08        // Packet automation control
  30. #define CCxxx0_ADDR         0x09        // Device address
  31. #define CCxxx0_CHANNR       0x0A        // Channel number
  32. #define CCxxx0_FSCTRL1      0x0B        // Frequency synthesizer control
  33. #define CCxxx0_FSCTRL0      0x0C        // Frequency synthesizer control
  34. #define CCxxx0_FREQ2        0x0D        // Frequency control word, high INT8U
  35. #define CCxxx0_FREQ1        0x0E        // Frequency control word, middle INT8U
  36. #define CCxxx0_FREQ0        0x0F        // Frequency control word, low INT8U
  37. #define CCxxx0_MDMCFG4      0x10        // Modem configuration
  38. #define CCxxx0_MDMCFG3      0x11        // Modem configuration
  39. #define CCxxx0_MDMCFG2      0x12        // Modem configuration
  40. #define CCxxx0_MDMCFG1      0x13        // Modem configuration
  41. #define CCxxx0_MDMCFG0      0x14        // Modem configuration
  42. #define CCxxx0_DEVIATN      0x15        // Modem deviation setting
  43. #define CCxxx0_MCSM2        0x16        // Main Radio Control State Machine configuration
  44. #define CCxxx0_MCSM1        0x17        // Main Radio Control State Machine configuration
  45. #define CCxxx0_MCSM0        0x18        // Main Radio Control State Machine configuration
  46. #define CCxxx0_FOCCFG       0x19        // Frequency Offset Compensation configuration
  47. #define CCxxx0_BSCFG        0x1A        // Bit Synchronization configuration
  48. #define CCxxx0_AGCCTRL2     0x1B        // AGC control
  49. #define CCxxx0_AGCCTRL1     0x1C        // AGC control
  50. #define CCxxx0_AGCCTRL0     0x1D        // AGC control
  51. #define CCxxx0_WOREVT1      0x1E        // High INT8U Event 0 timeout
  52. #define CCxxx0_WOREVT0      0x1F        // Low INT8U Event 0 timeout
  53. #define CCxxx0_WORCTRL      0x20        // Wake On Radio control
  54. #define CCxxx0_FREND1       0x21        // Front end RX configuration
  55. #define CCxxx0_FREND0       0x22        // Front end TX configuration
  56. #define CCxxx0_FSCAL3       0x23        // Frequency synthesizer calibration
  57. #define CCxxx0_FSCAL2       0x24        // Frequency synthesizer calibration
  58. #define CCxxx0_FSCAL1       0x25        // Frequency synthesizer calibration
  59. #define CCxxx0_FSCAL0       0x26        // Frequency synthesizer calibration
  60. #define CCxxx0_RCCTRL1      0x27        // RC oscillator configuration
  61. #define CCxxx0_RCCTRL0      0x28        // RC oscillator configuration
  62. #define CCxxx0_FSTEST       0x29        // Frequency synthesizer calibration control
  63. #define CCxxx0_PTEST        0x2A        // Production test
  64. #define CCxxx0_AGCTEST      0x2B        // AGC test
  65. #define CCxxx0_TEST2        0x2C        // Various test settings
  66. #define CCxxx0_TEST1        0x2D        // Various test settings
  67. #define CCxxx0_TEST0        0x2E        // Various test settings

  68. // Strobe commands
  69. #define CCxxx0_SRES         0x30        // Reset chip.
  70. #define CCxxx0_SFSTXON      0x31        // Enable and calibrate frequency synthesizer (if MCSM0.FS_AUTOCAL=1).
  71.                                         // If in RX/TX: Go to a wait state where only the synthesizer is
  72.                                         // running (for quick RX / TX turnaround).
  73. #define CCxxx0_SXOFF        0x32        // Turn off crystal oscillator.
  74. #define CCxxx0_SCAL         0x33        // Calibrate frequency synthesizer and turn it off
  75.                                         // (enables quick start).
  76. #define CCxxx0_SRX          0x34        // Enable RX. Perform calibration first if coming from IDLE and
  77.                                         // MCSM0.FS_AUTOCAL=1.
  78. #define CCxxx0_STX          0x35        // In IDLE state: Enable TX. Perform calibration first if
  79.                                         // MCSM0.FS_AUTOCAL=1. If in RX state and CCA is enabled:
  80.                                         // Only go to TX if channel is clear.
  81. #define CCxxx0_SIDLE        0x36        // Exit RX / TX, turn off frequency synthesizer and exit
  82.                                         // Wake-On-Radio mode if applicable.
  83. #define CCxxx0_SAFC         0x37        // Perform AFC adjustment of the frequency synthesizer
  84. #define CCxxx0_SWOR         0x38        // Start automatic RX polling sequence (Wake-on-Radio)
  85. #define CCxxx0_SPWD         0x39        // Enter power down mode when CSn goes high.
  86. #define CCxxx0_SFRX         0x3A        // Flush the RX FIFO buffer.
  87. #define CCxxx0_SFTX         0x3B        // Flush the TX FIFO buffer.
  88. #define CCxxx0_SWORRST      0x3C        // Reset real time clock.
  89. #define CCxxx0_SNOP         0x3D        // No operation. May be used to pad strobe commands to two
  90.                                         // INT8Us for simpler software.

  91. #define CCxxx0_PARTNUM      0x30
  92. #define CCxxx0_VERSION      0x31
  93. #define CCxxx0_FREQEST      0x32
  94. #define CCxxx0_LQI          0x33
  95. #define CCxxx0_RSSI         0x34
  96. #define CCxxx0_MARCSTATE    0x35
  97. #define CCxxx0_WORTIME1     0x36
  98. #define CCxxx0_WORTIME0     0x37
  99. #define CCxxx0_PKTSTATUS    0x38
  100. #define CCxxx0_VCO_VC_DAC   0x39
  101. #define CCxxx0_TXBYTES      0x3A
  102. #define CCxxx0_RXBYTES      0x3B

  103. #define CCxxx0_PATABLE      0x3E
  104. #define CCxxx0_TXFIFO       0x3F
  105. #define CCxxx0_RXFIFO       0x3F
  106. //SPI初始化
  107. void SpiC1101Init(void);
  108. //向对应地址写数据
  109. void SPiCWriteReg(u8 Addr,u8 Value);
  110. //连续写配置寄存器
  111. void SpiCWriteBurstReg(u8 Addr,u8 *Buffer,u8 Count);
  112. // 读取寄存器值
  113. u8 SpiCReadReg(u8 Addr);
  114. //读取以addr地址开始的一串数据,存入Buffer
  115. void SpiCReadBurstReg(u8 Addr,u8 *Buffer,u8 Count);
  116. //读取状态
  117. u8 SpiCReadStatue(u8 Addr);
  118. //发送命令
  119. void SpiCStrobe(u8 Strobe);
  120. //上电复位
  121. void SPiCPowerUpReset(void);
  122. //寄存器配置
  123. void WriteRfSetting(void);
  124. //发送一组数组
  125. void SpiCSendPacket(u8 *TxBuffer,u8 Size);
  126. //接收数据
  127. u8 SpiCReceivePacket(u8 *RxBuffer,u8 *Size);
  128. //初始化
  129. void CC1101Init(void);
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表