[北京Xunwei] i.MX6ULLターミネーターGPIO構成

9.1および9.2章では、IOピンを構成するためにこれら2つのレジスタ「SW_MUX_CTL_PAD_XX_XX」と「SW_PAD_CTL_PAD_XX_XX」を導入しました。この章では、GPIO機能の構成について学習します(GPIOはIOピンの多重化機能です)。 。たとえば、GPIO1_IO00のIOは、I2C2_SCL、ENET1_REF_CLK1、GPIO1_IO00、WDOG3_WDOG_Bなどの9つの多重化機能に多重化できます。GPIO1_IO00はそれらの1つにすぎません。具体的に構成されている多重化機能は、ハードウェアデザインでこのIOを確認する必要があります。どの機能が設計されているか。このピンを使用してLED発光ダイオードを制御する場合、プログラムはこのIOをGPIOモードに構成し、GPIO機能を構成する必要があります。マニュアルの「汎用入力」の第28章を参照できます。 /出力(GPIO)」。この章では、図1に示すGPIOの構造を確認できます。


ここに画像の説明を挿入

図1

上の図では、赤いボックスでマークされた2つの場所(1、2)を見ることができ、その1つには2つのレジスタが含まれていますこれは、第6.2章で紹介したIO多重化およびIO関数属性を構成するためのレジスタです。2か所は、IOがGPIOとして使用される場合に構成する必要があるレジスタを示します(合計8):GPIO.DR、GPIO.GDIR、GPIO.PSR、GPIO.ICR1、GPIO.ICR2、GPIO.EDGE_SEL、GPIO。 IMR、GPIO.ISR、前の章6.2で、i.MX6 ULLには5つのグループのGPIOがあり、GPIOの各グループにはこれらの8つのレジスターがあることを紹介しました。これらのレジスターを個別に見てみましょう
。 :


ここに画像の説明を挿入

図2

このレジスタは32ビットのデータレジスタで、各ビットはGPIOに対応しています。GPIOが出力に設定されている場合、対応するビットに1を書き込み、GPIOは高レベルを出力し、0を書き込み、GPIOは低レベルを出力します。GPIOが入力に設定されている場合、このレジスタの対応するビットを読み取ると、対応するGPIOステータス(0または1)を取得できます。

次に、図3に示すように、GPIOx_GDIRレジスタがあります。


ここに画像の説明を挿入

画像3

このレジスタも32ビットで、各ビットはGPIOに対応しており、GPIOが入力か出力かを設定します。(対応するビットは0に設定され、対応するGPIOは入力モードに設定されます。対応するビットは1に設定され、対応するGPIOは出力モードに構成されます)。

次に、図4に示すように、GPIOx_PSRレジスタがあります。


ここに画像の説明を挿入

図4

このレジスタも32ビットで、各ビットはGPIOに対応しており、対応するGPIOのステータス(高レベルと低レベル)を読み取るために使用されます。

次に、図5に示すように、GPIOx_ICR1レジスタがあります。


ここに画像の説明を挿入

図5

このレジスタは割り込み制御レジスタです。GPIOの各グループには最大32個のGPIOがあります。このレジスタは下位16個のGPIOを構成するために使用されます。このレジスタは32ビットで、各2ビットはGPIOを表します。これらの2ビットは割り込みトリガモードを構成するために使用されます。 :
00低
レベルトリガー01高レベルトリガー
10立ち上がりエッジトリガー
11
立ち下がりエッジトリガー例としてGPIO1_IO3が高レベルトリガーに設定されている場合、GPIO1.ICR1 = 1 << 6。

次に、図6に示すように、GPIOx_ICR2レジスタがあります。


ここに画像の説明を挿入

図6

このレジスタは割り込み制御レジスタでもあります。GPIOの各グループには最大32個のGPIOがあります。このレジスタは上位16個のGPIOを構成するために使用されます。このレジスタは32ビットで、各2ビットはGPIOを表します。これらの2ビットは割り込みトリガーモードを構成するために使用されます:
00低
レベルトリガー01高レベルトリガー
10立ち上がりエッジトリガー
11
立ち下がりエッジトリガー例として、GPIO1_IO7が高レベルトリガーに設定されている場合、GPIO1.ICR1 = 1 << 2です。

次に、図7に示すように、GPIOx_IMRレジスタがあります。


ここに画像の説明を挿入

図7

このレジスタは割り込みマスクレジスタであり、各ビットはGPIOに対応しています。GPIOの割り込みが有効になっている場合は、このレジスタに対応するビットを1に設定します。特定のGPIOの割り込みが無効になっている場合は、このレジスタの対応するビットを0に設定します。

次に、図8に示すように、GPIOx_ISRレジスタがあります。


ここに画像の説明を挿入

図8

このレジスタは、合計32ビットの割り込みステータスレジスタであり、それぞれがgpioに対応しています。GPIO割り込みが生成されると、対応するビットが1に設定され、GPIO割り込みが生成されたかどうかを判断するためにこのレジスタを読み取ることができます。 。割り込みの処理が終了したら、対応する割り込みフラグビットをクリアする必要があります(レジスタの対応するビットに1を書き込む、つまり、割り込みフラグビットをクリアするなど)。

次に、図9に示すように、GPIOx_EDGE_SEL:


ここに画像の説明を挿入

図9

このレジスタは、エッジ割り込みを設定するために使用され、ICR1とICR2の設定をオーバーライドし、1つのGPIOが1つのビットに対応します。対応するビットが1に設定されている場合、対応するGPIOを立ち上がりエッジと立ち下がりエッジ(両方のエッジ)でトリガーされるように設定するのと同じです。

これまでのところ、GPIOのすべてのレジスターの導入が完了しています。ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/BeiJingXunWei/article/details/108507048