Wireless RF Modules and dongles for IoT | Coral RF

CC1125 ModulesCC1120 ModulesCC1101 ModuleCC1201 ModulesCC1200 ModulesCC112x ModulesCC2538 Dongle USBCC2652R Dongles USBCC2652R7 Dongles USBCC2674R10 Dongle USBCC2652P7 Dongles USBCC2674P10 Dongle USBCC2652P Dongle USBZigBee DonglesCC1314 ModulesCC1311 ModulesCC1310 ModulesCC1312 ModulesCC1352 ModulesCC1354 ModulesCC13xx ModulesCC2538 ZigBee ModuleCC2652 ModulesCC2674 ModulesZigBee/BLE ModulesCC1310 Dongles USBCC1312 Dongles USBCC1311 Dongles USBCC1314 Dongles USBSUB G DonglesLR2021 ModulesSX1262 ModulesLLCC68 ModulesSX1280 ModulesLoRa Modules1 Watt Modules2 Watt Modules5 Watt ModulesHigh Power Modules1 Watt 169Mhz Modules2 Watt 169Mhz Modules5 Watt 169Mhz Modules169Mhz Modules1 Watt 433Mhz Modules2 Watt 433Mhz Modules5 Watt 433Mhz Modules433Mhz Modules1 Watt 868M Modules2 Watt 868M Modules5 Watt 868M Modules868Mhz Modules1 Watt 915M Modules2 Watt 915M Modules5 Watt 915M Modules915Mhz Modules2 Watt 1250M Module1250Mhz Modules
Product
Article

868MHz RF Transceiver CC1200 Wi-SUN Module

Issuing time:2022-09-28 08:04Author:coral radio

868 MHz RF Transceiver CC1200 Wi-SUN Module

Introduction

TI CC1200 is designed for short range, very low-power and Wi-SUN wireless transceiver. The RF transceiver is mainly used for the SRD ( Short Range Device), Wi-SUN and ISM ( Scientific, car, Industrial, and Medical) . The frequency bands support 169, 220, 315, 433, 470, 868, and 915 MHz. And can changed CC1200 register easily be used for other frequencies in the 137-158.3 MHz, 164-190 MHz, 205-237.5 MHz, 274-316.6 MHz, 410-475 MHz, and 820-950 MHz bands.

N511CS-CC1200-868M module based CC1200, the module designed for 868, and 915 MHz. CC1200 module support all of the CC1200 function.

Wi-SUN Model: N511CS-CC1200-868M
CC1200 Module‍

order now

Module Features:

Operating voltage :2-3.6V

  • RF rate: 1.2 - 200kbps, support 2-FSK, 4-FSK, 2-GFSK, 4-GFSK, and ASK/OOK modulation

  • Relevant parameters such as baud rate, RX filter BW, radio frequency, and transmission power can be modified through software

  • Sensitivity (<1.2kbps -120dBm, 1% packet error rate)

  • CRC error detection and built-in hardware address multipoint communication control

  • Lower RX current consumption (RX 17mA Peak Current in Low-Power Mode; 1.2kbps, 868MHz)

  • Power Down (0.12uA)

  • Programmable control of RF output power, maximum output power of +16dBm

  • SMD package for SMT

  • Separate 128-byte RX and TX data FIFO

  • Transmission distance: 10 - 800 meters (Depending on the specific situation of the environment and RF baud rate, etc.)

CC1200 Wi-SUN Module Pinout Description:

Pin   Number

function

Describe

1

RF


2GND
3GND
4GDIO3Connected to MCU IO   port
5RSTConnected to MCU IO   port
6NCNC
7GPIO2Connected to MCU IO   port
8MOSISPI
9SCKSPI
10MISOSPI
11GPIO0Connected to MCU IO   port
12NSSSPI
13VCC1.8 - 3.6V
14GNDGND


CC1200 Wi-SUN Module EDA package:


868MHz RF Transceiver CC1200 Module EDA package



Usage

1.Hardware connection
868MHz Narrowband RF Transceiver CC1200 Module Hardware connection‍   

1.Test hardware

868MHz Narrowband RF Transceiver CC1200 Module hardware Test   

