LoginSignup
0
0

More than 3 years have passed since last update.

GPIOの探し方

Last updated at Posted at 2019-12-30

mruby on YABMを動かしているBCM5354なGemtek WRTB-204GなデバイスのGPIOを探してみました。

基板の写真はInternal-Photos-830239.pdfというファイルで見ることができます。

led.rb
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のどのピンにアサインされているかを確認します。

回路はこのようになっています。

LED.png

ビットが立つと消灯します。

パターン 表示 接続
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で制御してみました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0