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.

SMARTRFTRXEBK: Board does not recoginze CC1101 radio

Part Number: SMARTRFTRXEBK
Other Parts Discussed in Thread: CC1101, , CC110L

SmartRF Studio reports that the CC1101 radios I am evaluating have firmware version=0044. I am trying to run the onboard "perf test" that came preinstalled on the SmartRFTrxEbk but it reports that it cannot find a supported radio. The CC1101 is installed on the board and works well with SmartRF studio. We need to use the perf test to evaluate the radios outdoors disconnected from computers. Could you please provide me with firmware for the SmartRFTrxBk that recognizes the radios and is able to run the perf test? Also instructions on how to flash the SmartRFTrxEbk. 

Thanks

  • - It's the TRXEB thjat reports FW version, CC1101 does not have flash meaning that it can't report FW version.

    - https://www.ti.com/tool/SMARTRFTRXEBK should have contained a download link to the SW running on the board. I found it via a different google search (http://www.ti.com/lit/zip/swrc219). @ZC: Could you please double check and upload if missing on the product page?  With this SW you can step through the code and see what exactly fails when you get an error message. 

  • David,

    you need the PER test software downloaded to TRXEB.

    Users Guide is here: https://www.ti.com/lit/ug/swru294a/swru294a.pd 

    Software is here: http://www.ti.com/lit/zip/swrc219 

  • I am guessing the problem is in chip_detect.c line 111 of per_test: where it is expecting a 4 instead of a 44 for the C1101. I googled IAR, looks like a development environment. We were hoping for a quick eval of the radios. Is there another developer board you have that is compatible with the C1101 and would work right out of the box? Thanks for pointing me to the software.

    /******************************************************************************   
    * @fn          chipDetectRadio()                                       
    *                                                                                
    * @brief       This function detects if a chip is present on the EM
    *              socket. SPI initialization must be done before this function  
    *              can be called.  
    *              Note: Currently able to detect CC1101, CC110L, CC113L, CC115L, CC2500
    * 
    * input parameters
    *
    * @param       pRadioChipType - pointer to radioChipType_t struct
    *
    * output parameters
    *          
    * @return      2 byte chip type
    */
    static uint16 trxChipDetectRadio(radioChipType_t *pRadioChipType)
    {
      volatile uint8 id;
      volatile uint8 ver;
      volatile uint16 type;
      
      // Relies on automatic POR   
      // Pull CSn low and wait for MISO goes low => clock ready 
      TRXEM_SPI_BEGIN();
      TRXEM_SPI_WAIT_MISO_LOW(id);                             // Wait for MISO Low
      if(id == 0) return CHIP_TYPE_NONE;                       // Return if failed 
      
      TRXEM_SPI_TX(CC1101_READ_BURST | CC1101_PARTNUM_ADDR);   // [7:6] = READ_BURST, [5:0] = part number address 
      TRXEM_SPI_WAIT_DONE();
      TRXEM_SPI_TX(0x00);
      TRXEM_SPI_WAIT_DONE();
      id = TRXEM_SPI_RX();
      
      
      TRXEM_SPI_TX(CC1101_READ_BURST | CC1101_VERSION_ADDR);    // [7:0] = ADDR 
      TRXEM_SPI_WAIT_DONE();
      TRXEM_SPI_TX(0x00);
      TRXEM_SPI_WAIT_DONE();
      ver = TRXEM_SPI_RX();
      TRXEM_SPI_END();
      
      if(id == 0x00 )
      {  
        switch(ver)
        {
        case 0x04:
          type = CHIP_TYPE_CC1101;
          break; 
        case 0x07:
          type = CHIP_TYPE_CC110L;
          break;
        case 0x08:
          type = CHIP_TYPE_CC113L;
          break;
        case 0x09:
          type = CHIP_TYPE_CC115L;
          break;
        default:
          type = CHIP_TYPE_NONE;
        }      
      }
      else if(id == 0x80 )
      {  
        switch(ver)
        {
        case 0x03:
          type = CHIP_TYPE_CC2500;
          break;
        default:
          type = CHIP_TYPE_NONE;
        }
      }
      else
      {
        type = CHIP_TYPE_NONE;
      }
      
      // Populating the global radio device struct if specific radio was detected 
      if(type != CHIP_TYPE_NONE)
      {
        pRadioChipType->id = id;
        pRadioChipType->ver = ver;
        pRadioChipType->deviceName = type;
      }
      
      return type;
    }
    

  • Please let us know if you need anything else.

  • David, look at it differently. Use TRXEB but with different SW. In old E2E posts you can find code that runs with CC1101L (CC110L is a subset of CC1101, relatively easy modify the code to support CC1101) on a MSP430 and CCS. 

    Or search for "cc1101 github" for other platforms.