STマイクロエレクトロクス(以下、ST)の汎用32ビットマイコン「STM32F405シリーズ*2)」では、RTCでBCDが使用されています。
RTCで使われている秒、分、時(12時間または24時間形式)、曜日、日、月、年を示すレジスタはBCDで表現されます。
図2に、STM32F405シリーズのRTC時刻レジスタ(RTC_TR)の仕様をリファレンスマニュアル*3)から抜粋しました。
各ビットはAM/PM、時、分、秒を表します。時刻を表すビットは、ビット16からビット21の6ビットです。ビット16からビット19の4ビットが1の位を表し、ビット20からビット21が10の位を表します。時刻の場合、10の位は0から2までしかないので、2ビットで十分です。
分を表すビットは、ビット8からビット14の7ビットです。ビット8からビット11の4ビットが1の位を表し、ビット12からビット14が10の位を表します。秒を表すビットは、ビット0からビット6の7ビットです。ビット0からビット3の4ビットが1の位を表し、ビット4からビット6が10の位を表します。分と秒は最大値が59です。そのため10の位は5まで表現できれば良いので、3ビットで十分です。
ユーザーは、RTC_TRを32ビットで読み出し、AM/PM、時、分、秒に該当するビットを切り出します。時、分、秒のビットはBCDになっていますので、外部に表示する際は10進数として扱うことができ、ユーザーが変換する必要はありません。曜日、日、月、年もBCDなので、同様にそのまま10進数として扱えます。
これにより、秒、分、時、のレジスタ値を10進数に変換するソフトウェアの負荷を軽減できます。
Copyright © ITmedia, Inc. All Rights Reserved.