CC1200 module can be configured using CCdebugger and SmartRF™ Studio software. SmartRF™ Studio is highly recommended for obtaining optimum register settings, and for evaluating performance and functionality.

After chip reset by CCdebugger, all registers have default values and these might differ from the optimum register setting. It is therefore necessary to configure/reconfigure the radio through the SPI interface after the chip has been reset. SmartRF Studio provides a code export function making it easy to implement this in firmware.

3. TX DEMO for Arduino

/*--

'                     TX DEMO

'                     -------

'

'

'   - need PinChangeInt library

'   - *.eep file must flashed to Arduino first -> use eeprom Tool

'   - put cc1100_arduino.h in your sketch folder. dont't install it as library

'    for this example.

'

'-----------------------------------------------------------------------------*/

#include"cc1100_arduino.h"

#include<PinChangeInt.h>



//---------------------------=[Global variables]=----------------------------



//--------------------------[Global Task variables]--------------------------

uint32_t prev_millis_1s_timer = 0;



constuint16_t INTERVAL_1S_TIMER = 1000;        // interval at which to blink (milliseconds)



//--------------------------[Global CC1100 variables]------------------------

uint8_t Tx_fifo[FIFOBUFFER], Rx_fifo[FIFOBUFFER];

uint8_t My_addr, Tx_addr, Rx_addr, Pktlen, pktlen, Lqi, Rssi;

uint8_t rx_addr,sender,lqi;

int8_t rssi_dbm;



volatileuint8_t cc1101_packet_available;



//--------------------------[class constructors]-----------------------------

//init CC1100 constructor

CC1100 cc1100;



//---------------------------------[SETUP]-----------------------------------

voidsetup()

{

// init serial Port for debugging

   Serial.begin(38400);Serial.println();



// init CC1101 RF-module and get My_address from EEPROM

   cc1100.begin(My_addr);                   //inits RF module with main default settings



   cc1100.silde();                          //set to ILDE first

   cc1100.set_mode(0x04);                   //set modulation array mode

   cc1100.set_ISM(0x03);                    //set frequency

   cc1100.set_channel(0x01);                //set channel

   cc1100.set_output_power_level(0);        //set PA level in dbm

   cc1100.set_myaddr(0x01);                 //set my own address



   cc1100.spi_write_register(IOCFG2, 0x06); //set module in sync mode detection mode



   cc1100.show_main_settings();             //shows setting debug messages to UART

   cc1100.show_register_settings();         //shows current CC1101 register values

   cc1100.receive();                        //set to RECEIVE mode



// init interrrupt function for available packet

attachPinChangeInterrupt(GDO2, rf_available_int, HIGH);



   Serial.println(F("CC1101 TX Demo"));   //welcome message

}

//---------------------------------[LOOP]-----------------------------------

voidloop()

{



// one second update timer

if (millis() - prev_millis_1s_timer >= INTERVAL_1S_TIMER)

   {

    Rx_addr = 0x03;                                              //receiver address



    uint32_t time_stamp = millis();                              //generate time stamp



    Tx_fifo[3] = (uint8_t)(time_stamp >> 24);                    //split 32-Bit timestamp to 4 byte array

    Tx_fifo[4] = (uint8_t)(time_stamp >> 16);

    Tx_fifo[5] = (uint8_t)(time_stamp >> 8);

    Tx_fifo[6] = (uint8_t)(time_stamp);



    Pktlen = 0x07;                                               //set packet len to 0x13



    detachPinChangeInterrupt(GDO2);                              //disable pin change interrupt

    cc1100.sent_packet(My_addr, Rx_addr, Tx_fifo, Pktlen, 1);    //sents package over air. ACK is received via GPIO polling

    attachPinChangeInterrupt(GDO2, rf_available_int, HIGH);      //enable pin change interrupt



    Serial.print(F("tx_time: "));Serial.print(millis()-time_stamp);Serial.println(F("ms"));

    prev_millis_1s_timer = millis();

   }



}

//--------------------------[end loop]----------------------------



//-----interrrupt function not needed for this demo

//---------------------[ check incomming RF packet ]-----------------------

voidrf_available_int(void)

