ブログ

Armadillo-460:GPIOの電流設定

at_kazutaka.bito
2014年7月25日 20時48分

GPIOの出力電流の設定は、Armadillo-400シリーズハードウェアマニュアル
6.2.1入出力インタフェースの電気的仕様-「Armadillo-460」 http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_hardware_manual_ja-1.10.0/ch06.html#sec-6-2-1 より、

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)、プルアップ/プルダウンを変更することができます。

と記載されています。

実際にCON9の2ピンとCON9の14ピンの電流をmaxに設定変更してみました。

注意点としては、上記のとおり、SW_PAD_CTLで設定できるものと、 SW_PAD_CTL_GRPで設定できるものがありますので、電流設定のパラメータ(DSE)が あるレジスタを選択する必要がある点です。

  • CON9の2ピンは、SW_PAD_CTLで設定。
  • CON9の14ピンは、SW_PAD_CTL_GRPで設定。

どちらのレジスタで設定できるかは、i.mx25のデータシート http://cache.freescale.com/files/dsp/doc/ref_manual/IMX25RM.pdf で確認する必要があります。

マルチプレクス端子の表 「Table 4-18. i.MX25 Detailed Pin Muxing」 より、設定したいGPIOに該当するレジスタを Appendix A IOMUX Registers から探します。

IOMUXC_SW_PAD_CTL_PAD_* または、IOMUXC_SW_PAD_CTL_GRP_* にDSEの設定ビットが存在するレジスタで設定します。

<設定方法>

出力電流は、 atmark-dist/linux-2.6.x/arch/arm/mach-mx25/armadillo400_gpio.c (atmark-distは、atmark-dist-[version]をリンクしたもの, linux-2.6.xは、linux-2.6.26-[version]をリンクしたもの)ファイルで設定できます。

出力電流は、

  • PAD_CTL_DSE_STANDARD
  • PAD_CTL_DSE_HIGH
  • PAD_CTL_DSE_MAX

で設定します。

CON9の2ピンの出力電流を最大にする場合、
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_MAX),
にしてください。

CON9の14ピンの出力電流を最大にする場合、
static struct pad_desc armadillo400_ext_gpio_pads_revc[] = { の末尾に
MX25_PAD_CTL_GRP_DSE_CSI(PAD_CTL_DSE_MAX), を追加してください。

armadillo400_gpio.cを変更後、ビルドしたカーネルイメージをArmadilloに書き込んでください。