ST67W611M1 32.768 kHz and low power operation

back to main page

1. Introduction

Radio protocols need a low frequency clock, usually a 32.768 kHz, to enable the low power application scenarios.

The ST67W611M1 does not integrate a 32.768 kHz crystal because this would increase the BOM that may not be necessary for some applications. Instead, it embeds an RC oscillator which generates this frequency. The low accuracy (± 5%) of this RC oscillator may however be insufficient to enable some low-power modes or reach the expected low power performance. This is the case for example to enable low power Bluetooth® LE or to reach the desired performances for low power Bluetooth® LE and Wi-Fi where an accurate low frequency clock is mandatory. Alternatives are available and described below.

2. 32.768 kHz sources

2.1. Option 1 - Internal RC oscillator

This configuration, described in the introduction, is the default configuration of the X-NUCLEO-67W61M1 board A04 revision and the associated X-CUBE-ST67W61 software 1.0.0 release. As explained, it is necessary to select one of following options if low power Bluetooth® LE is targeted.

2.2. Option 2 - Crystal on the motherboard

It is possible to replace the default RC oscillator by a 32.768 kHz crystal on the motherboard. The crystal will be connected to ST67W611M1 XTAL32K_IN (14) and XTLA32K_OUT (13) pins. The ST67W611M1 integrates matched capacitances with an equivalent capacitance value of 8 pF capacitances. Adding load capacitances on the board may therefore be unnecessary but it is advised to provision them on the board to match with the selected crystal.

A 32.768 kHz crystal is already present on the X-NUCLEO-67W61M1 board A04 revision. To select it, apply the following hardware changes:

  • Fit SB37 and SB38.
  • Unfit SB56 and SB57.

The X-CUBE-ST67W61 1.0.0 software projects must be recompiled with this clock source option selected. Refer to the software documentation for more details.

2.3. Option 3 - Single-ended clock from the host

It is also possible to replace the RC oscillator by a 32.768 kHz single-ended clock coming from the host. In this case it should be fed to the ST67W611M1 through XTAL32K_OUT (13) pin.

The X-NUCLEO-67W61M1 board A04 revision does not require any modification to enable this configuration and, such a clock, can be fed through connector CN8.2. When associated with a NUCLEO-U575ZI-Q board, the X-CUBE-ST67W61 software projects must be recompiled to enable the 32.768 kHz clock generation and route it on the STM32U5 PA2 pin. These changes are described in the next section. The customer is responsible for analyzing the case of other NUCLEO boards.

3. 32.768 kHz hardware implementation

  • When the internal RC oscillator is used, both XTAL32K_IN (14) and XTLA32K_OUT (13) pins must be left open.
  • When an on-board crystal is used, it must be connected to XTAL32K_IN (14) and XTLA32K_OUT (13) pins. Load capacitance must be provisioned in case the integrated 8 pF equivalent capacitance is not sufficient. The crystal must be placed as close as possible to the module pins and shielded by ground planes to prevent long traces that may be affected by external interference. Also, it is advised to avoid routing high-speed signals or sensitive power below the crystal.
  • When an external single-ended clock is connected to XTLA32K_OUT (13) pin, it must have a 3.3 V voltage swing and routed with a proper shielding.

4. 32.768 kHz clock activation on the NUCLEO-U575ZI-Q board

All the projects in the X-CUBE-ST67W61 1.0.0 release include an STM32CubeMX .ioc project. It is possible to enable the STM32U5 32.768 kHz clock and output it on PA2 pin of any project by editing the corresponding .ioc project. The same can be achieved by applying the changes directly to the main.c file of the desired project:

  • In function SystemClock_Config(), add the code below at the end of the function:

/** LSCO configuration

*/

HAL_RCCEx_EnableLSCO(RCC_LSCOSOURCE_LSE);

  • In function MX_GPIO_Init(), add the code below:

/* Configure GPIO pin: PA2 */

GPIO_InitStruct.Pin = GPIO_PIN_2;

GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;

GPIO_InitStruct.Pull = GPIO_NOPULL;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

As SB57 is kept fitted, it is important to make sure all STM32U5 unused GPIOs are configured as input analog pins.

The X-CUBE-ST67W61 projects must also be modified to select this external clock option. Refer to the software documentation for more details.