Kepler X
リソース
ドキュメント
取扱説明書
ファームウェアの更新方法
レジスタマップ
イベント
第14回MI68に参加したいです
第13回MI68に参加しました
第12回MI68に参加しました
レジスタ情報
ID
REG16
アドレス
$ECB020
短い説明
I2C bus write data
ビットマップ
bit 15-0 : ペリフェラルのレジスタに書き込む値
バイトアクセスした場合:
* bit7-0: 最初の1バイト
ワードアクセスした場合:
* bit15-8: 最初の1バイト
* bit7-0: 次の1バイト
説明
REG16,17,18,19は、Kepler X上のI2Cバス制御用のレジスタで、以下のような役割を持っています。
* REG16: write data
* REG17: set register number
* REG18: bus control
* REG19: read data
● できること
linuxの i2cget, i2cset 相当のことが可能ですが、簡略化のため、データアドレス指定(レジスタ番号指定)付きの書き込み、読み出しのみをサポートしています。
具体的には、以下のコマンドに相当することができるようになっています。
* i2cget -y 0 0xAA 0xdd b
アドレス0xAAのペリフェラルの 0xddレジスタを 1バイト読み出します。
* i2cget -y 0 0xAA 0xdd w
アドレス0xAAのペリフェラルの 0xddレジスタを 2バイト読み出します。
ビッグエンディアンで読み出しますので、最初に送られたバイトが上位(D15-D8)、次に送られたバイトが下位(D7-D0)になります。
* i2cset -y 0 0xAA 0xdd 0x11 b
アドレス0xAAのペリフェラルの 0xddレジスタに 0x11を書き込みます。
* i2cset -y 0 0xAA 0xdd 0x1122 w
アドレス0xAAのペリフェラルの 0xddレジスタに 0x1122を書き込みます。
ビッグエンディアンで書き込みますので、上位バイト(0x11)が最初に送られ、次に下位バイト(0x22)が送られます。
● 読み出し
以下の手順でレジスタの値を読み出すことができます。
* REG17に読み出したいレジスタのアドレスを書き込む
* REG18に読み出し要求を書き込む
* bit9を 1にして read指定
* bit8でレジスタサイズを指定(0: 1byte, 1: 2byte)
* bit6-0には、ペリフェラルのアドレスを指定
* REG18を読み出して、読み出し要求が完了するのを待つ
* bit15が 1の間は busy
* bit14が 1になったらタイムアウトなどのエラーが発生→読み出し失敗
* REG19を読み出して、読み出し結果を取得する
* 1バイトの場合は、REG19の下位バイトに結果が格納される
* 2バイトの場合は、REG19の上位バイトに1バイト目(上位バイト)、下位バイトに2バイト目(下位バイト)が格納される
● 書き込み
以下の手順でレジスタに値を書き込むことができます。
* REG16に書き込みたい値を書き込む
* REG17に書き込みたいレジスタのアドレスを書き込む
* REG18に書き込み要求を書き込む
* bit9を 0にして write指定
* bit8でレジスタサイズを指定(0: 1byte, 1: 2byte)
* bit6-0には、ペリフェラルのアドレスを指定
* REG18を読み出して、書き込み要求が完了するのを待つ
* bit15が 1の間は busy
* bit14が 1になったらタイムアウトなどのエラーが発生→書き込み失敗
以上のように、読み出し時も書き込み時も、レジスタの並び順通りにアクセスすれば良いようになっています。