Bus pirate 3.6aをスイッチサイエンスで買った。
↑(スイッチサイエンスの箱の上で撮った。宣伝ではありません)
Bus pirateはDANGEROUSPROTOTYPESのオープンソースのユニバーサル・バスインタフェースで、スイッチサイエンスで売っているのはSpeed Studioが造っている。
今回買ったのはver3.6aだ。 実はver4.0が出ていて、マルツは4.0を売っているのだが、ちょっと急いでいたので即日発送のスイッチサイエンスで買った。 (実は、v4.0の部品も買ってあるのだが...)
このボードを一言でいうと、1-wireやI2CやSPI、マイコン系の萬プロトコルの制御ができるツール。他に周波数測定やPWMが発生できる。
わざわざこんな先割れスプーン的なツールを買わなくてもマイコンを使ったらできる。 Arduinoはライブラリが充実しているので簡単にできるのだが...
Bus pirateはFT232の先にPIC24FJ64GA002が繋がっていて、レベルシフタでバスに繋がっている。
ターミナルソフトでつないでコマンドを入力して制御してみる。
"?"を入力するとコマンド一覧が表示される。
"i"を入力するとファームウェアの情報が表示される。
HiZ>? General Protocol interaction --------------------------------------------------------------------------- ? This help (0) List current macros =X/|X Converts X/reverse X (x) Macro x ~ Selftest [ Start # Reset ] Stop $ Jump to bootloader { Start with read &/% Delay 1 us/ms } Stop a/A/@ AUXPIN (low/HI/READ) "abc" Send string b Set baudrate 123 c/C AUX assignment (aux/CS) 0x123 d/D Measure ADC (once/CONT.) 0b110 Send value f Measure frequency r Read g/S Generate PWM/Servo / CLK hi h Commandhistory \ CLK lo i Versioninfo/statusinfo ^ CLK tick l/L Bitorder (msb/LSB) - DAT hi m Change mode _ DAT lo o Set output type . DAT read p/P Pullup resistors (off/ON) ! Bit read s Script engine : Repeat e.g. r:10 v Show volts/states . Bits to read/write e.g. 0x55.2 w/W PSU (off/ON) <x>/<x= >/<0> Usermacro x/assign x/list all
HiZ>i Bus Pirate v3b Firmware v5.10 (r559) Bootloader v4.4 DEVID:0x0447 REVID:0x3046 (24FJ64GA002 B8) http://dangerousprototypes.com
HiZ>
|
ファームウェアはv5.10のようだ。 サポートページによると最新はv7.0公式はv6.3で、GitHubからDLするようだ。
とりあえず、I2CのEEPROM(24LC64)を読んでみた。
ここを参考にしましたというかそのまま試した。(https://gist.github.com/yoggy/2f2ffc198cc154539506b8755f42dce8)
↑ICの足にクリップを直接つないだ。
メモ代わりに書いておく。
設定
HiZ>m ←モード設定 1. HiZ 2. 1-WIRE 3. UART 4. I2C 5. SPI 6. 2WIRE 7. 3WIRE 8. LCD 9. DIO x. exit(without change)
(1)>4 Set speed: 1. ~5KHz 2. ~50KHz 3. ~100KHz 4. ~400KHz
(1)>4 Ready
I2C>W ←W:電源ON Power supplies ON I2C>P ←P:PullUp ON Pull-up resistors ON I2C>v ←v:ピンステータス表示 Pinstates: 1.(BR) 2.(RD) 3.(OR) 4.(YW) 5.(GN) 6.(BL) 7.(PU) 8.(GR) 9.(WT) 0.(Blk) GND 3.3V 5.0V ADC VPU AUX SCL SDA - - P P P I I I I I I I GND 3.29V 5.02V 0.00V 5.03V H H H H H
I2C>(0) ←マクロでアドレスを探す 0.Macro menu 1.7bit address search 2.I2C sniffer I2C>(1) Searching I2C address space. Found devices at: 0xA0(0x50 W) 0xA1(0x50 R)
I2C>
|
VPU(#5)に5Vを供給しておくこと、ボードからもらうか#3に接続する。(上の画像では24LC64の#8ピンにオレンジ(5.0V)とグリーン(VPU)が繋がっている。)
vコマンドでステータスを見ると、VPUが5.03Vになっている。
書き込み
I2C>[0xa0 0x00 0x00 0x00 0x11 0x22 0x33 0x44 0x55 0x66 0x77] I2C START BIT ↑アドレス0x00 から8byte書く WRITE: 0xA0 ACK WRITE: 0x00 ACK WRITE: 0x00 ACK WRITE: 0x00 ACK WRITE: 0x11 ACK WRITE: 0x22 ACK WRITE: 0x33 ACK WRITE: 0x44 ACK WRITE: 0x55 ACK WRITE: 0x66 ACK WRITE: 0x77 ACK I2C STOP BIT I2C>
|
デバイスのアドレス(1byte目)は、マクロで探したアドレスを使う。
読み出し
I2C>[0xa0 0x00 0x00] ←アドレスを0x00に I2C START BIT WRITE: 0xA0 ACK WRITE: 0x00 ACK WRITE: 0x00 ACK I2C STOP BIT I2C>[0xa1 rrrrrrrr] ←8byte読む I2C START BIT WRITE: 0xA1 ACK READ: 0x00 READ: ACK 0x11 READ: ACK 0x22 READ: ACK 0x33 READ: ACK 0x44 READ: ACK 0x55 READ: ACK 0x66 READ: ACK 0x77 NACK I2C STOP BIT I2C>
|
コマンドは続けることができるようだ。
HiZ>m 4 4 I2C (mod spd)=( 0 3 ) Ready I2C>WPv Power supplies ON Pull-up resistors ON Pinstates: 1.(BR) 2.(RD) 3.(OR) 4.(YW) 5.(GN) 6.(BL) 7.(PU) 8.(GR) 9.(WT) 0.(Blk) GND 3.3V 5.0V ADC VPU AUX SCL SDA - - P P P I I I I I I I GND 3.29V 5.02V 0.00V 5.03V H H H H H I2C>[0xa0 0 0] I2C START BIT WRITE: 0xA0 ACK WRITE: 0x00 ACK WRITE: 0x00 ACK I2C STOP BIT I2C>[0xa1 r:8] I2C START BIT WRITE: 0xA1 ACK READ: 0x00 ACK 0x11 ACK 0x22 ACK 0x33 ACK 0x44 ACK 0x55 ACK 0x66 ACK 0x77 NACK I2C STOP BIT I2C>
|
便利かも。
【最近の投稿】【最近のCPUボード】【2017の投稿】【2016の投稿】【2015の投稿】
コメント