入力ポートが足りないときに、スイッチ入力数を増やす裏ワザ:Q&Aで学ぶマイコン講座(71)(3/3 ページ)
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初心者の方からよく質問される「入力ポートが足りないときに、スイッチ入力数を増やす裏ワザ」についてです。
GPIOポートの特徴
図4は、STM32G0マイコンのGPIOポートを示しています。内蔵のプルアップ抵抗の有効/無効を設定で切り替え可能です。また、出力レベルをプッシュプル(HIGHもしくはLOWを出力)、出力レベルをオープンドレイン(ハイインピーダンス状態もしくはLOWを出力)などに設定で切り替えることもできます。
GPIOポートの入出力設定
GPIOポートの入出力は、GPIO port mode register(GPIOx_MODER)で設定できます。PBxxポートを使用する場合は、GPIOB_MODERを設定します。入力ポートに設定する場合は、該当するポート番号のMODEビットを00に設定します(PB4を入力ポートに設定したい場合は、MODE4ビットを00に設定)
同様に、出力ポートに設定する場合は、該当するポート番号のMODEビットを01に設定します。マイコンがリセットされた状態では、MODEビットは11に設定されており、アナログ入力モードになっているので、入力ポートであってもMODEビットの設定が必要です。
GPIOポートのオープンドレイン設定
出力に設定したポートをオープンドレイン出力設定にする場合は、GPIO port output type register(GPIOx_OTYPER)の対応するポート番号のビットを1に設定します(PB0をオープンドレイン出力に設定する場合は、GPIOB_OTYPERのビット0を1に設定)。マイコンがリセットされた状態では、GPIOx_OTYPERのビットは0に設定されており、プッシュプル出力設定になっているので、GPIOx_OTYPERのビット設定が必要です。
GPIOポートの内蔵プルアップ抵抗設定
入力ポートの内蔵プルアップ抵抗を有効にするには、GPIO port pull-up/pull-down register(GPIOx_PUPDR)で設定できます。PBxxポートを使用する場合は、GPIOB_PUPDRを設定します。ポートをプルアップに設定する場合、該当するポート番号のPUPDビットを01に設定します(PB4をプルアップに設定する場合は、PUPD4ビットを01に設定)
初期化ソースコード生成ソフトの活用
先ほど述べたように、GPIOポートはさまざまな設定ができますが、キーパッドのように多数のピンを使用する場合、個々のピンの初期化ソースコードを作成するのに手間がかかります。マイコンによっては、GPIOの初期化ソースコードをGUIで設定/生成できるソフトが提供されているため、これを使用することで、ソフト開発時間の大幅な短縮が可能です。STM32G0マイコンでは、「STM32CubeMX」というソフトを使用することで、GUIで簡単にGPIOの入出力設定や、プルアップの設定をすることができます(図5)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- マイコンが起動するまで、なぜ時間がかかるの?
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初心者の方からよく質問される「マイコンが起動するまで、なぜ時間がかかるの?」についてです。 - スターターキットの活用方法
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。 今回は、初心者の方からよく質問される「スターターキットの活用方法」についてです。 - 割り込みにおけるレベルセンスとエッジセンスの違い
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初心者の方からよく質問される「割り込みにおけるレベルセンスとエッジセンスの違い」についてです。 - BCD(2進化10進数)って何?
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初級者の方からよく質問される「BCD(2進化10進数)って何?」についてです。 - CCR(Condition Code Register:条件コードレジスタ)の役割
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、超初級者の方からよく質問される「CCR(Condition Code Register: 条件コードレジスタ)の役割」についてです。 - シングルバンクとデュアルバンクの違い
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初級者の方からよく質問される「シングルバンクとデュアルバンクの違い」についてです。