{

    detachPinChangeInterrupt(GDO2);



    if(cc1100.packet_available() == TRUE){

        cc1100.get_payload(Rx_fifo, pktlen, rx_addr, sender, rssi_dbm, lqi); //stores the payload data to Rx_fifo

        cc1101_packet_available = TRUE;                                      //set flag that an package is in RX buffer

      }



    attachPinChangeInterrupt(GDO2, rf_available_int, HIGH);

}

4. RX DEMO for Arduino

/*--

'                     RX_DEMO

'                     -------

'   - needs PinChangeInt library

'   - *.eep file must flashed to Arduino first -> use eeprom Tool

'   - put cc1100_arduino.h in your sketch folder. dont't install it as library

'    for this example.

'   

'   

'-----------------------------------------------------------------------------*/

#include"cc1100_arduino.h"

#include<PinChangeInt.h>



//---------------------------=[Global variables]=----------------------------

uint32_t rf_timecode = 0;

uint32_t rf_timecode_backup = 0;

//--------------------------[Global Task variables]--------------------------



//--------------------------[Global CC1100 variables]------------------------

uint8_t Tx_fifo[FIFOBUFFER], Rx_fifo[FIFOBUFFER];

uint8_t My_addr, Tx_addr, Rx_addr, Pktlen, pktlen, Lqi, Rssi;

uint8_t rx_addr,sender,lqi;

int8_t rssi_dbm;

volatileuint8_t cc1101_packet_available;



//--------------------------[class constructors]-----------------------------

//init CC1100 constructor

CC1100 cc1100;



//---------------------------------[SETUP]-----------------------------------

voidsetup()

{

// init serial Port for debugging

   Serial.begin(38400);Serial.println();



// init CC1101 RF-module and get My_address from EEPROM

   cc1100.begin(My_addr);                   //inits RF module with main default settings



   cc1100.silde();                          //set to ILDE first

   cc1100.set_mode(0x04);                   //set modulation array mode

   cc1100.set_ISM(0x01);                    //set frequency

   cc1100.set_channel(0x01);                //set channel

   cc1100.set_output_power_level(0);        //set PA level in dbm

   cc1100.set_myaddr(0x03);                 //set my own address



   cc1100.spi_write_register(IOCFG2, 0x06); //set module in sync mode detection mode



   cc1100.show_main_settings();             //shows setting debug messages to UART   

   cc1100.show_register_settings();         //shows current CC1101 register values

   cc1100.receive();                        //set to RECEIVE mode



// init interrrupt function for available packet

   attachPinChangeInterrupt(GDO2, rf_available_int, HIGH);



   Serial.println(F("CC1101 RX Demo"));   //welcome message

}



//---------------------------------[LOOP]-----------------------------------

voidloop()

{

    //if valid package is received

    if(cc1101_packet_available == TRUE){

        rf_timecode = ((uint32_t)Rx_fifo[3] << 24) +

                  ((uint32_t)Rx_fifo[4] << 16) +

                  ((uint16_t)Rx_fifo[5] <<   8) +

                             Rx_fifo[6];

        Serial.print(F("TX_Timecode: "));Serial.print(rf_timecode);Serial.println(F("ms"));



        rf_timecode_backup = millis();

        cc1101_packet_available = FALSE;

      }



}

//--------------------------[end loop]----------------------------



//---------------------[ check incomming RF packet ]-----------------------

voidrf_available_int(void)

{

    detachPinChangeInterrupt(GDO2);

    sei();

    uint32_t time_stamp = millis();                                   //generate time stamp



    if(cc1100.packet_available() == TRUE){

        cc1100.get_payload(Rx_fifo, pktlen, rx_addr, sender, rssi_dbm, lqi); //stores the payload data to Rx_fifo

        cc1101_packet_available = TRUE;                                      //set flag that an package is in RX buffer

      }

      Serial.print(F("rx_time: "));Serial.print(millis()-time_stamp);Serial.println(F("ms"));



    attachPinChangeInterrupt(GDO2, rf_available_int, HIGH);

}



Share to:
401, XinBaoYuan Building, N5179, District 74 Xin'an Street, BaoAn District, Shenzhen, China 518101
Contact number:    +86-186 8898 9755
Global Sales Contact
Contact :    Kanta
Email :   info@coralradio.com