Neko noč (neprespan) sem naročil novo igračko, ki nosi ime Bus Pirate, in predstavla povezljivost med računalnikom (USB) in kar precej drugimi protokoli (1-Wire, UART, I2C, SPI, JTAG, raw 2-wire, raw 3-wire, HD44780 LCDs, MIDI)

Ploščica, z kablom škatlico in poštnino, stane cca 30eur pri seeedstudiu.
Za prvi test sem uporabil RFID bralec (125kHz, link), ki podatke pošilja prek UART-a. Povezal sem RX in TX pine, ter napajanje (+5V)

Bus Pirate se (po povezavi z USB kablom) računalniku pokaže kot serijski vmesnik, v mojem primeru na /dev/ttyUSB0. Po odprtju porta (screen /dev/ttyUSB0 115200), in nekah pritiskih na tipko Enter, vidimo ukazno vrstico:
HiZ>
ki nam omogoča upravljanje z napravo. Ukazni način, čeprav morda malo neudoben, naredi napravo precej enostavno za uporabo. Če pritisnemo '?' in tipko enter, dobimo pomoč:
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) //<0> Usermacro x/assign x/list all
Prvo vključimo napajanje (W), in s tipko 'm', izberemo 3 (UART), 5 (9600), in ostale nastavitve pustimo na privzetih:
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)>3
Set serial port speed: (bps)
1. 300
2. 1200
3. 2400
4. 4800
5. 9600
6. 19200
7. 38400
8. 57600
9. 115200
10. BRG raw value
(1)>5
Data bits and parity:
1. 8, NONE *default
2. 8, EVEN
3. 8, ODD
4. 9, NONE
(1)>
Stop bits:
1. 1 *default
2. 2
(1)>
Receive polarity:
1. Idle 1 *default
2. Idle 0
(1)>
Select output type:
1. Open drain (H=Hi-Z, L=GND)
2. Normal (H=3.3V, L=GND)
(1)>
Ready
UART>
Podobno lahko nastavimo katerikoli drugi protokol (seveda nastavitve, ki jih protokol podpira). Sedaj pritisnemo tipko '{', ki začne z branjem, in čitalcu približamo kartico.
UART>
READ: 0x02
READ: 0x30
READ: 0x38
READ: 0x30
READ: 0x30
READ: 0x44
READ: 0x42
READ: 0x35
READ: 0x44
READ: 0x46
READ: 0x34
READ: 0x37
READ: 0x41
READ: 0x03
UART>
Tako vidimo na kartici zapisano kodo, ki jo čitalec pošlje. Če bi namesto rfid čitalca uporabil napravo ki tudi kaj 'posluša', bi ji lahko pošiljal poljubne podatke.
Zanimiv feature je tudi preverjanje napetosti na pinih:
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 - TxD - RxD
P P P I I I I I I I
GND 3.31V 5.15V 0.00V 0.00V L L H L H
Naslednja stvar (tj. eden izmed mnogih TODO-jev) je stestirati SPI na smart kartici!