マルツTOP > APPLICATION LAB TOPページ おすすめ技術記事アーカイブス > 外部デバイスを適用してマイクロコントローラI/Oの拡張問題を解決

外部デバイスを適用してマイクロコントローラI/Oの拡張問題を解決 

著者 Jacob Beningo 氏
Digi-Keyの北米担当編集者 提供
2019-02-20
マルツ掲載日:2019-06-03

 マイクロコントローラのI/Oには、設計者が一般的に直面する2つの問題があります。最初の問題は、アプリケーションに最適なマイクロコントローラに適切な組み合わせのI/O機能がない場合です。2番目の問題は、すでに発売されている製品ラインにI/Oの追加が必要なときに発生します。

 最初の問題では、開発者は、より高価な高機能のマイクロコントローラを購入する必要に迫られることが多くあります。2番目の問題では、新しいマイクロコントローラに切り替えるコストと適切なソフトウェアのポーティングにかかる費用と時間が法外なものになる可能性があります。

 これらの両方の問題を解決する可能性がある1つのソリューションは、マイクロコントローラのSPIまたはI2Cバスに接続される外部I/O拡張デバイスを使用することです。これらのデバイスは、ピン数や場合によってはパフォーマンスとフットプリントに関しても、マイクロコントローラをそれほど厳密に指定する必要がありません。同時に、このアプローチは将来の機能の変化、ターゲット市場の拡大、顧客の機能要求、および不適切なマイクロコントローラの選択(実際にそれは起こる)に直面した場合でも、製品設計が将来にわたって使えるようになります。

 この記事では、マイクロコントローラI/Oの一般的な要件について説明し、いくつかの適切な外部拡張デバイスを紹介します。次に、追加の汎用入力および出力、メモリストレージ、パルス幅変調(PWM)、さらにはウォッチドッグタイマ機能を提供できるこれらのオフチップリソースを使用する方法を示します。

拡張インターフェースの選択

 マイクロコントローラは、外部デバイスとの通信に使用できるいくつかの異なるオンチップペリフェラルインターフェースを備えています。例を挙げると、マイクロコントローラに応じて、次のようなインターフェースが使用されます。

 ・シリアルペリフェラルインターフェース(SPI)
 ・インターインテグレーテッドサーキット(I2C)バス
 ・ユニバーサルシリアルバス(USB)
 ・ユニバーサル非同期レシーバ/トランスミッタ(UART)
 ・コントローラエリアネットワーク(CAN)
 ・Wi-Fi

 外部拡張デバイスとの通信に最適なインターフェースは、I2CまたはSPIです。I2Cは、100kビット/秒または400kビット/秒で動作する2線式バスですが、1Mビット/秒以上をサポートする高速デバイスもいくつかあります。1線は専用のクロックピンであり、もう1線は、マスターとスレーブ間の双方向通信に使用されます。通常、マイクロコントローラはマスターとして機能し、外部デバイスはスレーブです。スレーブは、7ビットまたは10ビットアドレス指定スキームを使用してアドレス指定できます。

 たとえば、開発者がSTMicroelectronicsのSTM32L011D4P7を使用していた場合、使用するI/Oラインが11個あったはずです(図1)。この場合、SPIデータおよびクロックのためだけに3つのI/Oラインが必要で、8つのラインは、スレーブデバイスとの通信と、システムで必要な追加機能の実行のために残されます。これは多くのアプリケーション向けに最適ですが、ある時点で設計者はI/Oを拡張する必要が出てきます。



図1STM32L011D4P7は、11個のI/Oでピンが制限されているArm Cortex-M7プロセッサです。(画像提供:STMicroelectronics)

 一般に、大まかな目安として、次の機能を追加するときはI2Cバスを使用します。

 ・I/O
 ・PWM
 ・EEPROM
 ・ウォッチドッグタイマ

 SDカードへの高速メモリアクセスなどの機能を追加するには、SPIバスを使用する必要があります。

