SWRA834 May   2025 CC2340R5 , CC2340R5-Q1 , CC2744R7-Q1 , CC2745P10-Q1 , CC2745R10-Q1 , CC2745R7-Q1 , CC2755R10

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. Introduction
  5. Reference Designs
    1. 2.1 LP-EM-CC2340R53
    2. 2.2 LP-EM-CC2340R5
    3. 2.3 LP-EM-CC2340R5-Q1
    4. 2.4 LP-EM-CC2340R5-RGE-4x4-IS24
    5. 2.5 LP-EM-CC2745R10-Q1
  6. Schematic
    1. 3.1 Schematic Overview
      1. 3.1.1 48MHz Crystal
      2. 3.1.2 32.768kHz Crystal
      3. 3.1.3 Filter
      4. 3.1.4 Decoupling Capacitors
      5. 3.1.5 Antenna Components
      6. 3.1.6 RF Shield
    2. 3.2 I/O Pins Drive Strength
    3. 3.3 Bootloader Pins
    4. 3.4 Serial Wire Debug (SWD) Pins
  7. PCB Layout
    1. 4.1 Board Stack-Up
    2. 4.2 LC Filter
    3. 4.3 Decoupling Capacitors
    4. 4.4 Placement of Crystal Load Capacitors
    5. 4.5 Current Return Path
    6. 4.6 DC/DC Regulator
    7. 4.7 Antenna Matching Components
    8. 4.8 Transmission Lines
    9. 4.9 Electromagnetic Simulation
  8. Antenna
  9. Crystal Tuning
    1. 6.1 CC23xx and CC27xx Crystal Oscillators
    2. 6.2 Crystal Selection
    3. 6.3 Tuning the LF Crystal Oscillator
    4. 6.4 Tuning the HF Crystal Oscillator
  10. Optimum Load Impedance
  11. PA Table
  12. Power Supply Configuration
    1. 9.1 Introduction to Power Supply
    2. 9.2 DC/DC Converter Mode
    3. 9.3 Global LDO Mode
  13. 10Board Bring-Up
    1. 10.1 Power On
    2. 10.2 RF Test: SmartRF Studio
    3. 10.3 RF Test: Conducted Measurements
      1. 10.3.1 Sensitivity
      2. 10.3.2 Output Power
    4. 10.4 Hardware Troubleshooting
      1. 10.4.1 No Link: RF Settings
      2. 10.4.2 No Link: Frequency Offset
      3. 10.4.3 Poor Link: Antenna
      4. 10.4.4 Bluetooth Low Energy: Device Does Advertising But Cannot Connect
      5. 10.4.5 Poor Sensitivity: Background Noise
      6. 10.4.6 High Sleep Power Consumption
  14. 11Summary
  15. 12References

Tuning the LF Crystal Oscillator

The frequency of the 32kHz crystal oscillator is set by properly dimensioning the load capacitors relative to the wanted load capacitance, CL, of the crystal. From the crystal, the two capacitors are placed in series. The PCB traces and the pads add some parasitic capacitance. Equation 1 shows how to calculate the total effective capacitance value.

Equation 1. C L   =   C 1 x C 2 C 1 + C 2 + C p a r a s i t i c l o a d   c a p a c i t o r   v a l u e 2 + C p a r a s i t i c

The last simplification requires that C1 and C2 are equal.

The best way to measure the frequency accuracy of the oscillator is to output the 32kHz clock signal on an I/O pin. The frequency can be measured using a frequency counter without affecting the oscillator. The following code snippet outputs the selected 32kHz clock source to DIO19. Only one specific I/O can be used to output the 32kHz clock for CC23xx and CC27xx (see Table 6-1).

/* INCLUDES
*/
#include <ti/drivers/GPIO.h>
#include DeviceFamily_constructPath(inc/hw_types.h)
#include DeviceFamily_constructPath(inc/hw_memmap.h)
#include DeviceFamily_constructPath(inc/hw_ckmd.h)
#include DeviceFamily_constructPath(inc/hw_ioc.h)
#include DeviceFamily_constructPath(inc/hw_pmctl.h)
// ...
int main()
{
// ...

/** Add the following after Board_init();
* Be sure IOID used below is not used by any entries in PIN or
* GPIO tables from the board files.
* The clock source can be switched with constant clockSrc.
*/

uint8_t clockSrc = 0xF; // for LF crystal clock

// drive output low first
GPIO_setConfig(19, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_LOW);

// Configure the IOC.IOC19.PORTCFG MMR to select DTB
HWREG(IOC_BASE + IOC_O_IOC19) &= ~IOC_IOC19_PORTCFG_M;
HWREG(IOC_BASE + IOC_O_IOC19) |= IOC_IOC19_PORTCFG_DTB;

// Make sure the DTB mux selects in IOC (and if required in
// source clock IP) are reset that zero is driven on DTB0.
// ULLSEL mux select (select CKMD)
HWREG(IOC_BASE + IOC_O_DTBCFG) &= ~IOC_DTBCFG_ULLSEL_M;
HWREG(IOC_BASE + IOC_O_DTBCFG) |= 0x1 << IOC_DTBCFG_ULLSEL_S; // 0x1 to route CKMD to DTB0

// Enable IOC.DTBOE.EN0
HWREG(IOC_BASE + IOC_O_DTBOE) &= ~IOC_DTBOE_EN0_M;
HWREG(IOC_BASE + IOC_O_DTBOE) |= IOC_DTBOE_EN0_EN;

// select which clock (CKMD) to output on DTB0 (DTB[0])
HWREG(CKMD_BASE + CKMD_O_DTBCTL) &= ~CKMD_DTBCTL_CLKSEL_M;
HWREG(CKMD_BASE + CKMD_O_DTBCTL) |= (clockSrc) << CKMD_DTBCTL_CLKSEL_S;

// enable DTB output
HWREG(CKMD_BASE + CKMD_O_DTBCTL) &= ~CKMD_DTBCTL_EN_M;
HWREG(CKMD_BASE + CKMD_O_DTBCTL) |= CKMD_DTBCTL_EN;

// ...
}
Table 6-1 I/O for Outputting the 32kHz Clock
CC23xx CC27xx

DIO19

DIO27