002 BM8563 データシート要約

# はじめに
M5StickC Plusシリーズなどに使われているRTC ICのデータシートを要約してみました。
誤訳などあるかもしれませんので、参考にされる場合は自己責任でお願いします。

# BM8563データシート 要約

## レジスタ構成

BM8563 には表 1 に示すように、自動インクリメントのアドレス・レジスタを持つ 16 個のレジスタがあります。

表1. レジスタ概要
![BM8563_register_overview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186520/62ff22dc-833c-b27a-13b7-93ef47410130.png)

16本のレジスタはすべてアドレス指定可能な8ビットレジスタとして設計されていますが、すべてのビットが実装されているわけではありません。
* 最初の2つのレジスタ（00Hと01H）はコントロールとステータスレジスタとして使用されます。
* レジスタ02hから08hはアラームの条件を定義するレジスタとして使用されます。
* レジスタ0DhはCLKOUT出力周波数を制御する。
* レジスタ0Eh/0Fhはそれぞれタイマーコントロール、タイマーレジスタである。

秒、分、時、日、月、年、および分アラーム、時アラーム、日アラームレジスタはすべて BCD フォーマットでコード化されています。
曜日と曜日アラームはBCDフォーマットでコード化されていません。

## Control/Status1 レジスタ

`Control/Status1`レジスタの`TEST`と`TESTC`ビットは`0`に設定されなければなりません。
これらのビットが`1`に設定されると、デバイスは製造業者のテスト・モードに入ります。（表2を参照）


表 2. Control/Status1（アドレス 00H） レジスタ
| Bit         | Symbol | Description |
|:-----------:|:------:|:------------|
| 7           | TEST   | TEST=0:normal mode; TEST=1: test mode for manufacturer  |
| 5           | STOP   | `STOP=0`:RTCクロック動作  `STOP=1`:全てのRTC分周チェインフリップフロップが非同期で`0`にセットされRTCクロックは停止(32.768kHzの`CLKOUT`は使用可能)。|
| 4           | TESTC  | TESTC=0: normal operation; TESTC=1: test mode for manufacturer  |
| 6,4,2 to 0  |        | Default value is logic 0  |

## Control/Status2 レジスタ
TF/AFビット：アラームが発生すると`AF`は`1`に設定される。同様にタイマのカウントダウンが終了すると、`TF`は`1` に設定されます。これらのビットはソフトウェアで上書きされるまで、その値を保持します。

もしアプリケーションにおいてタイマとアラーム割込みの両方が要求される場合、割込みソースはこれらのビットを読むことで判別されます。

クリア中に1つのフラグが上書きされるのを防ぐため、書き込みアクセス中に別の論理ANDが実行されます

TIE/AIEビット：これらのビットは、`TF`または`AF`が発生すると割り込みを発生させます。
割り込みは論理和となります。

表3.Control/Status2レジスタ

| Bit         | Symbol | Description |
|:-----------:|:------:|:------------|
| 7 to 5      |        | Default value is logic 0  |
| 4           | TI/TP  | `TI/TP=0`：INTはTFがアクティブなときにアクティブになる（TIE の状態に従う）。 `TI/TP=1`：INTパルスは表5に従って有効になる。(TIEの状況による); AFとAIEがアクティブであれば、INTは永久にアクティブであることに注意すること。 |
| 3           | AF     | `AF=0`：読出：アラームフラグ無効、書込：アラームフラグ解除。`AF=1`：読出：アラームフラグ有効  |
| 2           | TF     | `TF=0`：読出：タイマフラグ無効、書込：タイマフラグ解除。`TF=1`：読出：タイマフラグ有効  |
| 1           | AIE    | `AIE=0`：アラーム割込み無効 `AIE=1`：アラーム割込み有効 |
| 0           | TIE    | `TIE=0`：タイマー割込み無効 `TIE=1`：タイマー割込み有効 |

表4.INT機能(Bit TI/TP=1)
|               | /INT 期間 |         |
|:-------------:|:-----------:|:-------:|
| ソースクロック | n=2         | N>1     |
| 4096          | 1/8192      | 1/4096  |
| 64            | 1/128       | 1/64    |
| 1             | 1/64        | 1/64    |
| 1/60          | 1/64        | 1/64    |

## アラーム機能
各アラームレジスタの最上位ビット(AEビット=アラームイネーブル)をクリアすることにより、対応するアラームが有効になります。
これらのアラームレジスタのどれか1つが有効な値(曜日/日/時/分)でロードされると、その情報は現在の値(曜日/日/時/分)と比較されます。
現在値が有効なアラーム設定のいずれかと一致すると、アラームフラグ(AF)がセットされます。
AFの発生を割込みピン(INT)の出力に使用できます。
AFはソフトウェアによってのみ消去可能です。
AFがクリアされると、時刻が再びアラーム条件と一致するようにインクリメントされたときにのみ、再び設定されます。
AFがクリアされた後、再度アラーム条件と現在値が一致すると、再びAFがセットされます。
このようにして、1分間に1回から1週間に1回までアラームを発生させることができます。（表1参照）。


## タイマー機能
8bitカウントダウンタイマは`タイマコントロールレジスタ(0Eh)`によって制御されます。(表1参照）
タイマコントロールレジスタでは、タイマ用の4種類のクロック周波数(1/64Hz, 1Hz, 64Hz, 4096Hz)を設定と、
各タイマー機能の有効・無効の設定を行います。
`TEビット`が`0`にセットされるとタイマ機能は無効となり、`1`にセットされると有効となります。
`TD1/TD0ビット`ではタイマ用のクロック周波数を設定します。もしタイマ機能を使用しない場合は、消費電力の削減のために`1/60Hz`設定することを推奨します。

タイマのカウントダウンはソフトウェア読み出しされた8bitの値からスタートします。
カウントダウンが終了すると、タイマフラグ(TF)がセットされます。
TFフラグは割込みの生成(INT)に用いることが可能です。

割込みはカウントダウン期間ごとにパルス信号として生成されます。
TFはソフトウェアによってのクリア可能です。
TI/TP ビットは割り込みの発生条件を制御するために使用されます。
タイマを読み出すと、現在のカウントダウン値が返ってきます。


表5. タイマ周波数選択

| TD1 | TD0 | タイマ　クロック周波数(Hz) |
|:---:|:---:|:--------------------------------:|
| 0   | 0   | 4096                             |
| 0   | 1   | 64                               |
| 1   | 0   | 1                                |
| 1   | 1   | 1/60                             |


## クロック出力
CLKOUTピンから任意の矩形波を出力することが可能です。
CLKOUTピンの設定にはCLKOUTコントロールレジスタを使用します。
CLKOUTコントロールレジスタのFEbitは、矩形波出力の有効化ビットです。
`0`に設定されると矩形波出力が有効化され、`1`に設定されるとCLKOUT出力は禁止されます。
CLKOUTピンはオープンドレイン出力ポートとなっており、電源オン時には有効化(0)出力となっています。
無効化されるとハイインピーダンス状態になります。
矩形波出力の周波数はFD0/FD1ビットの値によって決まります。
FD0/FD1ビットは矩形波出力の周波数を制御します。
表6にFDビットによって設定可能な矩形波出力の周波数一覧を示します。

表6.CLKOUT周波数選択
| FD1 | FD0 | fclockout |
|:-:|:-:|:-:|
| 0  | 0  | 32.768kHz  |
| 0  | 1  | 1024Hz  |
| 1  | 0  | 32Hz  |
| 1  | 1  | 1Hz  |


## Reset

## Voltage-Low Detector and Clock Surveillance