BASIC〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜[第123回]●PICUSBIO−03(72)SPIモード(4)DAコンバータMCP4911PICのSPIインターフェースを試してみるためにDAコンバータMCP4911を使ってみることにしました。MCP4911はSPIインターフェースでデジタルデータをシリアル送信することで動作するDAコンバータです。DAコンバータかということなのですが、それには理由があります。PICUSBIO−03の説明を続けています。途中からはPIC18F13K50の機能の説明になってしまっています。PICUSBIO−03はPIC18F13K50を単体でプリント基板に実装しただけと言ってもよいくらいのボードですからPICUSBIO−03の操作説明をしようとしますと結局のところそういうことになってしまいます。実のところ私としてもここまでのことになってしまうとは思ってもみなかったことなのですが、ここまできてしまったらもう乗りかかった船です。最後まで行くしかありませぬ。PIC18F13K50はADコンバータを内蔵しています。いずれはそのADコンバータについても動作確認をすることになります。その動作テストのときにDAコンバータがあれば都合がいいじゃないかと考えました。それでローコストで使い勝手のいいDAコンバータを捜していてMCP4911を見つけました。確認してみましたところインターフェースはSPIです。何かのデバイスでSPIの動作テストをしてみなければならないと考えていましたからこれはまさに一石二鳥のデバイスです。いうことでSPI通信のテストを兼ねてMCP4911を使ってみることにした次第です。SheetMCP4911は単電源(+5V)で動作する10ビットのDAコンバータです。下はMCP4911のブロック図です。Sheetもうこれ以上簡単にはできないだろうと思えるくらい実にシンプルな8pinのICです。PSI端子はCSとSDIとSCKの3本です。MCP4911にはホストからデジタルデータを送るだけでMCP4911からはデータの送信は行ないませんからSDO端子はありません。VrefにVdd(+5V)を接続することで0Vから+5VまでのRail−to−Rail出力が得られます。下はMCP49XXWRITEコマンドです。MCP49XXはビット数によって12ビット、10ビット、8ビットの3種があります。MCP4911は10ビットDAコンバータです(REGISTER5−2)。SheetMCP4911に送信するコマンドはこのWRITEコマンドだけです。WRITEコマンドは16ビットです。SPIの送信バッファは8ビットですから16ビットを8ビット2回に分けて送ります。最初の1バイトはコマンド部の4ビット+データの上位4ビットです。次の1バイトはデータの下位6ビット+ダミー2ビットです。コマンド部の各ビットは以下の値にします。bit15=0bit14=0bit13=1上のVoutの式はMCP4921(12bitDA)の場合です。MCP4911(10bitDA)の場合は下の式になります。D=0〜1023bit12=1MCP4911のSPI信号波形です。SheetSCKのところ(右端)にMode1,1(破線)とMode0,0(実線)と書いてあります。クロックの↑のときにデータが読み込まれます。モードによってクロックの極性が逆になりますがどちらのモードでもクロックがLからHになるときにデータが読み込まれることを示しています。下は前回お見せしたSPIのマスターモードの波形図です。Sheetこの図で見るとクロックがLからHになるときにSDOからの出力データの各ビットの真ん中あたりが来るのは上から2番目(CKP=1、CKE=0)と3番目(CKP=0、CKE=1)です。下は前回整理したSPIのMODEです。クロックはアクティブL(負極性)、クロックがH→LのときデータOUTこれにあてはめてみますとMODE3(MODE1,1)がCKP=1、CKE=0でMODE0(MODE0,0)がCKP=0、CKE=1になります。MCP4911のSPI信号波形図でもMode1,1(破線)とMode0,0(実線)と書いてあります。これならなんとかなりそうです。MCP4911の準備です。適当なジャノ目基板に組み付けました。PICUSBIO−03との接続には16pinフラットケーブルコネクタを使います。下はPICUSBIO−03と接続したときの全体の回路図です。PICUSBIO−03とMPC4911の接続には16pinフラットケーブルコネクタを使いますがMCP4911の側で使うのはVccとGNDのほかはCSとSCKとSDIの合計5本のラインのみです。MCP4911のCSにはRC0を使います。これがSSに相当します。マスターモードではSS出力は汎用I/Oポートをそのまま使います。どの端子をSSとするかについては(SSを使うか使わないかを含めて)SPIのマスターモードでは任意です。今回はSSとしてRC0を使います。MCP4911のSDIにはSDO(RC7)を接続します。MCP4911のSCKにはSCK(RB6)を接続します。PICUSBIO−03と今回作成したMCP4911基板とを16pinフラットケーブルで接続しました。BASIC[第123回]2022.12.8upload前へ次へホームページトップへ戻る。