汎用I/Oの拡張

 I2Cインターフェースを介した入力および出力の拡張をサポートする相当数のICがあります。次のような、興味深いICがいくつかあります。

 ・Texas InstrumentsのTCA9534PWR
 ・NXP SemiconductorsのPCA8574
 ・Semtech CorporationのSX1520I087TRT

 PCA8574は、入力と出力の両方を実行するためのレジスタが1つしかないため、特に興味深いICです。1つのレジスタでデバイスを設定するので、ピンを読み書きするために必要なソフトウェアの量が劇的に簡素化できます(図2)。

 マイクロコントローラはI2Cを介してPCA8574と通信し、A0ピンからA2ピンへの設定方法に基づいてデバイスをアドレス指定します。これにより設計に柔軟性が加わり、開発者はPCA8574のスレーブアドレスを選択し、1つの設計で複数のアドレスを持つことができます。



図2:NXPのPCA8574は、擬似双方向の8ビットI/O I2Cエキスパンダです。また、ピン上で読み出しと書き込みを行いI/O機能を実行するためにI2Cレジスタを1つだけ備えているため、非常にシンプルかつスマートなデバイスが実現します。(画像提供:NXP Semiconductors)

 デフォルトでは、P0からP7は電源投入時の入力として設定されています。単一の内部レジスタを読み取ると、入力または出力として設定されているかどうかにかかわらず、デバイスの各ピンの状態がわかります。PCA8574では、ピンを入力と出力の両方として同時に機能させることができるため、レジスタに書き込むと対応するビットの出力も設定されます。

 出力ドライブは弱い内部抵抗によってプルアップされていますが、これは入力値によって容易に過電力になります。いずれかの入力状態が変化すると、INTピンがローに切り替わり、マイクロコントローラに入力状態の変化が発生したことを知らせます。その後、マイクロコントローラは新しい値を読み取るためにI2C呼び出しを行うことができます。

PWMの拡張

 PWMエキスパンダは、非常に便利な拡張デバイスです。このデバイスは、LEDを駆動するときに特に便利です。マイクロコントローラが何も実行していないときは、マイクロコントローラをスリープにして、PWMエキスパンダでLED状態を駆動することができます。
PWMエキスパンダの使用方法の良い例は、E-SwitchのPV6F240SSG RGB押ボタンまたはSchurter Electronic Componentsの3-101-399 SPST RGB押ボタンを使用するRGB押ボタン回路でよく見られます(図3)。


図3:SchurterのRGB押ボタンは、押ボタンの周りに赤、緑、青のLEDを備えており、開発者はLEDを使用して、照明カラーパターンを作成できます。これらのタイプのデバイスは、PWM拡張チップによる駆動に最適です。(画像提供:Schurter)

 SchurterのRGB押ボタンは、SPST押ボタンの周りに赤、緑、青のLEDを備えており、開発者はLEDを使用して、照明カラーパターンを作成できます。これらのタイプのアプリケーションは、PWM拡張チップに最適です。

 I2Cで使用するのに適したPWM拡張チップは、Maxim IntegratedのMAX7315です。MAX7315は、8つのPWMポートとLED輝度調節機能を備えています。これにより、RGBスイッチの駆動に必要な3つのチャンネルに容易に対応し、単一のデバイスで2~3のスイッチといくつかのスタンドアロンLEDを駆動することが可能になります。さらに、トランジション検出割り込みとして、または汎用出力として使用できる9番目のポートもあります。

 MAX7315 I2Cインターフェースは、1つ以上のレジスタを含んでいるため、NXPのPCA8574よりも少し複雑です。したがって、開発者は、スレーブデバイスをアドレス指定し、読み出しまたは書き込みに関与しているメモリアドレスを提供してから、書き込みまたは読み出しを実行する必要があります。図4は、MAX7315のメモリマップを示しています。



図4MAX7315 PWMコントローラには、LED輝度機能を備えた8つの出力ポートがあります。デバイスのレジスタマップはシンプルであり、高度なPWM機能への簡単なアクセスを可能にします。(画像提供:Maxim Integrated)

 MAX7315のレジスタマップはシンプルであり、高度なPWM機能への簡単なアクセスを可能にします。

