GPIOの探し方
mruby on YABMを動かしているBCM5354なGemtek WRTB-204GなデバイスのGPIOを探してみました。
基板の写真はInternal-Photos-830239.pdfというファイルで見ることができます。
begin
yabm = YABM.new
bit = 0
maxpin = 8
orgdir = yabm.gpiogetdir()
orgctl = yabm.gpiogetctl()
yabm.print "ORG DIR: " + orgdir.to_s + " CTL: " + orgctl.to_s + "\r\n"
yabm.gpiosetdir(0xff)
while 1 do
yabm.print bit.to_s + " "
yabm.gpiosetdat(1 << bit)
bit = bit + 1
if bit == maxpin
bit = 0
end
6.times {
start = yabm.count()
while yabm.count() < start + 1000 do
end
yabm.print "*"
}
yabm.print "\r\n"
end
rescue => e
yabm.print e.to_s
end
このスクリプトを実行してLEDがGPIOのどのピンにアサインされているかを確認します。
回路はこのようになっています。
ビットが立つと消灯します。
パターン | 表示 | 色 | 接続 |
---|---|---|---|
LED1 | POWER | 緑 | GND直結 |
LED10 | SECURITY | 橙 | GPIO6 |
LED2 | WIRELESS | 緑 | GPIO2 |
LED6 | GPIO1(未実装) | ||
LED11 | DIAG | 赤 | GPIO7 |
LED7 | ?(未実装) | ||
LED4 | INTERNET | 緑 | Ethernet |
yabmでのLEDの制御はこんな感じで書けます。
LED10 = (1 << 6)
reg = yabm.gpiogetdat
# 点灯
yabm.gpiosetdat(reg & ~LED10)
# 消灯
yabm.gpiosetdat(reg | LED10)
スイッチもテスターであたって、確認します。
パターン | GPIO |
---|---|
SW1 | 0 |
SW2 | 4 |
これで3と5がないので、最初液晶とスイッチの基板に実装されているHT82K68Eへの接続が3,5なのかと思って調べていたのですが、テスターが反応しません。
BCM5354はPRODUCT Briefを見ても使えそうなインターフェースがGPIOとUSBしかないので、これのどちらかだと考えたのですがHT82K68EはUSBは使えないので、GPIOではないかと考えていました。
しばらく基板とにらめっこしてふと気が付きました。左上にSW3という未実装なパターンがあり、そこが3,5でした。
BCM5354はuartが2つあるのでHT82K68Eへの接続はuartでした。
ちょうどBitbangなI2Cを試したいとおもっていたので3,5を使うことにしました。
ビットの回し方を以下のようなコードを最近見かけました。
bit = (bit + 1) % maxpin
好みですが、私はあまり好きではないです。
おまけ
液晶をArudinoで制御してみました。
Author And Source
この問題について(GPIOの探し方), 我々は、より多くの情報をここで見つけました https://qiita.com/yamori813/items/c1bb87252be53d2575f9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .