マイコンとADコンバータとのインターフェース回路

このQ&Aのポイント
  • マイコンと外付けADCのインターフェース回路について質問
  • 外付けADCを利用し、マイコンとのインターフェース方法を教えてほしい
  • UART ICを使用する方法など、他のインターフェース手法も教えてほしい
回答を見る
  • ベストアンサー

マイコンとADコンバータとのインターフェース回路

マイコン初心者です。 マイコンと外付けADCとのインターフェース回路について質問です。 CH数や分解能といった事情より、外付け(8ch、16bit)程度のADCを利用したいと考えております。 こういったADCの場合、出力がシリアルデータなのですが、マイコンとのインターフェースはどうしたら良いのでしょうか。(マイコン内蔵のSCIは他の用途に割当済みで使えません) UART ICでシリアル/パラレル変換する?などと考えるのですが、一手として全うな手法なのでしょうか? 他にどういったやり方があるのか教えてください。 参考になるマイコン周辺回路の参考書等も併せて教えていただけますと助かります。 基本的な質問で恐縮ですが、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mark225
  • ベストアンサー率37% (6/16)
回答No.2

#1です。 そうですね、外付けA/Dコンバーターを使うのであれば、「パラレルポート」を使ってエミュレーションするのがベターと思います。 >ソフトウェア設計者の負担は大きくなってしまうのでしょうか。 「シリアル入出力ドライバ」を作ればOKですからプログラム経験者であれば大した負担にはならないと思います。

kikucchy
質問者

お礼

お礼が遅くなりすみません。 有益なご助言ありがとうございました。

その他の回答 (1)

  • mark225
  • ベストアンサー率37% (6/16)
回答No.1

>UART ICでシリアル/パラレル変換する? シリアルインターフェースのA/Dコンバータはチャンネル設定やモード設定などをマイコン側からコマンドとして送信する必要があると思いますので、単にシリ/パラ変換するだけでは動作不可と思います。 CPU内臓のSCIやA/Dコンバータにどの程度の仕事量が必要なのか分かりませんので何がベストかは言えませんが、私が思い付く候補としては以下の通りです。 1.A/DコンバータはCPU内臓のものを使い、チャンネル不足はアナログ側でアナログマルチプレクサを使って増設する。 2.外付けA/Dコンバータとのシリアル通信は、ハード的にはCPUの「パラレルポート」を使って「ソフトウエア」でシリアル通信処理する。 3.CPU内臓のSCI(他の用途に割当済み)はタイミング的に「遊び時間」があるのであれば、A/Dコンバータと切り換えながら使う。

kikucchy
質問者

お礼

回答ありがとうございます。 初心者で引き出しのない私には勉強になります。 外付けA/Dコンバーターのデータシートを見ると、SPI シリアルI/Oとあったので、「パラレルポート」を使ってエミュレーションするのが、楽なのでしょうか。 ソフトウェア設計者の負担は大きくなってしまうのでしょうか。

