図5に出力部を示します。出力部も、やはりデジタル系(CPUと周辺機能用)とアナログ系(D-Aコンバーターやオペアンプの出力など)に分かれます。
①アナログ出力信号
D-Aコンバーターやオペアンプの出力端子として使用している場合は、入力部と同様、電圧が変わらないように、デジタル回路を経由しないで、直接端子につながります。
②デジタル出力信号
デジタル出力信号の経路はCPUと周辺機能からの2経路あります。
また、出力制御回路は図6に示すように出力バッファのPMOSとNMOSを制御して、High、Low、H-Z(ハイインピーダンス)を選択します。最近のマイコンは、ほとんどの端子が大電流を流せる仕様になっているので、出力バッファのPMOSとNMOSは駆動能力が高いMOSが使われます。
汎用I/Oとして使われる場合、CPUはソフトウエアに従って、出力データを内部データバス経由で、出力データレジスタへ入れます。データを入れる前に、端子を出力端子に設定(各端子の出力制御レジスタを設定)しておくと、出力データレジスタを書いた直後に端子から、データが出力されます(通常は、同時または1システムクロックサイクル後)。また、データレジスタを書いた後に出力端子に設定すると、出力端子に設定した直後に、端子からデータが出力されます。どちらにするかは、ユーザーが選べます。
周辺機能の出力データとしてはUSARTやSPIの通信機能の出力データやタイマーのPWM出力信号などがあります。USARTやSPIなどの通信機能の場合は、出力データをバッファレジスタなどのレジスタで一度保持し、その後通信をスタートさせると、データが端子から出力されます。タイマーのPWM出力信号などは、エッジのタイミングが変わらないように、そのままデジタル値として出力されます。
図7にSTM32ファミリのSPIの出力信号の経路を示します。ここでは、出力データを一度保持するレジスタはシフトレジスタになります。SPIは1ビットずつシフトしながら出力し、シフトで空いたビットに入力データの1ビットが順次入るので、入力データレジスタと出力データレジスタは、シフトレジスタで兼用することになります。
汎用I/O端子には、複数の電源で動作する機能が含まれています。そのため、複数の電源間で電流の回り込みや異常な電位差が発生しない工夫が施されています。例えば、STM32ファミリでは、アナログ端子に切り替えると、電源系統もアナログ電源に切り替わります。
日系半導体メーカーにて、25年以上にわたりマイコンの設計業務に携わる。その後、STマイクロエレクトロニクスに入社し、現在までARM Cortex-Mプロセッサを搭載したSTM32ファミリの技術サポート業務に従事。ARMマイコン以外にも精通しており、一般的な4ビットマイコンから32ビットマイコンまで幅広い知識を有する。業務の傍らマイコンに関する技術論文や記事の執筆を行っており、複雑な技術を誰にでも分かりやすい文章で解説することがモットー。
(次の記事を読む)
Copyright © ITmedia, Inc. All Rights Reserved.