ohshimayyyy
2015年4月24日 10時23分
お世話になります。
大島と申します。
標記の件、Armadillo-810のCPUボードのシリアルインターフェースで、
CON2及びCON3(どちらかというとCON3)のピンをGPIOの様な使い方ができないか
考えているのですが、可能なものでしょうか?
本来は、CON5のGPIOを使用するのが常套手段だと思うのですが、
Armadillo-810を筐体に収めた状態(拡張ボードは収まりません)で使用したく、
配線で何とか外に出せ、接続先に出したピンを接続できそうなものが、
CON2及びCON3のピンのみとなっており、お伺いした次第です。
ご対応の程、宜しくお願い致します。
コメント
ohshimayyyy
溝渕さま
お世話になります。
大島と申します。
下記の件、早々のご返信、有難う御座います。
下記、不明点が御座いますので、ご対応頂きたく、
宜しくお願い致します。
> # 上記は、Linuxカーネルの変更のみなので、ブートローダHermit-At からは
> # UARTとして利用されます。
上記の際ですが、机上では、実際のArmadilloの動作に、影響ない認識で良いでしょうか?
他に必要な修正などが御座いましたら、ご教示頂ければ幸いです。
> また、カーネルを変更せずに、tty_ioctlの"TIOCMGET"コマンドを使用して
> RTS,CTSピンをGPIOのように扱うこともできます(入出力方向は固定です)。
私の理解不足で申し訳ないのですが、調べてみたところ、
tty_ioctlの"TIOCMGET"コマンドを使用したRTS,CTSピンの扱い方が
分かりませんでした。。
詳細をご教示頂きたいです。
製品マニュアルでは、SCIFA_RXD_2は入力、SCIFA_TXD_2は出力、
SCIFA_CTS_2は入力、SCIFA_RTS_2は出力となっておりますが
(CON2も記載の通り)、GPIOに割り当てた際の入出力の扱いは、
通常のGPIOと同様の扱いで良いしょうか?
ご対応の程、宜しくお願い致します。
at_mizo
溝渕です。
> > # 上記は、Linuxカーネルの変更のみなので、ブートローダHermit-At からは
> > # UARTとして利用されます。
> 上記の際ですが、机上では、実際のArmadilloの動作に、影響ない認識で良いでしょうか?
> 他に必要な修正などが御座いましたら、ご教示頂ければ幸いです。
Armadillo-810に接続する機器次第ですが、信号を衝突させない限りは影響は無
いかと思います。
ブートローダ Hermit-At から UART として利用されないようにするには、製品
マニュアルの次の章をご参照ください。
http://manual.atmark-techno.com/armadillo-810/armadillo-810_product_man…
> tty_ioctlの"TIOCMGET"コマンドを使用したRTS,CTSピンの扱い方が
> 分かりませんでした。。
> 詳細をご教示頂きたいです。
tty_ioctlを使用する方法では、CTSピンの状態取得(入力レベルの取得)および
RTSピンの状態変更(出力レベルの変更)をおこなうことができます。入出力方向
を変更することはできません。
例として、CTSピンの取得は次のようにおこなうことができます。
int arg; ioctl(fd, TIOCMGET, &arg); if (arg & TIOCM_CTS) printf("SET\n"); else printf("UNSET\n");
> 製品マニュアルでは、SCIFA_RXD_2は入力、SCIFA_TXD_2は出力、
> SCIFA_CTS_2は入力、SCIFA_RTS_2は出力となっておりますが
> (CON2も記載の通り)、GPIOに割り当てた際の入出力の扱いは、
> 通常のGPIOと同様の扱いで良いしょうか?
Linuxカーネルをカスタマイズして、該当ピンのマルチプレクスを変更した場合
は、通常のGPIOと同様に入出力方向の変更が可能です。
入出力方向の変更方法は、製品マニュアルの次の章に記載されています。
http://manual.atmark-techno.com/armadillo-810/armadillo-810_product_man…
以上です。
ohshimayyyy
at_mizo
ohshimayyyy
溝渕さま
お世話になります。
大島と申します。
下記の件、早々のご対応、有難う御座います。
> UARTもGPIOも利用する必要があるのであれば、UARTのハードウェアフローピン
> (RTS, CTS)をGPIOとして、データピン(TXD,RXD)をUARTとして利用するのはい
> かがでしょうか?
例えば、CON2及びCON3のハードウェアフローピン(RTS, CTS)を
GPIOに割り当てておきながら、Teratermなどのシリアルコンソールとの通信が、
データピン(TXD,RXD)のみで行なえる認識で良かったでしょうか?
知識不足で申し訳ありません。
今回は、CON3のピンをGPIOに割り当てますが、
シリアル通信で、kernelやuserlandの書き込みを実施することも想定すると、
HERMIT_EN_Nも潰せないかと考えております。
もっとも、netflushによる書き込みで事足りるのですが、
稀にカーネルパニックを起こすこともありましたので、
その為の保険となります。
また、VCCとGNDについては、GPIOなどに割り当てられない認識で良かったでしょうか?
ご対応の程、宜しくお願い致します。
ohshimayyyy
ohshimayyyy
溝渕さま
お世話になります。
大島と申します。
下記の件、度々すみません。
CON3のUARTをGPIOに割り当てる様、ソースコードを修正し、
カーネルを書き換えたところ、GPIOとして動作することを確認しました。
その際なのですが、割り当てたGPIOの電気的な特性について、
純正のGPIOと比較して違いはありますか?
GPIO制御したい電子部品に対して、印加される電圧は、
純正のGPIOも割り当てたGPIOも同じ様なのですが、
性能が低い様に感じます。
例えば、ブザーであれば音量が低いなど。
回路構成はまったく同じです。
もし、お気付きの点があれば、ご教示頂ければと思います。
ご対応の程、宜しくお願い致します。
at_mizo
溝渕です。
> その際なのですが、割り当てたGPIOの電気的な特性について、
> 純正のGPIOと比較して違いはありますか?
CON3の各信号線には100Ω抵抗が付いています。
そのため、CON3の信号線が供給可能な電流が33mA(3.3V / 100Ω)に制限される
ように見えますが、各ピンの最大出力電流が2mA[1]であるため実質的な差異は
無いように思います。
[1]:http://manual.atmark-techno.com/armadillo-810/armadillo-810_product_man…
もし、GPIOをブザーの電源として利用している場合は2mA以上の電流を流そうと
している可能性があるため、GPIOは電源制御用途で利用することをおすすめし
ます。
以上です。
at_mizo
2015年4月28日 17時08分
溝渕です。
> CON2及びCON3(どちらかというとCON3)のピンをGPIOの様な使い方ができないか
> 考えているのですが、可能なものでしょうか?
可能です。
Armadillo-810のカーネルでは、CON3をUARTとして使うことを前提にしているた
め、ソースコードを変更する必要があります。
/sys/class/gpio/
から制御したい場合は、該当ピンのマルチプレクスを変更します。SCIFA2としてマルチプレクスする個所をコメントアウトし、
arch/arm/mach-shmobile/include/mach/board-armadillo810.c
GPIOとしてマルチプレクスします。
arch/arm/mach-shmobile/include/mach/board-armadillo810.c
デフォルトで
/sys/class/gpio/
にGPIOディレクトリを作成したい場合は、次のようにexportしてください。
# ちなみに試していないので動くかどうかわかりませんが、考え方としては上
# 記で合っていると思います。
# 上記は、Linuxカーネルの変更のみなので、ブートローダ Hermit-At からは
# UARTとして利用されます。
また、カーネルを変更せずに、
tty_ioctl
の"TIOCMGET
"コマンドを使用してRTS, CTSピンをGPIOのように扱うこともできます(入出力方向は固定です)。
以上です。