Advertisement
Guest User

ELECHOUSE_CC1101.h

a guest
Oct 24th, 2022
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.32 KB | None | 0 0
  1. /*
  2.     ELECHOUSE_CC1101.h - CC1101 module library
  3.     Copyright (c) 2010 Michael.
  4.     Author: Michael, <www.elechouse.com>
  5.     Version: November 12, 2010
  6.  
  7.     This library is designed to use CC1101/CC1100 module on Arduino platform.
  8.     CC1101/CC1100 module is an useful wireless module.Using the functions of the
  9.     library, you can easily send and receive data by the CC1101/CC1100 module.
  10.     Just have fun!
  11.     For the details, please refer to the datasheet of CC1100/CC1101.
  12. */
  13. #ifndef ELECHOUSE_CC1101_h
  14. #define ELECHOUSE_CC1101_h
  15.  
  16. #include <Arduino.h>
  17. //***************************************CC1101 define**************************************************//
  18. // CC1101 CONFIG REGSITER
  19. #define CC1101_IOCFG2       0x00        // GDO2 output pin configuration
  20. #define CC1101_IOCFG1       0x01        // GDO1 output pin configuration
  21. #define CC1101_IOCFG0       0x02        // GDO0 output pin configuration
  22. #define CC1101_FIFOTHR      0x03        // RX FIFO and TX FIFO thresholds
  23. #define CC1101_SYNC1        0x04        // Sync word, high INT8U
  24. #define CC1101_SYNC0        0x05        // Sync word, low INT8U
  25. #define CC1101_PKTLEN       0x06        // Packet length
  26. #define CC1101_PKTCTRL1     0x07        // Packet automation control
  27. #define CC1101_PKTCTRL0     0x08        // Packet automation control
  28. #define CC1101_ADDR         0x09        // Device address
  29. #define CC1101_CHANNR       0x0A        // Channel number
  30. #define CC1101_FSCTRL1      0x0B        // Frequency synthesizer control
  31. #define CC1101_FSCTRL0      0x0C        // Frequency synthesizer control
  32. #define CC1101_FREQ2        0x0D        // Frequency control word, high INT8U
  33. #define CC1101_FREQ1        0x0E        // Frequency control word, middle INT8U
  34. #define CC1101_FREQ0        0x0F        // Frequency control word, low INT8U
  35. #define CC1101_MDMCFG4      0x10        // Modem configuration
  36. #define CC1101_MDMCFG3      0x11        // Modem configuration
  37. #define CC1101_MDMCFG2      0x12        // Modem configuration
  38. #define CC1101_MDMCFG1      0x13        // Modem configuration
  39. #define CC1101_MDMCFG0      0x14        // Modem configuration
  40. #define CC1101_DEVIATN      0x15        // Modem deviation setting
  41. #define CC1101_MCSM2        0x16        // Main Radio Control State Machine configuration
  42. #define CC1101_MCSM1        0x17        // Main Radio Control State Machine configuration
  43. #define CC1101_MCSM0        0x18        // Main Radio Control State Machine configuration
  44. #define CC1101_FOCCFG       0x19        // Frequency Offset Compensation configuration
  45. #define CC1101_BSCFG        0x1A        // Bit Synchronization configuration
  46. #define CC1101_AGCCTRL2     0x1B        // AGC control
  47. #define CC1101_AGCCTRL1     0x1C        // AGC control
  48. #define CC1101_AGCCTRL0     0x1D        // AGC control
  49. #define CC1101_WOREVT1      0x1E        // High INT8U Event 0 timeout
  50. #define CC1101_WOREVT0      0x1F        // Low INT8U Event 0 timeout
  51. #define CC1101_WORCTRL      0x20        // Wake On Radio control
  52. #define CC1101_FREND1       0x21        // Front end RX configuration
  53. #define CC1101_FREND0       0x22        // Front end TX configuration
  54. #define CC1101_FSCAL3       0x23        // Frequency synthesizer calibration
  55. #define CC1101_FSCAL2       0x24        // Frequency synthesizer calibration
  56. #define CC1101_FSCAL1       0x25        // Frequency synthesizer calibration
  57. #define CC1101_FSCAL0       0x26        // Frequency synthesizer calibration
  58. #define CC1101_RCCTRL1      0x27        // RC oscillator configuration
  59. #define CC1101_RCCTRL0      0x28        // RC oscillator configuration
  60. #define CC1101_FSTEST       0x29        // Frequency synthesizer calibration control
  61. #define CC1101_PTEST        0x2A        // Production test
  62. #define CC1101_AGCTEST      0x2B        // AGC test
  63. #define CC1101_TEST2        0x2C        // Various test settings
  64. #define CC1101_TEST1        0x2D        // Various test settings
  65. #define CC1101_TEST0        0x2E        // Various test settings
  66.  
  67. //CC1101 Strobe commands
  68. #define CC1101_SRES         0x30        // Reset chip.
  69. #define CC1101_SFSTXON      0x31        // Enable and calibrate frequency synthesizer (if MCSM0.FS_AUTOCAL=1).
  70.                                         // If in RX/TX: Go to a wait state where only the synthesizer is
  71.                                         // running (for quick RX / TX turnaround).
  72. #define CC1101_SXOFF        0x32        // Turn off crystal oscillator.
  73. #define CC1101_SCAL         0x33        // Calibrate frequency synthesizer and turn it off
  74.                                         // (enables quick start).
  75. #define CC1101_SRX          0x34        // Enable RX. Perform calibration first if coming from IDLE and
  76.                                         // MCSM0.FS_AUTOCAL=1.
  77. #define CC1101_STX          0x35        // In IDLE state: Enable TX. Perform calibration first if
  78.                                         // MCSM0.FS_AUTOCAL=1. If in RX state and CCA is enabled:
  79.                                         // Only go to TX if channel is clear.
  80. #define CC1101_SIDLE        0x36        // Exit RX / TX, turn off frequency synthesizer and exit
  81.                                         // Wake-On-Radio mode if applicable.
  82. #define CC1101_SAFC         0x37        // Perform AFC adjustment of the frequency synthesizer
  83. #define CC1101_SWOR         0x38        // Start automatic RX polling sequence (Wake-on-Radio)
  84. #define CC1101_SPWD         0x39        // Enter power down mode when CSn goes high.
  85. #define CC1101_SFRX         0x3A        // Flush the RX FIFO buffer.
  86. #define CC1101_SFTX         0x3B        // Flush the TX FIFO buffer.
  87. #define CC1101_SWORRST      0x3C        // Reset real time clock.
  88. #define CC1101_SNOP         0x3D        // No operation. May be used to pad strobe commands to two
  89.                                         // INT8Us for simpler software.
  90. //CC1101 STATUS REGSITER
  91. #define CC1101_PARTNUM      0x30
  92. #define CC1101_VERSION      0x31
  93. #define CC1101_FREQEST      0x32
  94. #define CC1101_LQI          0x33
  95. #define CC1101_RSSI         0x34
  96. #define CC1101_MARCSTATE    0x35
  97. #define CC1101_WORTIME1     0x36
  98. #define CC1101_WORTIME0     0x37
  99. #define CC1101_PKTSTATUS    0x38
  100. #define CC1101_VCO_VC_DAC   0x39
  101. #define CC1101_TXBYTES      0x3A
  102. #define CC1101_RXBYTES      0x3B
  103.  
  104. //CC1101 PATABLE,TXFIFO,RXFIFO
  105. #define CC1101_PATABLE      0x3E
  106. #define CC1101_TXFIFO       0x3F
  107. #define CC1101_RXFIFO       0x3F
  108.  
  109. //*************************************** pins **************************************************//
  110. #define SCK_PIN   13
  111. #define MISO_PIN  12
  112. #define MOSI_PIN  11
  113. #define SS_PIN    10
  114. #define GDO0    2
  115. #define GDO2    9
  116. //************************************* class **************************************************//
  117. class ELECHOUSE_CC1101
  118. {
  119.     private:
  120.         void SpiInit(void);
  121.         void SpiMode(byte config);
  122.         byte SpiTransfer(byte value);
  123.         void GDO_Set (void);
  124.         void Reset (void);
  125.         void SpiWriteReg(byte addr, byte value);
  126.         void SpiWriteBurstReg(byte addr, byte *buffer, byte num);
  127.         void SpiStrobe(byte strobe);
  128.         byte SpiReadReg(byte addr);
  129.         void SpiReadBurstReg(byte addr, byte *buffer, byte num);
  130.         byte SpiReadStatus(byte addr);
  131.         void RegConfigSettings(void);
  132.     public:
  133.         void Init(void);
  134.         void SendData(byte *txBuffer, byte size);
  135.         void SetReceive(void);
  136.         byte CheckReceiveFlag(void);
  137.         byte ReceiveData(byte *rxBuffer);
  138. };
  139.  
  140. extern ELECHOUSE_CC1101 ELECHOUSE_cc1101;
  141.  
  142. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement