【小ネタ】STM32F0シリーズでユニークな情報、ドライバ情報などを取得する方法

使用しているSTM32マイコンにユニークな情報がないか調査したところ便利なドライバを見つけましたのでご紹介します。
2019.09.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちはCX事業本部のさかじです。 使用しているSTM32マイコンにユニークな情報がないか調査したところ便利なドライバを見つけましたのでご紹介します。

はじめに

STM32F0のHALと低レイヤードライバには各種バージョンを知る方法があります。プログラムを書き込んだ後自分で確認できる方法を確率しておくと便利です。
私は以前ご紹介したシリアルポートで対話式で情報を取得する方法をよく使用します。
[小ネタ]あると便利ESP32とのシリアル通信

自分が作成したソフトバージョンを出力する方法はこちらでも良いですが、STM32CubeにはHALのバージョン等を取得する方法がありますので、こちらの情報も取得できる様にしておくと良いでしょう。

HALのバージョンを知りたい場合

uint32_t HAL_GetHalVersion (void )

  • Function description This method returns the HAL revision.
  • Return values version: : 0xXYZR (8bits for each decimal, R for RC)

マイコンのレビジョン、デバイスIDを知りたい場合

マイコンもバグなど修正が行われます。現在使用しているバージョンを知りたい場合に使用すると良いでしょう。エラッタが発行されていて使用中のマイコンのレビジョンがわかると、対象かどうか判定できることがあります。

uint32_t HAL_GetREVID (void )

  • Function description Returns the device revision identifier.
  • Return values Device: revision identifier

uint32_t HAL_GetDEVID (void )

  • Function description Returns the device identifier.
  • Return values Device: identifier

ユニークデバイスIDを知りたい場合

MACアドレスの様にユニークなIDを取得したい場合があります、STM32には96bitのユニークデバイスIDが ありますので、そのデータを使用すると良いでしょう。

uint32_t HAL_GetUIDw0 (void )

  • Function description Returns first word of the unique device identifier (UID based on 96 bits)
  • Return values Device: identifier

uint32_t HAL_GetUIDw1 (void )

  • Function description Returns second word of the unique device identifier (UID based on 96 bits)
  • Return values Device: identifier

uint32_t HAL_GetUIDw2 (void )

  • Function description Returns third word of the unique device identifier (UID based on 96 bits)
  • Return values Device: identifier

参考サイト

Description of STM32F0 HAL and low-layer drivers

最後に

プログラムを書き込むとバージョン情報を取得しにくいのが組み込みプログラムです。直接ハードにアクセスすることでわかる情報ですが、ドライバを使用することで簡単に取得することができます。起動時のメッセージや問い合わせに応答する様にプログラムを作ることで今発生している問題が、既知の問題か、新しい問題の場合バージョンアップなどで解決するかなど判断がつくことがあると思います。判断の為にも、情報取得の機能を追加しておくと良いと思います。
使用しているのははSTM32F0シリーズですが他のシリーズも同等の機能があると思いますので調べてみてください。