Aby przetestować, czy Bus Pirate działa, podłącz +5V do VPU i 3.3V do ADC, a następnie uzyskaj dostęp do bus pirate (na przykład używając Tera Term) i użyj polecenia ~:
# Use commandHiZ>~DisconnectanydevicesConnect (Vpu to+5V) and (ADCto+3.3V)Spacetocontinue# Press spaceCtrlAUXOKMODELEDOKPULLUPHOKPULLUPLOKVREGOKADCandsupply5V(4.96) OKVPU(4.96) OK3.3V(3.26) OKADC(3.27) OKBushighMOSIOKCLKOKMISOOKCSOKBusHi-Z0MOSIOKCLKOKMISOOKCSOKBusHi-Z1MOSIOKCLKOKMISOOKCSOKMODEandVREGLEDsshouldbeon!Anykeytoexit#Press spaceFound0errors.
Jak widać w poprzedniej linii poleceń, powiedziano, że znaleziono 0 błędów. To bardzo przydatne, aby wiedzieć, że działa po zakupie lub po wgraniu oprogramowania.
Aby połączyć się z bus pirate, możesz postępować zgodnie z dokumentacją:
W tym przypadku zamierzam połączyć się z EPROM: ATMEL901 24C256 PU27:
Aby rozmawiać z bus pirate, użyłem Tera Term połączonego z portem COM bus pirate z ustawieniem Setup --> Serial Port --> Speed of 115200.
W poniższej komunikacji możesz znaleźć, jak przygotować bus pirate do komunikacji I2C oraz jak pisać i czytać z pamięci (Komentarze pojawiają się z użyciem "#", nie oczekuj tej części w komunikacji):
# Check communication with buspirateiBusPiratev3.5CommunityFirmwarev7.1-goo.gl/gCzQnW [HiZ 1-WIREUARTI2CSPI2WIRE3WIREKEYBLCDPICDIO]Bootloaderv4.5DEVID:0x0447REVID:0x3046 (24FJ64GA00 2B8)http://dangerousprototypes.com# Check voltagesI2C>vPinstates:1.(BR) 2.(RD) 3.(OR) 4.(YW) 5.(GN) 6.(BL) 7.(PU) 8.(GR) 9.(WT) 0.(Blk)GND3.3V5.0VADCVPUAUXSCLSDA--PPPIIIIIIIGND3.27V4.96V0.00V4.96VLHHLL#Notice how the VPU is in 5V becausethe EPROM needs 5V signals# Get mode optionsHiZ>m1.HiZ2.1-WIRE3.UART4.I2C5.SPI6.2WIRE7.3WIRE8.KEYB9.LCD10.PIC11.DIOx.exit(withoutchange)# Select I2C(1)>4I2Cmode:1.Software2.Hardware# Select Software mode(1)>1Setspeed:1.~5kHz2.~50kHz3.~100kHz4.~240kHz# Select communication spped(1)>2Clutchdisengaged!!!Tofinishsetup,startupthepowersupplieswithcommand'W'Ready# Start communicationI2C>WPOWERSUPPLIESONClutchengaged!!!# Get macrosI2C>(0)0.Macromenu1.7bitaddresssearch2.I2Csniffer#Get addresses of slaves connectedI2C>(1)SearchingI2Caddressspace.Founddevicesat:0xA0(0x50W) 0xA1(0x50R)# Note that each slave will have a write address and a read address# 0xA0 ad 0xA1 in the previous case# Write "BBB" in address 0x69I2C>[0xA00x000x690x420x420x42]I2CSTARTBITWRITE:0xA0ACKWRITE:0x00ACKWRITE:0x69ACKWRITE:0x42ACKWRITE:0x42ACKWRITE:0x42ACKI2CSTOPBIT# Prepare to read from address 0x69I2C>[0xA00x000x69]I2CSTARTBITWRITE:0xA0ACKWRITE:0x00ACKWRITE:0x69ACKI2CSTOPBIT# Read 20B from address 0x69 configured beforeI2C>[0xA1r:20]I2CSTARTBITWRITE:0xA1ACKREAD:0x42ACK0x42ACK0x42ACK0x20ACK0x48ACK0x69ACK0x20ACK0x44ACK0x72ACK0x65ACK0x67ACK0x21ACK0x20ACK0x41ACK0x41ACK0x41ACK0x00ACK0xFFACK0xFFACK0xFFNACK
Sniffer
W tym scenariuszu zamierzamy podsłuchiwać komunikację I2C między arduino a poprzednim EPROM-em, wystarczy połączyć oba urządzenia, a następnie podłączyć bus pirate do pinów SCL, SDA i GND:
I2C>m1.HiZ2.1-WIRE3.UART4.I2C5.SPI6.2WIRE7.3WIRE8.KEYB9.LCD10.PIC11.DIOx.exit(withoutchange)(1)>4I2Cmode:1.Software2.Hardware(1)>1Setspeed:1.~5kHz2.~50kHz3.~100kHz4.~240kHz(1)>1Clutchdisengaged!!!Tofinishsetup,startupthepowersupplieswithcommand'W'Ready# EVEN IF YOU ARE GOING TO SNIFF YOU NEED TO POWER ON!I2C>WPOWERSUPPLIESONClutchengaged!!!# Start sniffing, you can see we sniffed a write commandI2C>(2)SnifferAnykeytoexit[0xA0+0x00+0x69+0x41+0x41+0x41+0x20+0x48+0x69+0x20+0x44+0x72+0x65+0x67+0x21+0x20+0x41+0x41+0x41+0x00+]