Archive for June, 2010

Bus Pirate V3b



Bus Pirate

Bus Pirate (pcb+kutija+kablovi)


Naleteh pre nekog vremena na Bus Pirate, odličan proizvod za svakoga ko želi da debagira standardne serijske protokole poput I2c, SPI, asinhroni seriski, 1wire i slične. Razvio ga je Ian Lesnet i za divno čudo postavio kao open source projekat (svn je hostovan na google code-u).


Osnovne mogućnosti Bus Pirate-a su

  • 0-5.5V tolerantni pinovi
  • 0-6V analogno digitalni konverter (analog probe)
  • 1Hz – 40MHz frekvencmetar
  • 300Hz do 8MHz generator frekvencije + PWM
  • pull up otpornici na ploči koji idu na “odabrani” napon (postoji izveden pin na koji se dovodi željeni pull up napon)
  • upravljivi 3V3 i 5V izvori struje (moguće napajati druge uređaje)
  • mogućnost pisanja makroa koje će bus pirate da izvrši
  • bootloader (nema potrebe za programatorom)
  • usb konekcija ka računaru
  • 10Hz – 1MHz logic analyzer
  • može da glumi AVR500STKv2 programator
  • avrdude ume da ga koristi nativno da programira AVR mikrokontrolere
  • protokol snifer
  • protokol klijent-server


    Bus Pirate

    Bus Pirate


    • 1-wire
    • I2C
    • SPI
    • JTAG
    • Asinhroni seriski
    • MIDI
    • PC Tastatura (ps2)
    • HD44780 LCD
    • binarni 2wire i 3wire protokol
    • bitbanging kroz skripting

Standardan mod rada sa Bus Pirate-om je kroz serisku konzolu. Direktno kroz menije samog Bus Pirate-a možete pričati sa i2c epromom ili snifati sta priča mikrokontroler sa drugim mikrokontrolerom na SPI magistrali. Ma koliko je konzolni rad sa njim prijatan i brz, vrlo često je zgodno neke stvari videti nacrtane tako da sam ja počeo da pravim neki maleni gui. Za sada (posle oko 1.5h rada) postoji mali app koji ume da priča sa piratom da pokupi neke osnovne podatke sa njega (stanje pinova, vrednost na analognoj sondi, da pusti pwm etc..) čisto za test kako to funkcioniše. Kada uvatim koji minut napraviću i deo za priču sa raznim protokolima ..


Bus Pirate

Bus Pirate


Za zainteresovane, kolega je rešio da napravi kit pošto je dobavka samog bus pirate-a u ove krajeve malo poskupa (poštarina, carina, takse, lopovluk, bezobrazluk i tako to) te da olakša ljudima da do ove extra korisne sprave dođu. Zainteresovani mogu da vide više podataka tamo na forumu.

Primer kako se Bus Pirate koristi (MOSI pin na bp-u je spojen na SDA na i2c eepromu, CLOCK sa bp-a na SCL na i2c epromu, GND su spojeni, 5V je spojen sa bp-a na eeprom i VPU (zelena zicka) je spojena na 5V):

Bus Pirate v3
Firmware v5.1 (rxxx) Bootloader v4.4
DEVID:0x0447 REVID:0x3043 (B5)

http://dangerousprototypes.com

HiZ> ?
General                                 Protocol interaction
---------------------------------------------------------------------------
?       This help                       (0)     List current macros
= X     Converts 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       Generate frequency/PWM          /       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       //<0>   Usermacro x/assign x/list all
w/W     PSU (off/ON)
HiZ> m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. KEYB
9. LCD
x. exit(without change)

(1)> 4
Set speed:
 1. ~5KHz
 2. ~50KHz
 3. ~100KHz
 4. ~400KHz

(1)> 3
Ready.
I2C> P
Pull-up resistors ON
I2C> W
POWER SUPPLIES ON
I2C> (1)
Searching 7bit I2C address space.
   Found devices at:0xA0(0x50 W) 0xA1(0x50 R) 0xA2(0x51 W) 0xA3(0x51 R)