WDT、EEPROM、PWMを備えたコンビネーションエキスパンダ

 図に示すように、I2CバスI/Oエキスパンダは、スタンドアロンデバイスとして使用すると非常に強力になります。つまり、I/OやPWMのような特定の機能だけが含まれています。Cypress SemiconductorのCY8C9520AマルチポートI/Oエキスパンダなどのエキスパンダでは、単一のICパッケージ内に複数のペリフェラル拡張が含まれます。CY8C9520Aには、20ビット、40ビット、60ビット拡張の3つのバリエーションがあります。これらのピンは、入力、出力、PWMとして使用するように構成できます(図5)。



図5:Cypress SemiconductorのCY8C9520Aは、EEPROMを備えた20ビット、40ビット、60ビットのI/Oエキスパンダです。このエキスパンダでは、拡張ピンを入力、出力、PWMとして構成できます。(画像提供:Cypress Semiconductor)

 CY8C9520Aには、I/O拡張に加えて、シリアル番号などの重要なアプリケーション設定のほか、その他の重要な構成パラメータの保存に使用できるEEPROMも含まれています。

 図5を詳しく見ると、GPort 2上にWD6ピンがあるのがわかります。このピンはウォッチドッグタイマ出力ピンであり、マイクロコントローラがCY8C9520Aのウォッチドッグと通信して「処理」することに失敗したときに、マイクロコントローラをリセットするために使用できます。ウォッチドッグの設定は完全に構成可能であり、アプリケーションコードに堅牢性レベルをさらに追加するときに使用できます。

マイクロコントローラ機能の拡張に関するヒントとコツ

 マイクロコントローラの機能の拡張に役立つ多くの手法があります。いくつかの役立つヒントとコツを次に示します。

 I2Cを使用して、外部デバイスとインターフェース接続します。インターフェースはピンを2つだけ必要とし、複数のスレーブデバイスをサポートできます。部品をハードウェアに設計する前に、開発ボードを購入するか、チップを拡張ボードにはんだ付けして、システムのすべてのニーズを満たすかどうかをテストします。

 I2Cバスツールを使用して、拡張デバイスとインターフェースし、その動作方法を学習します。これにより、ソフトウェアの開発が大幅に速くなります。ソフトウェア開発中にバスアナライザを使用して、外部デバイスとの通信を監視し、デバッグ時間を最小限にします。可能な場合、外部ウォッチドッグタイマを備えているデバイスを選択します。これは、堅牢性をシステム設計に追加するツールになる場合があります。

 構成データ以外のデータのオフチップメモリとインターフェースするときは、SPIなどの高速インターフェースを使用します。デバイスが否定応答(NAK)を返す場合、またはバスがドラッグダウンされた場合に、マイクロコントローラのI2Cドライバが対応できるようにします。予期しない応答が受信された場合、これらのドライバがエラーを無視して、無限ループに入ることは珍しいことではありません。

まとめ

 設計でマイクロコントローラにI/Oを追加できなくなった場合でも、開発者は設計を破棄して、出発点に戻る必要はありません。その代わり、システムに機能を追加できる外部ペリフェラルチップを使用することができます。


免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、Digi-Key Electronicsの意見、信念および視点またはDigi-Key Electronicsの公式な方針を必ずしも反映するものではありません。

このページのコンテンツはDigi-Key社より提供されています。
英文でのオリジナルのコンテンツはDigi-Keyサイトでご確認いただけます。
   


Digi-Key社の全製品は 1個からマルツオンラインで購入できます


※製品カテゴリー総一覧はこちら



ODM、OEM、EMSで定期購入や量産をご検討のお客様へ【価格交渉OK】

毎月一定額をご購入予定のお客様や、量産部品としてご検討されているお客様には、マルツ特別価格にてDigi-Key社製品を供給いたします。
条件に応じて、マルツオンライン表示価格よりもお安い価格をご提示できる場合がございます。
是非一度、マルツエレックにお見積もりをご用命ください。


ページトップへ