関連するQ&A

  • マイコンのインターフェイスについて

    今現在、下記のような回路の為の部品選定をしているのですが、、、 アナログ電圧入力(DC) → ADC(分解能24bit) → マイコン(H8)にて演算処理 → DAC(電流出力) ADC →(1)→ マイコン 上記(1)のインターフェイスのことについて質問させていただきます。 24ビットの高分解能ADCが実装されているマイコンが見つからなかったため 現在外付けのADCを選定しております。 それで、いくつかのADCのデーターシートを参照すると、 I2C準拠のシリアルインターフェイスが付いているものや、SPIのものやら あるのですが、それらシリアルインターフェイスがついていないADC 例えば↓ http://www.analog.com/jp/analog-to-digital-converters/ad-converters/AD9283/products/product.html などはデーターシートの出力にはTTL、CMOSコンパチと謳われておりますが こういったADCとマイコンを接続する時はマイコン側のインターフェイスは I/Oポートを使用するのでしょうか? とんちんかんなことを言っていたら申し訳無いのですが、 宜しくお願いいたします。

  • マイコンと外部とのインターフェース

    マイコン初心者です。 マイコンと、外部デバイスとのインターフェースについて教えて下さい。 マイコンとフラッシュメモリ、UART(パラレル→シリアル変換)等を接続する場合、マイコンのアドレスバス、データバスなど外部バスをそれらデバイスへ接続して、アドレスを指定、データを読み書きするような回路を見てきました。 これと同じようなことを、アドレスバス、データバスがマイコンの外に出ていないタイプ(シングルチップマイコン?)でやろうとした場合、どういった制御方法があるのでしょうか? 汎用入出力ポートを駆使して制御するのでしょうか? それともシリアル(SPIやI2C)で制御できるようなデバイスを選択するべきなのでしょうか。 知識不足で不明瞭な質問かと思いますが、アドバイスよろしくお願いいたします。

  • H8マイコンのシリアル通信について。

    H8マイコンでのシリアル通信についてお聞きしたいことがあります。 現在PCとマイコン(H8/3052F)をRS32Cでシリアル通信ができています。 今回は有線ではなく無線(Bluetooth)を利用してシリアル通信が行いたく、RBT-001というものを購入しました。 そのマニュアルには一番簡単に通信する方法としてPICマイコンとの例が挙げられており、要するに初期設定さえすれば無線を意識せずに使えるとの事だったのですが、どうも出来ていないみたいです。 --------------------私のプログラム---------------------- #include<3052.h> void initSCI1 (void){ int i; SCI1.SCR.BYTE = SCI1.SMR.BYTE = 0;//初期値は0、本文参照 SCI1.BRR = 80; //ビットレート for (i = 0; i <4000; i++) ; //待つ SCI1.SCR.BYTE = 0x30; //受信割り込み許可、送受信許可 SCI1.SSR.BYTE; //ダミーリード SCI1.SSR.BYTE = 0x80; //エラーフラグクリア } //1文字受信 char SCI1_IN_d(void){ //受信文字を返す。 unsigned char c; //受信データの格納変数 while (!(SCI1.SSR.BYTE & 0x78)); //受信またはエラーフラグが立つまで待つ if (SCI1.SSR.BIT.RDRF == 1) { //受信完了なら c = SCI1.RDR; //データを取り出す。 SCI1.SSR.BIT.RDRF = 0; //受信フラグクリア } else { SCI1.SSR.BYTE &= 0x80; //エラーならエラーフラグクリア c = 0; } return c; } //1文字送信 void SCI1_OUT_d(char c) //文字コードを受け取る。 { while (SCI1.SSR.BIT.TDRE == 0); //0でデータあり、1になるまで待つ。 SCI1.TDR = c; //受け取った文字を送信 SCI1.SSR.BIT.TDRE = 0; //TDREビットをクリア } //BLUETOOTH初期設定 void BT_Init(void){ SCI1_OUT_d(0x02); SCI1_OUT_d(0x52); SCI1_OUT_d(0x4E); SCI1_OUT_d(0x01); SCI1_OUT_d(0x00); SCI1_OUT_d(0xA1); SCI1_OUT_d(0x03); SCI1_OUT_d(0x03); return; } int main (void){ unsigned char rd; BT_Init(); initSCI1(); while(1){ rd=SCI1_IN_d(); SCI1_OUT_d(rd); } } ------------------------------------------------------------ 問題はmain文中「initSCI1();」でSCI1を初期化するとズット変な文字化けみたいなのを延々と吐き出して、逆に初期化しないとPCでなんらかのキーを押すとRBT-001は点滅はするけど、文字を返してこないという状況です。 なので「initSCI1();」がおかしいのかと思うのですが、有線では現にこれで出来ているのでなにが原因かわかりません。 良かったらどこがダメでどうするべきか教えてください。 本当に困っています。よろしくお願いします。 通信速度9600bps データ長8ビット長 ストップピット1 パリティ無 CPU最高動作周波数25MHz -------------------RBT-001マニュアルに記載されているサンプルプログラム------------------------- char text; void BT_Init(); void MPU_Init(); int TRISB,ANSEL,ANSELH; int _LCD_FIRST_ROW,_LCD_CURSUR_OFF,_LCD_CLEAR; void main(){ MPU_Init(); BT_Init(); while(1){ if(Uart1_Data_Ready()){ text = Uart1_Read(); Uart1_Write(text); Lcd_Chr_Cp(text); } } } void MPU_Init(){ TRISB = 0; ANSEL = 0; ANSELH = 0; Uart1_init(9600); Lcd_Init(); Lcd_Cmd(_LCD_FIRST_ROW); Lcd_Cmd(_LCD_CURSUR_OFF); Lcd_Cmd(_LCD_CLEAR); return; } void BT_Init(){ Uart1_Write(0x02); Uart1_Write(0x52); Uart1_Write(0x4E); Uart1_Write(0x01); Uart1_Write(0x00); Uart1_Write(0xA1); Uart1_Write(0x03); Uart1_Write(0x03); return; } -------------------------------------------------------------------

  • マイコン同士をsciを使ってシリアル通信をしたいと考えています。

    マイコン同士をsciを使ってシリアル通信をしたいと考えています。 単純に マイコン1側 マイコン2側 RXD<->TXD TXD<->RXD GND<->GND を接続すれば通信できると考えたのですが、上手くデータを送ることが出来ません。 どうすれば通信できるでしょうか? また、参考になる書籍・WEBサイトをご紹介して頂ければ幸いです。

  • 初めてのマイコン

    こんにちは。 都内の理系の高校に通っている高校一年生です。 マイコンを使った電子工作ができるようになりたいと思います。 しかし、どこから勉強を始めていいものかさっぱりわかりません… ディジタル回路やアナログ回路は使ったことが何度もあるので、少々のことはできるのですが、 プログラミングの必要なマイコンについては、まったくわかりません… PICのようなマイコンが一般的なようですが、 他にも非常に多くの種類があると思います。 初心者が入るのにもっともとっつきやすく、 他のマイコンに対しても応用が利くマイコンって何でしょうか? (たとえば構造が似ているので、プログラムの大幅な変更が不要など) 教えてください。 また、参考になるサイトを教えてください。 初めてのマイコン という感じのキーワードで検索してみるのですが、 いまいちしっくり来るものがありません… マイコンについては何もわからないもので、 なんで、ひとつのピンが入力にも出力にもなるのでしょうか? ↑というレベルです… また、プログラミング言語は、まったくわかりません C言語が高校の一年で必修なのでそのうちやるのですが(たぶん2学期後半) それまでには少しくらいわかるようにはなっていたいです。 マイコンについての本も買ってみたいと思います。 本屋でいくつか立ち読みしてみたのですが… また、最近ではUSBに直接接続することのできるマイコンもあるようですね… そのようなものは、少々値が張りますが、 やはり使いやすいのでしょうか…? 長文失礼しました・・・

  • アナログ入力をマイコンに入力しUSBでパソコンへ

    現在電圧、電流をパネルメータで計測しており、その出力にアナログ電圧が出ている計測器があります。この出力電圧をパソコンに取り込む為にインターフェイスをUSBでと考えています。このあたりの事は実際にやったことが無いので疑問に思ったことが何点かありご質問させていただきました。 ?アナログ電圧→マイコン→USBコントローラ→パソコンへのデータルート事例が多々出ているのですが製品として売り出されているUSB接続機器もマイコンを使用しているのでしょうか。またマイコン以外のパターンはあるのでしょうか。 ?マイコン→USBコントローラへのシリアル通信は何と言う通信名でしょうか。USB2.0の通信速度が480Mbit/sですがマイコン→USBコントローラのシリアル通信の速度はこれの同等以上でなければいけないと思うのですがどれくらいの速度なんでしょうか。 ?秋月電子通商に「 FT232RL USBシリアル変換モジュール 」がありますがこれはFT232RLがUSBコントローラ部でマイコンないし他の「シリアル通信」でFT232RLへデータを送るという意味の解釈でよろしいでしょうか。これの「パラレル変換」というものもありますがその通信部がパラレルになる違いだけでしょうか。 ?マイコンを使用しての資料が多いのですがマイコンを使用しないで行う方法はあるのでしょうか。 わかりにくい文面で大変恐縮ですが自分には理解するのに戸惑っており、こう言った言い回しでしか質問ができませんがどうかご教授していただけると助かります。宜しくお願い致します。

  • H8マイコンが壊れた原因とその後

    大学での研究として、H8マイコンを使用しています。 H8マイコン(イエローソフトH8S/2633)を、周辺回路と組み合わせた瞬間に壊れてしまいました。 原因を探っていましたが、壊れた瞬間というのは、周辺回路とマイコンを組み合わせ、その後、周辺回路のシリアルポートをPCに接続した瞬間に変なにおいがしましたので、この時に壊れたと思います。 しかし、シリアルポートに接続したことが原因になることはあるのでしょうか?それとも他に何か原因があるのでしょうか? また、この壊れたマイコンのVSWとGNDがなぜか導通しています。 これは、壊れた瞬間に導通した可能性はありえるのでしょうか?それとも、初期不良か何かで導通していたのでしょうか?

  • D/Aコンバータ探してます。

    以下の条件にマッチする、D/Aコンバータを探しています。 ・分解能は8bit以上 ・chは1以上(できれば1ch~3ch程度) ・インターフェイスタイプはシリアル ・アウトプットタイプはボルト ・入力電圧は20V(以下でもOK) ・出力電圧範囲は0V~+20V いろんな所で探したのですが、16V前後までのものしかなく困ってしまっています。 これだけ探してもないので、本当に無いのかもしれませんが・・・。 もし、条件にマッチするものに心当たりがあったら教えていただけますでしょうか。 また他に、出力範囲0V~20Vを得る方法ってありますでしょうか? 例えば、±10V出力から0V~+20V得る方法などなど。 もし、あればその方法を教えてもらえればと思います。 よろしくお願いします。

  • USBポートを使ってパラレルのハードウェアを使いたい

    ノートパソコンで、シリアルポートもパラレルポートもないんですが、どうしてもパラレルポートが使いたくて、さがしてみるとIBMからUSBインターフェースから、シリアルとパラレルを使える物が出てることがわかりました。 でも4500円もするんですが、もっと安くできませんかねぇ? もしくは、パラレルのハードウェアを他のインターフェースに変えるってできますか?

  • H8Sマイコンの機能に相当するAtmelのマイコン

    現在、H8S2368マイコンというのを使用しているのですが、Atmelのマイコンでそれに相当するようなマイコンをご存じでしたらご教授頂きますようお願い致します。 なお、H8S2368マイコンの仕様は http://japan.renesas.com/products/mpumcu/h8s/h8s2300/h8s2368/index.jsp こちらのサイトで次のようになっていました。 低電圧高速動作 3.0~3.6V/33MHz動作 最小命令実行時間:30ns ROM/RAM 512kB/32kB:H8S/2368F 384kB/32kB : H8S/2364F 384kB/24kB:H8S/2367F 256kB/32kB : H8S/2362F 256kB/24kB : H8S/2361F 256kB/16kB : H8S/2360F 256kB/16kB:H8S/2365 -  /16kB:H8S/2363 シリアル通信機能強化 SCI×5ch(I2C×2chオプション) 等 どうぞ、よろしくお願いいたします