開発のヒント

リセット、クロック、電源制御

STM32WB5MMGモジュールのLSE周波数について その2

STM32WB5MMGは、2.4GHz Bluetooth Low Energyに対応したSTM32WBシリーズの工事設計認証取得済みモジュール品として提供されています。STM32WB5MMGモジュールはBluetooth Low Energyデバイスとして動かすために必要な、アンテナを含むすべての機能と部品を内蔵しており、外部の周辺回路として必要なものは基本電源だけです。

STM32のアプリケーションでは、時間軸を制御するために内蔵のRTCを使いますが、STM32WB5MMGのRTCのリファレンス·クロックは、以下の3つ中から選択して利用可能です。

 1. LSI
 2. HSE / 32
 3. LSE

今回ご紹介する注意点は、この3つ目の、内蔵LSEに関する周波数、ドライブ設定、そしてBluetoothスタックのイニシャライズです。
基本的に、STM32CubeWBパッケージに含まれるHAL/LLドライバ、ミドルウェアを使っていただき、プロジェクト·オプション内で”STM32WB5Mxx”をdefineすることで、適切な設定になるように調整されます。
STM32CubeWBに含まれるHAL/LLドライバやミドルウェアを使わない場合、以下の点にご注意ください。

LSEの周波数
通常STM32シリーズのRTCでLSEをリファレンス·クロックとして選択する場合、32.768kHzのクリスタルを使うことが一般的ですが、STM32WB5MMGに内蔵しているLSEクリスタルの周波数は、32.768kHzではありません!
STM32WB5MMGに内蔵されているLSEの周波数は32.774KHzです。
LSE周波数が32.774kHzであることを考慮してプログラムの作成をする必要がありますので、ご注意ください。

LSEのドライブ設定
LSEを使う際、LSEのドライブ設定を適切に選ばないと、正しい周波数で動作しなかったり、最悪の場合は全くクロックを生成することができません。
STM32WB5MMGに内蔵のLSEクリスタルのドライブ設定は、RCCバックアップ·ドメイン制御レジスタ(RCC_BDCR)のLSE オシレータのドライブ能力ビット(LSEDRV[1:0])をb10(Medium High Drive Capability)に設定します。

Bluetoothスタックのイニシャライズ
STM32WBのBluetooth Low Energyの機能を使う場合、RTCを使ってRFのBluetoothスタックのイニシャライズ関数(SHCI_C2_BLE_Init)のパラメータに、SHCI_C2_Ble_Init_Cmd_Packet_t構造体を使った変数を渡しますが、その構造体の中の “uint8_t LsSource” で宣言する値のbit1を1にする必要があります。
なお、同じモジュール製品であるSTM32WB1MMCや、STM32WBA5MMGには当てはまりませんので、ご注意ください。

過去の開発のヒントはこちら