C言語

シリアル・インタフェース IICA機能のレジスタの説明

シリアル通信は、データを送受信するための線を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機能のレジスタについては以上です。

-C言語