進めているDACユニットでI2Cを使う関係で独立デバッグ。
I/Oエクスパンダ基板(準備中)
USB DACの製作でI2Cでの通信ルーチンをAVR GCCで書いていたのですがどうも宜しく無い状態なのでI2Cだけを中心としたテストボードを用意しデバイス制御を行って確かめることにしました。
MicrochipからリリースされているI2C通信を使ってやり取りするI/OエクスパンダMCP23017を使ってデバイス制御を行って確認をします。LEDを接続してポートの状態を確認できるようにしています。8bitポートが2組ありますが、片方のポートを出力に、もう片方のポートを入力に設定します。
ポートの状態表示のため出力側にはHC540を介して正論理でLEDが点灯するように、入力側はプルアップを行ってLoの時にLEDが点灯するようにします。入力はタクトスイッチを接続してビット単位でポートの状態を変更できるようにしました。デジットのATMega168を搭載したトレーニングボードと同じ要領ですね。
実際は使わないのですがデバイスの機能を全て利用できるように作り込みしています。
RESETをボード単独でできるようにスイッチを付け、割り込みピンもプルアップをジャンパーピンを介して行い、ジャンパーピンを外せば外部からの入力に対応できるようにしています。割り込みの設定はデフォルトでアクティブLoなためです。また、デバイスアドレスの下位3ビットもショートピンで設定できるようにしました。
I2Cバスのプルアップ抵抗が未実装ですが、抵抗の値は思案中です。抵抗値が大きすぎると浮遊容量が影響して通信時に支障が出ますし、小さくしすぎると今度はバスのドライブ能力に影響が出て、信号をLoまで引っ張れない場合があります。ちゃんと条件から計算すれば良いのですが、そこを端折って(笑)始めは1.5kΩあたりで行おうかと。
PCM1792では読み出しが上手く出来ていないようでしたのでそのあたりを重点的に行う予定です。
単純にプロトコルの間違いかもしれませんが、読み出し時のデータが全てのビットで1になっており、どうもまともなデータが得られていないか読み込み動作ができていないようです。
しばらく、このボードを使ってI2Cの通信について、復習の意味も込めプロトコルも含めて検証を行います。