ブログ

Armadillo-X1, Armadillo-IoT G3: ピンのマルチプレクスの設定例

at_ito
2017年5月8日 7時24分

Armadillo-X1, Armadillo-IoT G3ではマルチプレクスの設定を行う際にはDevice Treeが必要になります。ここではArmadillo-X1, Armadillo-IoT G3/G3Lでピンのマルチプレクス設定を行う際の例を記載します。

概要

DeviceTreeの概要についてはArmadillo-X1, Armadillo-IoT G3/G3L: Device Treeの概要を参照してください。

マルチプレクス設定

マルチプレクスの設定を行うことで、各ピンに機能を割り当てることができます。 各ピンに割り当てられる機能はCPUである程度決まっています。

各ピンに割り当てられる機能は、各製品のドキュメント・ダウンロードページにある「マルチプレクス表」を参照してください。

マルチプレクス設定例

マルチプレクスの設定を行う際にはdtsファイルを編集します。 例としてArmadillo-X1のCON8-pin20, 21にI2C1の機能を割り当てる場合のDTSファイルは以下のように記述します。

 1: &iomuxc {
 2:     x1_ext {
 3:         pinctrl_i2c1: i2c1grp {
 4:             fsl,pins = <
 5:                 MX7D_PAD_I2C1_SCL__I2C1_SCL 0x4000007f
 6:                 MX7D_PAD_I2C1_SDA__I2C1_SDA 0x4000007f
 7:             >;
 8:         }
 9:     }
10: }

上記内容について、以下に解説します。

  • 1行目
    • この行ではマルチプレクスを設定するためのドライバーを指定しています。
  • 2行目
    • ここではArmadillo-X1の拡張のため「x1_ext」と指定しています。ほかの文字列でも問題ありません
  • 3行目
    • ここではi2cドライバーから指定するためのラベル(pinctrl_i2c1)を指定しています
  • 4~7行目
    • ここでは各ピン毎のマルチプレクスの設定を行っています
    • MX7D_PADで始まる定数は、「MX7D_PAD_ピン名__割り当てる機能」となっています
      • 「ピン名」は前述でダウンロードできるマルチプレクス表の「i.MX 7Dualピン名」と同じ名前になります
      • 「割り上げる機能」はマルチプレクス表の各ピンに書かれている「マルチプレクス機能」とほぼ同じ名前になります
      • 使用したいピンと、使用したい機能の定数をここで定義します
      • 定数の一覧については、arch/arm/boot/dts/imx7d-pinfunc.hを参照してください
    • MX7D_PADで始まる定数の後に指定される「0x4000007f」は、PAD_CTLの設定とsionの設定になります
      • PAD_CTLは、「i.MX 7Dual Applications Processor Reference Manual」の「SW_PAD_CTL Register」に関する記載を参照してください
      • 31bit目(0~31bitで計算)のビットの機能は、「0:パッド設定を行う, 1:パッド設定を行わない」となります
      • 30bit目(0~31bitで計算)のビットの機能はSION(Software Input On)の有効/無効の指定になります。SIONの詳細は「i.MX 7Dual Applications Processor Reference Manual」を参照してください