フォト
無料ブログはココログ

MyList

« 大橋純子 <齢を重ねてこそ> | トップページ | 日本軍「戦略なき組織」 検証失敗の本質(2) »

2018年9月 3日 (月)

Bus pirate <先割れスプーン的だが便利だ>

Bus pirate 3.6aをスイッチサイエンスで買った。

Buspirate36_2
↑(スイッチサイエンスの箱の上で撮った。宣伝ではありません)

Bus pirateDANGEROUSPROTOTYPESのオープンソースのユニバーサル・バスインタフェースで、スイッチサイエンスで売っているのはSpeed Studioが造っている。

今回買ったのはver3.6aだ。 実はver4.0が出ていて、マルツは4.0を売っているのだが、ちょっと急いでいたので即日発送のスイッチサイエンスで買った。 (実は、v4.0の部品も買ってあるのだが...)

 このボードを一言でいうと、1-wireやI2CやSPI、マイコン系の萬プロトコルの制御ができるツール。他に周波数測定やPWMが発生できる。

 わざわざこんな先割れスプーン的なツールを買わなくてもマイコンを使ったらできる。 Arduinoはライブラリが充実しているので簡単にできるのだが...

 Bus pirateはFT232の先にPIC24FJ64GA002が繋がっていて、レベルシフタでバスに繋がっている。

Buspirate36_1

Ft232rl Pic24f

ターミナルソフトでつないでコマンドを入力して制御してみる。

"?"を入力するとコマンド一覧が表示される。
"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)

Buspirate36_i2c

↑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の投稿

« 大橋純子 <齢を重ねてこそ> | トップページ | 日本軍「戦略なき組織」 検証失敗の本質(2) »

CPUボード」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Bus pirate <先割れスプーン的だが便利だ>:

« 大橋純子 <齢を重ねてこそ> | トップページ | 日本軍「戦略なき組織」 検証失敗の本質(2) »