【PIC24FJ64GA002】12bitAD2chコンバータLTC1298を使ってみる。
秋月電商で買った12bitAD2chLTC1298をPIC24FJ64GA002で動かしてみました。
4線式ソフトウエア制御
SPI制御に似ていますが12bitAD変換なので工夫が必要となります。
CE、Din、Dout、CLKの4線式となります。
データシートのPage11を参照にしました。
クロックはStart,SGL,ODD,MSBF,NULL,12bitADの17bitパタパタする必要があります。
仕様
AD変換の仕様はDinで設定することが可能です。
各BIT | SGL/DIFF | ODD/SIGN | MSBF | 結果 |
内容 | 入力チャンネル設定 | B11 to B0/B0 to B11 | —- | |
設定例 | 1 | 1 | 1 | CH1(B11 to B0) |
SGL/DIFF、ODD/SIGN、MSBFを全部"1"にすると「CH1」で「B11→B0」となります。
Startも"1″だし、データ出力時はDon’tCareなのでずーっと’1’は都合がいいです。
オシロスコープで各ピンの出力確認
CEピン、Dinピン、Doutピン、CLKピンをオシロスコープで確認してみます。
ソース
プログラムの例はこちら
float LTC1298_CALL(void) { unsigned short int ad_data; //AD変換 ad_data = 0; //クリア LTC_HIZ_OUT = 1; //入力 LTC1298_CE = 0; //START delay_us(1); //== START_BIT ======================== LTC1298_IN = 1; //START_BIT LTC1298_CLK = 0; //極切り替え delay_us(1); LTC1298_CLK = 1; delay_us(1); //== SGL_DIFF ========================= LTC1298_IN = 1; //SINGLE LTC1298_CLK = 0; //極切り替え delay_us(1); LTC1298_CLK = 1; delay_us(1); //== ODD_SIGN ======================== LTC1298_IN = 1; //CH1 LTC1298_CLK = 0; //極切り替え delay_us(1); LTC1298_CLK = 1; delay_us(1); //== MSBF ============================ LTC1298_IN = 1; //B11→B0 LTC1298_CLK = 0; //極切り替え delay_us(1); LTC1298_CLK = 1; delay_us(1); //== NULL_BIT ======================== LTC1298_CLK = 0; //極切り替え delay_us(1); LTC1298_CLK = 1; delay_us(1); //== 12BIT =========================== char i; //charで十分 LTC_HIZ_OUT = 1; //入力 for(i=0; i<12; i++) { //== クロック ======================= LTC1298_CLK = 0; //極切り替え delay_us(1); LTC1298_CLK = 1; delay_us(1); //== Dout_check ================== ad_data <<= 1; //シフト if(LTC1298_OUT == 1) {ad_data+=1;} //'1'set else{} //none }//for(i=0; i<12; i++) LTC1298_CE = 1; //END delay_us(1); LTC_HIZ_OUT = 0; //出力 return(ad_data); //戻り値 }//float LTC1298_CALL(void)
ディスカッション
コメント一覧
まだ、コメントがありません