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.

CC1101: Device ID read out as 0x1F, different from the specification.

Part Number: CC1101
Other Parts Discussed in Thread: CC430F5137

Although two chip is not popular again, I am trying to connect CC1101 to mbed micro. And I shared my project here.well. The main purpose is trying to build a generic framework for IoT Gateway with Linux box, while leverage USB as standard interfaces to all kinds of IoT connectivities, with plug and play, auto running for TD/FD/SD/Modulation division, smooth scaling, And CC1101 is selected because it was de-facto Sub-1GHz connectivites. Although TI offers many combi solutions, I prefer to move complexities to software running in host, rather in firmware.

According to specification, the registers below 0x30 can be read/written one by one, the registers located in upper address beyond 0x30 should be read only in a burst. And command strobe can be viewed as single byte instruction to the device.

The current problem is the PARTNUM and VERSION read result is 0x00 and 0x1F, followed many 0x1F. But PARTNUM/VERSION are not identical with datasheet. I have no idea if it is correct or not ? I have other tools like CC430F5137, but it doesn't reveal the SPI bus to external world.

I will use another Arduino board to test the CC1101, since Arduino driver is fully tested already. But any orientation is helpful.

  • Hi

    The registers below 0x30 can be read and written but in single mode and burst mode, but for the status register, address 0x30 or higher, the burst bit must be set. For these register the bust bit means that you are accessing status registers, and not that you are doing burst access, so you must send the address for both registers you want to read.

    That means that if you want to read both PARTNUM and VERSION without pulling CSn high in-between reads you should send the following on MOSI:

    0xF0, 0x00, 0xF1, 0x00 (Read status register 0x30 and status register 0x31. The 0x00 is dummy bytes clocked out from the MCU to generate a clock for the register values returned from CC1101)

    The chip will then return the following on MISO:

    0x00, 0x00, 0x00, 0x04

    Byte 1 and 3 are the status bytes retuned when the address is sent on the SPI. The status indicates that the chip is in IDLE and that the there are no bytes in the RX FIFO. Byte 2 and 4 are PARTNUM and VERSION. On CC1101, PARTNUM will be 0x00 and VERSION will return 0x04 (latest).

    BR Siri