ブログ

Armadillo-400シリーズ:端子の出力電流を設定

at_kazutaka.bito
2015年6月25日 17時47分

Armadillo-400シリーズハードウェアマニュアル5.2.1. 入出力インターフェースの電気的仕様 - 「Armadillo-420/440」 に記載されている 「i.MX257のSoftware Pad Control Register(SW_PAD_CTL)とDrive Voltage Select Group Control Register(SW_PAD_CTL_GRP_DVS)で、  出力電流(Std, High, Max)、スルーレート(Slow, Fast)、プルアップ/プルダウンを変更することができます。」 について、端子の出力電流の設定を実際にしてみた。

今回は、Armadillo-440を使って、拡張インタフェースCON9の
 CON9_2
 CON9_21
 CON9_22
 CON9_23
 CON9_24
をGPIOの出力にして確認した。

1.カーネルのソースコードの修正

端子の出力の設定は、 atmark-dist/linux-2.6.x/arch/arm/mach-mx25/armadillo400_gpio.c ファイルで設定できる。

Armadillo-400シリーズハードウェアマニュアル 表5.5 入出力インターフェースの電気的仕様(OVDD=+3.3V_IO) - 「Armadillo-420/440」 のConditionsにある  Std Drive  High Drive  Max Drive に該当する設定は、armadillo400_gpio.c内のレジスタ設定で、  PAD_CTL_DSE_STANDARD  PAD_CTL_DSE_HIGH  PAD_CTL_DSE_MAX を指定すればよい。

なお、デフォルトで未設定になっている場合は、  PAD_CTL_DSE_STANDARD 相当になっているようである。

・CON9_2をHigh Driveにする場合、

static struct pad_desc armadillo400_ext_gpio_pads_revc[] = {

    MX25_PAD_RTCK__GPIO_3_14(PAD_CTL_PKE | PAD_CTL_PUE | PAD_CTL_PUS_100K_UP),

の箇所を

    MX25_PAD_RTCK__GPIO_3_14(PAD_CTL_PKE | PAD_CTL_PUE | PAD_CTL_PUS_100K_UP | PAD_CTL_DSE_HIGH),

にする。

・CON9_21、CON9_22、CON9_23、CON9_24をMax Driveにする場合

static struct pad_desc armadillo400_ext_gpio_pads_revc[] = {

の末尾に

    MX25_PAD_CTL_GRP_DSE_CSI(PAD_CTL_DSE_MAX),

を追加する。

備考)
上記設定について、i.MX257のデータシートを参照して、ソースコード内の表記とi.MX257の出力電流設定のレジスタとの相関をとった。

上記の修正をしてビルドしたカーネルイメージをArmadillo-440に書き込む。

2.確認

 簡易的に  端子(GPIO:High出力)--抵抗--GND  のような回路で、端子--GND間の電圧降下が変わるかどうか確認する。

以下は、CON9_2の例だが、CON9_21、CON9_22、CON9_23、CON9_24も末尾の番号が違うだけで同様。

・該当端子をGPIO:High出力にする。

[armadillo ~]# echo out > /sys/class/gpio/CON9_2/direction
[armadillo ~]# echo 1 > /sys/class/gpio/CON9_2/value

・CON9_2端子--抵抗--GND間の電圧測定結果  抵抗は、1k、500、250[ohm]の3パターンで測定

PAD_CTL_DSE_STANDARDの場合
 1k:3.08V
 500:2.85V
 250:2.43V

PAD_CTL_DSE_HIGHの場合
 1k:3.19V
 500:3.08V
 250:2.85V

PAD_CTL_DSE_MAXの場合
 1k:3.25V
 500:3.19V
 250:3.07V

上記結果より電圧降下の大きさから、出力電流は、 PAD_CTL_DSE_STANDARD < PAD_CTL_DSE_HIGH < PAD_CTL_DSE_MAX の順に設定されていることが確認できた。