CC1101 868MHz SPI RF Module – Complete Guide

The CC1101 868MHz SPI RF module is a compact, low-power sub-GHz transceiver widely used in IoT, industrial telemetry, home automation and custom RF networks. The module is based on the CC1101 from Texas Instruments and offers significantly more flexibility than simple ASK/OOK transmitter modules.

In this complete guide we cover:

  • What the CC1101 is
  • Technical specifications
  • Pinout
  • ESP32 wiring
  • ESP-IDF SPI setup
  • Register configuration explained
  • TX/RX workflow
  • RSSI handling
  • EU 868 MHz regulations
  • CC1101 vs SX1276 (LoRa) comparison
  • Practical engineering tips

What is the CC1101?

The CC1101 is a programmable sub-GHz RF transceiver designed for low-power wireless communication in ISM bands:

  • 315 MHz
  • 433 MHz
  • 868 MHz (Europe)
  • 915 MHz (US)

Unlike basic RF modules, the CC1101 includes:

  • Hardware packet handling
  • CRC generation/checking
  • Address filtering
  • RSSI measurement
  • Configurable modulation
  • TX and RX FIFO buffers

It is a true RF transceiver — not just a transmitter or receiver.

Technical Specifications

ParameterValue
Frequency range387–464 MHz / 779–928 MHz
Common EU version868 MHz
InterfaceSPI
Modulation2-FSK, GFSK, MSK, OOK
Data rate0.6 – 600 kbps
Output powerup to +12 dBm
RX sensitivityapprox. -110 dBm
RX current~14 mA
TX current16–30 mA
Sleep mode< 1 µA
Supply voltage3.3V only

⚠️ The CC1101 is not 5V tolerant.

Pinout

Most breakout boards expose the following pins:

PinDescription
VCC3.3V supply
GNDGround
SCKSPI clock
MISOSPI MISO
MOSISPI MOSI
CSNChip select
GDO0Configurable interrupt pin
GDO2Configurable interrupt pin

The GDO pins can signal:

  • Packet sent
  • Packet received
  • Carrier detect
  • FIFO thresholds

These are essential for interrupt-driven designs.

Connecting to an ESP32

Typical wiring using the VSPI bus:

CC1101ESP32
VCC3V3
GNDGND
SCKGPIO18
MISOGPIO19
MOSIGPIO23
CSNGPIO5
GDO0GPIO4

This configuration works well with ESP-IDF default SPI setup.

SPI Initialization (ESP-IDF)

Minimal SPI configuration:

spi_bus_config_t buscfg = {
.miso_io_num = 19,
.mosi_io_num = 23,
.sclk_io_num = 18,
.quadwp_io_num = -1,
.quadhd_io_num = -1
};spi_device_interface_config_t devcfg = {
.clock_speed_hz = 1000000,
.mode = 0,
.spics_io_num = 5,
.queue_size = 3,
};spi_bus_initialize(VSPI_HOST, &buscfg, SPI_DMA_CH_AUTO);
spi_bus_add_device(VSPI_HOST, &devcfg, &cc1101_handle);

The CC1101 supports higher SPI speeds (up to 10 MHz), but 1 MHz is stable during development.

Register Configuration Explained

The CC1101 is fully controlled through configuration registers.

Frequency Registers

  • FREQ2
  • FREQ1
  • FREQ0

Typical values for 868 MHz:

FREQ2 = 0x21
FREQ1 = 0x65
FREQ0 = 0x6A

These values define the RF carrier frequency using the internal frequency synthesizer.

Modulation Configuration

Registers:

  • MDMCFG4
  • MDMCFG3
  • MDMCFG2

These control:

  • Data rate
  • Channel bandwidth
  • Modulation format
  • Sync word handling

Example configuration for:

  • 38.4 kbps
  • 2-FSK
  • CRC enabled

Packet Configuration

Registers:

  • PKTCTRL1
  • PKTCTRL0
  • PKTLEN

Typical setup:

PKTCTRL0 = 0x05   // Variable length + CRC enabled

The CC1101 automatically handles:

  • Preamble
  • Sync word
  • CRC
  • Packet length

This significantly reduces firmware complexity.

Transmit (TX) Flow

Basic transmit sequence:

  1. Set device to IDLE
  2. Flush TX FIFO
  3. Write packet length
  4. Write payload
  5. Send STX strobe
  6. Wait for GDO0 interrupt

Example:

cc1101_strobe(SIDLE);
cc1101_strobe(SFTX);cc1101_write_reg(TXFIFO, length);
cc1101_write_burst(TXFIFO, payload, length);cc1101_strobe(STX);

Using GDO0 as “packet sent” interrupt makes this efficient and non-blocking.

Receive (RX) Flow

  1. Send SRX strobe
  2. Wait for GDO0 interrupt
  3. Read packet length
  4. Read payload
  5. Check CRC status
cc1101_strobe(SRX);// Wait for interruptcc1101_read_reg(RXFIFO, &length);
cc1101_read_burst(RXFIFO, buffer, length);

Interrupt-driven RX avoids polling and improves power efficiency.

RSSI Measurement

The RSSI register provides signal strength information.

Formula:

RSSI_dBm = (RSSI_dec / 2) - RSSI_offset

Typical RSSI offset ≈ 74.

This allows:

  • Link quality estimation
  • Channel scanning
  • Adaptive TX power
  • Smart retry mechanisms

EU 868 MHz Regulations

In Europe, the 868 MHz band is regulated with duty cycle limitations:

  • 1% duty cycle
  • 0.1% in certain sub-bands

This means: If you transmit for 1 second, you must remain silent for 99 seconds (in a 1% band). Always verify local regulations before deployment.

CC1101 vs SX1276 (LoRa)

A common alternative is the SX1276 from Semtech.

Comparison

FeatureCC1101SX1276
ModulationFSK, GFSK, OOKLoRa + FSK
Max Range~1 km5–15 km
Sensitivity~ -110 dBmDown to -148 dBm
Data RateUp to 600 kbpsVery low (LoRa mode)
LatencyLowHigh
Deterministic timingYesNo (LoRa spreading)

When to Choose CC1101

  • Low latency required
  • Higher throughput needed
  • Custom RF protocol
  • Deterministic timing
  • Industrial applications

When to Choose SX1276 (LoRa)

  • Extreme range
  • Battery-powered long-distance sensors
  • Rural telemetry
  • Very low data rate acceptable

Practical Engineering Tips

1. Antenna Is Critical

Quarter-wave antenna for 868 MHz:

≈ 8.6 cm

A poorly tuned antenna reduces range dramatically.

2. Lower Data Rate = Longer Range

Reducing bitrate improves receiver sensitivity.

3. Use Interrupts

Always use GDO0 for:

  • TX complete
  • RX received

Polling wastes CPU cycles and power.

4. Shielding & Layout

  • Keep antenna away from ground planes
  • Keep SPI lines short
  • Decouple VCC properly

RF layout matters.

Conclusion

The CC1101 868MHz SPI RF module remains one of the most versatile sub-GHz solutions for embedded firmware developers.

It offers:

  • Low power consumption
  • Good range
  • High flexibility
  • Full protocol control
  • Deterministic timing

For ESP32 + ESP-IDF developers building custom RF stacks, the CC1101 is still an excellent engineering choice. If you want full control without the complexity of LoRaWAN, the CC1101 gives you exactly that.

error: Content is protected !!
Scroll to Top