I2C> [0xA2 2 [ 0xA3 r]
I2C START BIT
WRITE: 0xA2 ACK
WRITE: 0x02 ACK
I2C START BIT
WRITE: 0xA3 ACK
READ: 0xAA
NACK
I2C STOP BIT
I2C> [0xA2 2 77]
I2C START BIT
WRITE: 0xA2 ACK
WRITE: 0x02 ACK
WRITE: 0x4D ACK
I2C STOP BIT
I2C> [0xA2 2 [ 0xA3 r]
I2C START BIT
WRITE: 0xA2 ACK
WRITE: 0x02 ACK
I2C START BIT
WRITE: 0xA3 ACK
READ: 0x4D
NACK
I2C STOP BIT
I2C> [0xA2 2 0x77]
I2C START BIT
WRITE: 0xA2 ACK
WRITE: 0x02 ACK
WRITE: 0x77 ACK
I2C STOP BIT
I2C> [0xA2 2 [ 0xA3 r]
I2C START BIT
WRITE: 0xA2 ACK
WRITE: 0x02 ACK
I2C START BIT
WRITE: 0xA3 ACK
READ: 0x77
NACK
I2C STOP BIT
I2C>
I2C> m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. KEYB
9. LCD
x. exit(without change)

(1)> 1
Ready.
HiZ>

Dakle, usli smo u i2c bus mod, upalili pull up otpornike, upalili napajanje, pustili skript (1) da pogleda koji sve i2c uredjaji se javljaju, procitali sadrzaj pozicije 2, upisali novu vrednost u poziciju 2, procitali je, upisali novu, procitali i nju, vratili se u “home” mod. Kao sto se da videti iz primera rad je prilicno jednostavan, [ je pocetak bus protokola .. za I2C to je start bit, ] je kraj protokola, u ovom slucaju stop bit, brojka je “slanje”, R je “primanje” .. i to je generalno to :)

Tags:

I tako pričam ja sa jednim drugarom i spomene mi čovek da prodaje svoj osciloskop “za teren” pošto je kupio neku zverku i ovaj mu stoji. Ždraknem net da vidim šta je tačno GW INSTEK GDS-1022 i zaključim da je odlična stvar za mene za super male pare. Kolega mi doveze spravu, ostavimo je sa strane i nastavimo da meljemo o nekim desetim stvarima… sve u svemu, posle nekog vremena ja poželim da okačim isti na USB pošto jeli “može” cisto da vidim na šta to liči ..

Prva prepreka – win7 64bit – GW INSTEK GDS-1000 drajver za USB ne radi na 64bitnim windoza, potpuni bedak pošto je to običan serijski port … zo, i za to ima rešenje, na brzaka sam prepravio original inf fajl i voila, evo ga 64bitni inf za inset gds-1000 osciloskop

; Windows 2000 and XP setup File for DSO CDC Driver
; Modification for 64bit WIN7 by Bogdan Kecman

[Version] 
Signature="$Windows NT$" 
Class=Ports 
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} 

Provider=%DSO% 
LayoutFile=layout.inf 
DriverVer=10/15/1999,5.0.2153.1 

[Manufacturer] 
%DSO%=DSO,ntamd64

[DSO.ntamd64]
%DSO_CDC%=Reader, USB\VID_0558&PID_2009
%DSO_CDC%=Reader, USB\VID_0558&PID_1009

[DSO] 
%DSO_CDC%=Reader, USB\VID_0558&PID_2009
%DSO_CDC%=Reader, USB\VID_0558&PID_1009

[Reader_Install.ntamd64] 
;Windows2000 

[Reader_Install.NTx86] 
;Windows2000 

[DestinationDirs] 
DefaultDestDir=12 
Reader.NT.Copy=12 

[Reader.NT] 
include=mdmcpq.inf	;for VISTA driver installation
CopyFiles=FakeModemCopyFileSection
;CopyFiles=Reader.NT.Copy 
AddReg=Reader.NT.AddReg 

[Reader.NT.Copy] 
usbser.sys 

[Reader.NT.AddReg] 
HKR,,DevLoader,,*ntkern 
HKR,,NTMPDriver,,usbser.sys 
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" 

[Reader.NT.Services] 
AddService = usbser, 0x00000002, Service_Inst 

[Service_Inst] 
DisplayName = %Serial.SvcDesc% 
ServiceType = 1 ; SERVICE_KERNEL_DRIVER 
StartType = 3 ; SERVICE_DEMAND_START 
ErrorControl = 1 ; SERVICE_ERROR_NORMAL 
ServiceBinary = %12%\usbser.sys 
LoadOrderGroup = Base 

[Strings] 
DSO = "DSO" 
DSO_CDC = "DSO" 
Serial.SvcDesc = "USB Serial emulation driver" 

Free Wave software inside VirtualBox

FreeWave

Kaboom, i sada se gds-1000 vidi lepo kao com port. Na žalost ovaj patetični software koji ide uz instek DSO ne radi na WIN7 no ništa niste propustili, software daje mogućnost da vidite ekran osciloskopa i da mu zadate par naredbi, ništa više, ono što jeste zgodno je LabView drajver koji sada radi te direktno iz LabView možete da merite vrednosti osciloskopom ili direkt kroz bilo koji terminal možete da pričate sa osciloskopom (ili npr napišete neki svoj software za priču sa istim)…. Da, ako imate VirtualBox i u njemu neki XP, možete (kada instalirate drajvere za 64bitni host) da propustite usb na virtuelnu mašinu i odatle koristite ovaj očajni app.

Doduše program pokazuje neke vrlo lepe mogućnosti DSO-a kao što je akvizicija podataka “na daljinu”

Akvizicija podataka

Akvizicija podataka

Da ne budem shvaćen pogrešno, sam osciloskop je odličan, samo je sw koji ide uz njega – patetika

Tags: , ,
Back to top