シリアル通信は、データを送受信するための線を1本、または2本使用して、データを1ビットずつ連続的に送受信する通信方式です。
RL78/G14マイコンでは、シリアル通信として、3線式シリアル、UART、簡易I2C、LINが使用できる シリアル・アレイ・ユニット機能と、シリアル・インタフェース IICAがあります。
今回は、このうち、シリアル・インタフェース IICAを使用したレジスタの設定について解説していきます。
シリアル・インタフェース IICA機能の説明
シリアル・インタフェースIICAは、I2C通信を行うための機能です。
シリアル通信を行わないときに使用する動作停止モードと、シリアル・クロック(SCLAn)とシリアル・データ・バス(SDAAn)の2本の線により、複数のデバイスと8ビットのデータ転送を行うI2Cバス・モードと、マイコンのSTOPモード状態で、マスタからの拡張コード、または、自局アドレスを受信した場合に、割り込み要求を行い、STOPモードを解除することができるウェイクアップ・モードがあります。
IICAシフト・レジスタ0(IICA0)
8ビットのシリアルデータを8ビットのパラレルデータに変換、もしくは、8ビットのパラレルデータを8ビットのシリアルデータに変換するレジスタです。
送信と受信時に使用されます。
このレジスタに、書き込みを行ったり、読み出しすることによって、送受信動作開始します。
リセット時は、0 になります。
スレーブ・アドレス・レジスタ0(SVA0)
スレーブとして使用する場合に、自局アドレスの7ビットを格納するレジスタです。
周辺イネーブル・レジスタ0(PER0)
タイマや、A/Dコンバータでも紹介しましたが、今回は、シリアル・インタフェース IICA機能の入力クロックを供給するかしないかを設定します。
PER0のビット4(IICA0ENレジスタ)を 1 にすることにより、シリアル・インタフェース IICA機能のレジスタを設定できるようになります。
IICAコントロール・レジスタ00(IICCTL00)
I2Cの動作許可、ウェイトタイミングの設定などの動作を設定するレジスタです。
I2Cの動作許可
IICCTL00のビット7(IICE0レジスタ)を 1 に設定することにより、I2C通信動作を開始し、0 で動作停止します。
通信退避
IICCTL00のビット6(LREL0レジスタ) を 1 に設定することにより、現在行っている通信から退避し、次の通信待機状態になります。通信から退避することにより、バスを解放します。
ウエイト解除
IICCTL00のビット5(WREL0レジスタ)を 1 に設定することにより、ウエイトを解除します。
ウエイトによって、マスタまたはスレーブがデータの送受信の準備中であることを相手側に通知します。ウエイト解除することによって、次の転送を開始できます。
ストップ・コンディション検出による割り込み要求発生の許可/禁止
ストップ・コンディションは、マスタがスレーブに対して転送を終了したときに、ストップ・コンディションになります。スレーブの場合は、ストップ・コンディションを検出することができます。
このストップ・コンディションを検出すると、INTIICA0の割り込みが発生させることができます。
0:割り込み禁止
1:割り込み許可
ウエイトおよび割り込み要求発生の制御
ウエイトと割り込みのタイミングを決めます。
0:8クロック目の立下りで、割り込み発生とウエイトする
0:9クロック目の立下りで、割り込み発生とウエイトする
アクノリッジ制御
受信側がデータを受信するごとに、アクノリッジ(ACK)を返します。
送信側はアクノリッジ(ACK)を受信すると、受信側に正しく送信されたものとして処理を続けます。
アクノリッジを許可にすると、データを受信するごとにアクノリッジが生成可能な状態になります。
0:アクノリッジ禁止
1:アクノリッジ許可
スタート・コンディション・トリガ
SCLA0端子がハイ・レベルのときに、SDAA0端子がハイ・レベルからロウ・レベルに変化するとスタート・コンディションとなります。
マスタがスレーブに対してシリアル転送を開始するときに生成する信号です。スレーブとして使用する場合は、スタート・コンディションを検出できます。
0:スタート・コンディションを生成しない
1:スタート・コンディションを生成する
ストップ・コンディション・トリガ
SCLAn 端子がハイ・レベルのときに、SDAAn 端子がロウ・レベルからハイ・レベルに変化すると、ストップ・コンディションとなります。
ストップ・コンディションは、マスタがスレーブに対してシリアル転送が終了したときに生成します。スレーブとして使用する場合は、ストップ・コンディションを検出できます。
0:ストップ・コンディションを生成しない
1:ストップ・コンディションを生成する
IICAステータス・レジスタ0(IICS0)
I2Cのステータスを記憶しているレジスタです。
マスタ状態確認フラグ
0:スレーブ状態または通信待機状態
1:マスタ通信状態
アービトレーション負け検出
0:アービトレーションが起こっていない状態、または、アービトレーションに勝った状態
1:アービトレーションに負けた状態
拡張コード受信検出
0:拡張コードを受信していない
1:拡張コードを受信している
アドレス一致検出
0:アドレスが一致していない
1:アドレスが一致している
送信/受信状態検出
0:受信状態
1:送信状態
アクノリッジ(ACK)検出
0:アクノリッジを検出していない
1:アクノリッジを検出している
スタート・コンディション検出
0:スタート・コンディションを検出していない
1:スタート・コンディションを検出している
ストップ・コンディション検出
0:ストップ・コンディションを検出していない
1:ストップ・コンディションを検出している
IICAフラグ・レジスタ0(IICF0)
I2Cの動作モードの設定と、I2Cバスの状態を表すレジスタです。
STT0クリア・フラグ
0:スタート・コンディション発行
1:スタート・コンディション発行できず、STT0フラグ・クリア
I2Cバス状態フラグ
0:バス解放状態
1:バス通信状態
初期スタート許可トリガ
0:動作許可後、ストップ・コンディションの検出により、スタート・コンディションを生成許可
1:動作許可後、ストップ・コンディションを検出せずに、スタート・コンディションを生成許可
通信予約機能禁止ビット
0:通信予約許可
1:通信予約禁止
IICAコントロール・レジスタ01(IICCTL01)
I2Cの動作モードの設定、SCLA0、SDAA0端子状態を検出するためのレジスタです。
アドレス一致ウエイク・アップの制御
0:STOPモード状態時のアドレス一致ウエイク・アップ機能動作停止
1:STOPモード状態時のアドレス一致ウエイク・アップ機能動作許可
SCLA0端子のレベル検出
0:SCLA0端子がロウ・レベルであることを検出
1:SCLA0端子がハイ・レベルであることを検出
SDAA0端子のレベル検出
0:SDAA0端子がロウ・レベルであることを検出
1:SDAA0端子がハイ・レベルであることを検出
動作モードの切り替え
0:標準モードで動作(最大転送レート:100 kbps)
1:ファースト・モード(最大転送レート:400 kbps)、または、ファースト・モード・プラス(最大転送レート:1 Mbps)で動作
デジタル・フィルタの動作の制御
0:デジタル・フィルタ・オフ
1:デジタル・フィルタ・オン
動作クロック(fMCK)の制御
0:fCLKを選択( 1MHz ≦ fCLK ≦ 20MHz )
1:fCLK/2を選択( 20MHz < fCLK )
IICAロウ・レベル幅設定レジスタ0(IICWL0)
シリアル・インタフェースIICAが、出力するSCLA0端子信号のロウ・レベル幅(tLOW) とSDAA0端子信号を制御するレジスタです。
IICAハイ・レベル幅設定レジスタ0(IICWH0)
シリアル・インタフェースIICAが、出力するSCLA0端子信号のハイ・レベル幅とSDAA0端子信号を制御するレジスタです。
シリアル・インタフェース IICA機能のレジスタについては以上です。