Skip to content

wireless/cc1101: Make SPI burst and single frequencies configurable#18532

Merged
simbit18 merged 1 commit intoapache:masterfrom
AuroraRAS:kconf1101
Mar 12, 2026
Merged

wireless/cc1101: Make SPI burst and single frequencies configurable#18532
simbit18 merged 1 commit intoapache:masterfrom
AuroraRAS:kconf1101

Conversation

@AuroraRAS
Copy link
Contributor

Summary

This PR makes the SPI communication frequencies for the CC1101 wireless driver configurable via Kconfig.

Previously, CC1101_SPIFREQ_BURST and CC1101_SPIFREQ_SINGLE were hardcoded to 6.5 MHz and 9.0 MHz in drivers/wireless/cc1101.c. While these defaults work well for many typical setups, they can cause stability issues on sub-optimal hardware. Platforms with higher routing capacitance, long trace lines, or those that utilize internal GPIO switching matrices (such as the ESP32) can severely degrade SPI signal integrity, causing the CC1101 driver initialization to fail.

This change introduces CONFIG_CC1101_SPIFREQ_BURST and CONFIG_CC1101_SPIFREQ_SINGLE into drivers/wireless/Kconfig and updates the C source file to use these definitions. The original hardcoded values are preserved as the fallback defaults to ensure backward compatibility for existing users.

Impact

  • Build: Adds CONFIG_CC1101_SPIFREQ_BURST and CONFIG_CC1101_SPIFREQ_SINGLE to the configuration menu under the CC1101 driver settings.
  • Runtime: No change to the default runtime behavior. If users modify the values in make menuconfig, the SPI clock speed during CC1101 access will adjust accordingly.
  • Hardware/Architecture: Architecture-independent. Applies to any hardware utilizing the CC1101 driver, especially beneficial for platforms with restrictive IO constraints.
  • API: None.

Testing

  • Build Testing: Verified that NuttX builds successfully with the default configuration (falling back to the standard 6.5 MHz / 9.0 MHz) and when custom frequencies are specified.
  • Hardware Testing: Tested on a platform utilizing an internal GPIO matrix (ESP32) where routing capacitance and signal degradation prevented the CC1101 from loading at the default 6.5 MHz / 9.0 MHz speeds. Configured both SPI frequencies to 4.0 MHz via menuconfig, which successfully resolved the signal integrity issues and allowed the CC1101 to initialize and function correctly.

This patch introduces CONFIG_CC1101_SPIFREQ_BURST and
CONFIG_CC1101_SPIFREQ_SINGLE to Kconfig, allowing users to override
the default SPI frequencies for the CC1101 wireless driver.

Previously, these values were hardcoded to 6.5 MHz and 9.0 MHz
respectively. While these are safe defaults for many setups, specific
hardware designs, high routing capacitance, or platforms utilizing
internal GPIO switching matrices (such as the ESP32) can suffer from
signal integrity degradation at these speeds. By exposing these to
Kconfig, users can easily adjust the clock speeds to match their
hardware capabilities without modifying the core driver source.

Impact:
- Build: Adds two new Kconfig options under WL_CC1101.
- Runtime: Retains 6.5 MHz / 9.0 MHz defaults. Behavior only changes
  if overridden via menuconfig.

Testing:
- Built with default values and custom Kconfig overrides.
- Hardware Testing: Tested on a sub-optimal platform utilizing an
  internal GPIO matrix (ESP32). The CC1101 failed to load at the
  default 6.5/9.0 MHz due to signal integrity issues. Downclocking
  the frequencies to 4.0 MHz via Kconfig successfully restored
  signal integrity and allowed the driver to initialize and operate
  normally.

Signed-off-by: Chip L. <chplee@gmail.com>
@github-actions github-actions bot added Area: Drivers Drivers issues Size: S The size of the change in this PR is small labels Mar 12, 2026
@simbit18 simbit18 merged commit 4aca170 into apache:master Mar 12, 2026
40 checks passed
@AuroraRAS AuroraRAS deleted the kconf1101 branch March 12, 2026 13:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area: Drivers Drivers issues Size: S The size of the change in this PR is small

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants