This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TI Chronos 915MHz Communicating with CC110L RF Boosterpack

Other Parts Discussed in Thread: CC110L, ENERGIA, CC1101

Good Afternoon, 

I have been working with the ez430-915 Chronos watch from TI for a project and I need it to communicate with the CC110L RF Anaren Air Boosterpack attached to a Stellaris Launchpad Microcontroller. I have searched around for a solution but all the answers I found were a few years old and slightly vague. I have also attempted to change the RF settings on the watch to match the AIR Boosterpack according to the example code provided by the pack but I have not had any success. I am relatively inexperienced with RF modules and settings so I am not sure what exactly I need to change. I used SmartRF Studio to adjust the parameters for the Chronos. The settings are shown below.

Base Freq: 902.8MHz

Xtal Freq: 26MHz

Carrier Freq: 902.8MHz

Modulation: 2-FSK

Data Rate: 38kBaud

Channel Spacing: 199.5kHz

TX Power: 10dBm

Channel Number: 0

According to the config file for the radio (A110LR09Config.h), the radio configuration settings are defined as: 

#define A110LR09_FCC_2FSK_38_KBAUD          // 2FSK, 38kBaud, 902MHz

Would someone be able help me out with the communication? I need to know if I am going down the right path or what register settings I need to change to get these connected. 

  • Hi,

     

    Please make sure the Deviation is same on both modules and also pleasemake sure the Rx Filter BW is wide enough to offset any frequecy tolarences in between the transmitter and receiver.

    Also make sure the Preamble length and Sync words match on both devices.

    Thanks,

    PM

  • Thank you for the response. I have adjusted the settings you mentioned using the user's manual for the boosterpack (shown below) 

     0x29,  // IOCFG2           GDO2 Output Configuration
        0x2E,  // IOCFG1           GDO1 Output Configuration
        0x06,  // IOCFG0           GDO0 Output Configuration
        0xFF,  // FIFOTHR          RX FIFO and TX FIFO Thresholds
        0xD3,  // SYNC1            Sync Word, High Byte
        0x91,  // SYNC0            Sync Word, Low Byte
        0xFF,  // PKTLEN           Packet Length
        0x04,  // PKTCTRL1         Packet Automation Control
        0x45,  // PKTCTRL0         Packet Automation Control
        0x00,  // ADDR             Device Address
        0x00,  // CHANNR           Channel Number
        0x0C,  // FSCTRL1          Frequency Synthesizer Control
        0x00,  // FSCTRL0          Frequency Synthesizer Control
        0x21,  // FREQ2            Frequency Control Word, High Byte
        0x6B,  // FREQ1            Frequency Control Word, Middle Byte
        0x24,  // FREQ0            Frequency Control Word, Low Byte
        0x1A,  // MDMCFG4          Modem Configuration
        0x71,  // MDMCFG3          Modem Configuration
        0x03,  // MDMCFG2          Modem Configuration
        0x21,  // MDMCFG1          Modem Configuration
        0xE5,  // MDMCFG0          Modem Configuration
        0x71,  // DEVIATN          Modem Deviation Setting
        0x07,  // MCSM2            Main Radio Control State Machine Configuration
        0x30,  // MCSM1            Main Radio Control State Machine Configuration
        0x18,  // MCSM0            Main Radio Control State Machine Configuration
        0x1D,  // FOCCFG           Frequency Offset Compensation Configuration
        0x1C,  // BSCFG            Bit Synchronization Configuration
        0x47,  // AGCCTRL2         AGC Control
        0x40,  // AGCCTRL1         AGC Control
        0xB0,  // AGCCTRL0         AGC Control
        0x00,  // WOREVT1          High Byte Event0 Timeout
        0x00,  // WOREVT0          Low Byte Event0 Timeout
        0x00,  // WORCTRL          Wake On Radio Control
        0xB7,  // FREND1           Front End RX Configuration
        0x10,  // FREND0           Front End TX Configuration
        0xE9,  // FSCAL3           Frequency Synthesizer Calibration
        0x2A,  // FSCAL2           Frequency Synthesizer Calibration
        0x00,  // FSCAL1           Frequency Synthesizer Calibration
        0x1F,  // FSCAL0           Frequency Synthesizer Calibration
        0x59,  // FSTEST           Frequency Synthesizer Calibration Control
        0x7F,  // PTEST            Production Test
        0x3F,  // AGCTEST          AGC Test
        0x88,  // TEST2            Various Test Settings
        0x31,  // TEST1            Various Test Settings
        0x09,  // TEST0            Various Test Settings

    The chronos settings match in SmartRF but I am still not getting anything to receive on the boosterpack. I am currently using SmartRF in packetTX mode to send bytes but the module is not receiving anything. The booster pack is attached to the Stellaris Launchpad with an example energia code that contains a loop which turns on the receiver. I have also attached the code for reference as well. Are there any other suggestions on what could be the issue? I thought it would be as simple as changing the Chronos settings to match the RF Boosterpack but it is proving more difficult.

    Thank you again,

    WG


    #include <SPI.h>
    #include <AIR430BoostFCC.h>
    
    // -----------------------------------------------------------------------------
    /**
     *  Global data
     */
    
    // Data to write to radio TX FIFO (60 bytes MAX.)
    unsigned char txData[6] = { 0x30, 'A', 'i', 'r', '!', '\0' };    
    
    // Data to read from radio RX FIFO (60 bytes MAX.)
    unsigned char rxData[6] = { '\0', '\0', '\0', '\0', '\0', '\0' };
    
    // -----------------------------------------------------------------------------
    // Debug print functions
    
    void printTxData()
    {
      Serial.print("TX (DATA): ");
      Serial.println((char*)txData); 
    }
    
    void printRxData()
    {
      /**
       *  The following illustrates various information that can be obtained when
       *  receiving a message. This includes: the received data and associated 
       *  status information (RSSI, LQI, and CRC_OK bit).
       */
      Serial.print("RX (DATA, RSSI, LQI, CRCBIT): ");
      Serial.print("(");
      Serial.print((char*)rxData);
      Serial.print(", ");
      Serial.print(Radio.getRssi());
      Serial.print(", ");
      Serial.print(Radio.getLqi());
      Serial.print(", ");
      Serial.print(Radio.getCrcBit());
      Serial.println(")");
    }
    
    // -----------------------------------------------------------------------------
    // Main example
    
    void setup()
    {
      // The radio library uses the SPI library internally, this call initializes
      // SPI/CSn and GDO0 lines. Also setup initial address, channel, and TX power.
      Radio.begin(0x01, CHANNEL_1, POWER_MAX);
    
      // Setup serial for debug printing.
      Serial.begin(9600);
      
      /**
       *  Setup LED for example demonstration purposes.
       *
       *  Note: Set radio first to ensure that GDO2 line isn't being driven by the 
       *  MCU as it is an output from the radio.
       */
      pinMode(RED_LED, OUTPUT);
      digitalWrite(RED_LED, LOW);   // set the LED on
    }
    
    void loop()
    {
      // Load the txData into the radio TX FIFO and transmit it to the broadcast
      // address.
      Radio.transmit(ADDRESS_BROADCAST, txData, 6);
      printTxData();                    // TX debug information
      
      // Increment tx data sequence number ('0'-'9' ASCII) for next transmission.
      if (txData[0] >= '0' && txData[0] < '9')
      {
        txData[0]++;
      }
      else
      {
        txData[0] = '0';
      }
      
      /**
       *  The radio transmitter and receiver cannot be operated at the same time.
       *  Wait until transmit completes before turning on the receiver. Please note
       *  that the radio is considered busy when it is transmitting.
       *
       *  WARNING: If busy is not checked between two successive radio operations
       *  receiverOn/transmit, the radio may not perform the specified task. The
       *  radio must be complete with the transmission before it can begin the next
       */
      while (Radio.busy());
      
      // Turn on the receiver and listen for incoming data. Timeout after 1 seconds.
      // The receiverOn() method returns the number of bytes copied to rxData.
      if (Radio.receiverOn(rxData, sizeof(rxData), 1000) > 0)
      {
        /**
         *  Data has been received and has been copied to the rxData buffer provided
         *  to the receiverOn() method. At this point, rxData is available. See
         *  printRxData() for more information.
         */
        digitalWrite(RED_LED, HIGH);
        printRxData();                  // RX debug information
      }
      digitalWrite(RED_LED, LOW);
    }

  • William,

    Please note that the Anaren Module is using a 27MHz XTAL reference. This causes you to have to recalculate the register settings to make sure that it will work.

    /TA
  • Ah I see. Thank you for the answer. I have changed the XTAL for the chronos watch to 27MHz in SmartRF Studio but I am still not sure how to test to make sure it works. I am still not receiving anything through the energia test program when I run the PacketTX mode. Is there an example program I can use to work off of? I am fairly sure the settings are correct now.

    Thank you,

    W

  • I was actually trying to say the that the CC1101 Anaren boosterpack uses a 27MHz XTAL and the Chronos watch uses a 26MHz XTAL and therefore you will need two different set of configuration parameters for the two chips to be able to talk to each other.

    I am not familiar with our Energia software and what it does, sorry.

    Regards,
    /TA
  • Ah I see. I'm sorry I misunderstood. The XTAL for the watch is set to 26MHz and instead of setting specific registers I changed the main settings in the watch in SmartRF to match 

    // TX power = 0

    // Manchester enable = false

    // Modulated = true

    // PA ramping = false

    // Channel number = 0

    // CRC autoflush = false

    // RX filter BW = 812.500000

    // Modulation format = 2-FSK

    // Address config = No address check

    // Base frequency = 902.299896

    // Sync word qualifier mode = 30/32 sync word bits detected

    // Device address = 0

    // CRC enable = true

    // Data rate = 37.9868

    // Carrier frequency = 902.299896

    // Data format = Normal mode

    // Preamble count = 4

    // Whitening = false

    // Channel spacing = 99.777222

    // Deviation = 228.515625 

    Unfortunately, I still have not had any success. I am in the process of finding a cheap packet sniffer to make sure I am properly sending data across the correct frequency but if there are any other suggestions please let me know. 

    Thank you,

    Will