How-to: Bus Pirate V1, Interfaccia seriale universale migliorata

Utilizziamo il pirata del bus per interfacciare un nuovo chip senza scrivere codice o creazione di un PCB. Basato sul tuo feedback, e la nostra esperienza utilizzando il pirata del bus originale per dimostrare varie parti, abbiamo aggiornato il design con nuove funzionalità e componenti più convenienti.

C’è anche un aggiornamento del firmware per entrambe le versioni hardware PIRATE BUS, con correzioni di bug e un PC al decodificatore della tastiera. Dai un’occhiata alla nuova pagina Hack A Day Bus Pirate, e sfoglia il codice sorgente del pirata Bus nel nostro repository SVN Code Google.

Copriamo gli aggiornamenti di progettazione e interfacciano un convertitore digitale a analogico sottostante.

Panoramica del concetto

Il pirata dell’autobus è iniziato come una raccolta di frammenti di codice che abbiamo usato per testare nuovi chip senza cicli di sviluppo del programma di compilazione senza limiti. Lo abbiamo rilasciato in un modo in cui e l’abbiamo usato per dimostrare un gruppo di interfaccia seriale ICS nei nostri posti di parti. Questo post introduce un design aggiornato con nuove funzionalità e un grappolo di miglioramenti.

Design della superficie della superficie

Resistenitori di pull-up su tutte le linee di autobus con sorgente di tensione esterna

Software ripristinabile 3.3Volt e alimentatori a 5 Volt

Monitoraggio della tensione di tutti gli alimentatori

Una sonda di misurazione della tensione esterna

Parti più economiche

Hardware

Clicca per un’immagine schematica a grandezza naturale (PNG). Il circuito e il PCB vengono creati utilizzando la versione freeware di Cadsoft Eagle. Tutti i file per questo progetto sono inclusi nell’archivio del progetto collegato alla fine dell’articolo.

Microcontrollore.

Abbiamo utilizzato un microchip microcontrollore soic Microchip PIC24FJ64GA002 28PIN (IC1) in questo progetto. I pin di potenza hanno condensatori di bypass da 0,1UF a terra (C1,2). Il regolatore interno di 2.5Volt richiede un condensatore da 10UF Tantalum (C20). Il chip è programmato tramite un’intestazione a cinque pin (ICSP). Per la funzione MCLR è necessaria una resistenza a 2 carati (R1) per la funzione MCLR sul PIN 1. Leggi molto di più su questo chip nella nostra introduzione PIC24F.

Ricetrasmettitore RS-232

Un ricetrasmettitore MAX3232CSE RS232 economico (IC2) interfaccia la foto su una porta seriale del PC. Questo chip sostituisce il costoso trasparente MAX323EPPP + utilizzato nella versione precedente del pirata del bus. L’interfaccia seriale funzionerà con un adattatore seriale USB->.

Resistori pull-up del bus

Il pirata del bus originale ha resistori di tiraggio a 3.3Volt su 2 perni, ma molti dei nostri test richiedevano resistori esterni aggiuntivi. Il design aggiornato ha resistori di pull-up (R20-23) sui tre segnali del bus principale (dati in, dati, orologio) e il perno di selezione del chip (CS).

Una fila di ponticelli (SV5) collega ciascun resistore a una tensione esterna fornita attraverso il terminale di VEXT (X4). I resistori del foro passano sono utilizzati come i fili del ponticello per rendere il PCB molto più facile da incidere a casa.

Non siamo riusciti a trovare un modo sofisticato per controllare una varietà di resistenza pull-up di tensione arbitraria da un microcontrollore da 3.3Volt. Se hai qualche idea, per favore condividili nei commenti.

Alimentazione elettrica

VR1 è una fornitura di 3.3Volt per il ricetrasmettitore Microcontroller e RS232. VR2 è una fornitura di 5 Volt. Entrambi richiedono due condensatori di bypass 0,1UF (C3-C6). J1 è un jack di alimentazione per una spina comune da 2,1 mm di canna DC. 7-10Volts DC è probabilmente l’intervallo di alimentazione ottimale.

Il pirata del bus originale ha avuto doppia alimentatori, 3.3 volte e 5volt, quindi molti ICS potrebbero essere interfacciati senza un ulteriore alimentazione. Un grave fastidio era la mancanza di un reset di potenza per chip collegati. Se un IC malconfigurato doveva essere il ciclo elettrico, abbiamo dovuto scollegare un filo. Siamo stati così usurati di questa routine che abbiamo aggiunto un reset controllato dal software al design aggiornato.

VR3 (3.3Volt) e VR4 (5volts) sono regolatori di tensione TI TPS796xx con un interruttore di abilitazione. Un livello elevato sul PIN 1 abilita il regolatore. Un resistore a discesa (R13, R13, R12) si assicura che i regolatori siano spenti quando la foto non sta guidando attivamente la linea, ad esempio durante l’inizializzazione dell’alimentazione. La scheda tecnica specifica un grande condensatore sui perni di ingresso (C23, C21) e USCITA (C24, C22), abbiamo utilizzato lo stesso Tantano 10uf che usiamo ovunque. An additional, optional, 0.1uF capacitor (C12,C11) can improve regulation.

The switchable regulators are powered by VR2, a 5volt supply.  We did this because the maximum input for VR3 and VR4 is 6volts, leaving the device with a narrow 5.2-6volt power supply range. VR2 will work well above 10volts, and supplies an appropriate supply for the other regulators.

VR3 (3.3volts) has plenty of headroom to operate from a 5volt supply. VR4 (5volts) will lose about 0.2volts, but 4.8volts remains well within the acceptable range for a lot of 5volt chips. In practice, and under light loads, we see less than 0.1volts drop-out from VR4.

Voltage monitoring

Voltage monitoring is a new feature we’re really ecstatic about. has your project ever mysteriously stopped responding because of an accidental short circuit? The Bus Pirate’s power supplies are equipped with voltage monitoring that can discover a change in power levels.

Each monitored signal is connected to an analog to digital converter (ADC) through a resistor voltage divider. two 10K resistors (R10,R11 above) divide the input voltage in half, making it possible to measure up to 6.6volts with the 3.3volt photo microcontroller.

The Bus Pirate has four voltage monitors. The 3.3volt and 5volt power supplies are monitored, as is the external voltage fed to the pull-up resistors. A fourth monitor is connected to pin 9 of the output header to make a voltage probe.

PCB.

Click for a full size placement diagram (PNG). The board is a supposedly single-sided design, we etched ours in the lab on a single-sided photo-resist PCB. At the top, near C13, two jumper wires meet at a single via; we soldered one jumper wire to the other on the back of the board.

Part list

Parte
Valore

IC1
PIC24FJ64GA002 (SOIC)

IC2
MAX3232CSE (SOIC-N)

VR1
LD1117S33 3.3volt regulator (SOT223)

VR2
LD1117s50 5volt regulator (SOT223)

VR3
TPS79633 3.3volt regulator (SOT223-6)

VR4
TPS79650 5volt regulator (SOT223-6)

C1-13
0.1uF capacitor (0805)

C20-24
10uF tantalum capacitor (SMC A)

R1
2000 ohm resistor (0805)

R2,3
390 ohm resistor (0805)

R4-13
10000 ohm resistor (0805)

R20-23
2.2K–10K ohm resistor (through-hole)

LED1,2
LED (0805)

J1
2.1mm power jack

X2,X4
screw clamp (2 terminals) *untested

X3.
db9 female serial port connector *untested

ICSP.
0.1″ pin header, straight

SV4
0.1″ pin header or shrouded header

SV5
0.1″ pin header, straight

Firmware

The firmware is written in C using the complimentary demonstration version of the photo C30 compiler. learn all about working with this photo in our introduction to the photo 24F series.

The most current firmware is posted on the Hack a Day Bus Pirate page. the current source is in our Google Code SVN repository.

Usandolo

The diagram above shows the Bus Pirate pinout.

We made a cord with alligator clips on the end, and added labels to each wire so we don’t have to refer to this table whenever we interface a new chip.

If you know of any amazing connectors or cables, please link to them in the comments.

LTC2640 SPI digital to analog voltage converter

The Linear technology LTC2640-LZ8 is an 8bit digital to analog converter (DAC) programmed over SPI. A DAC is essentially a programmable voltage divider. They’re beneficial for recreating waveforms, such as audio signals. An 8bit DAC has 255 even intervals between 0 and the reference voltage, the L part we used has an internal 2.5volt reference.

The LTC2640 only comes in a small SOT223-8 package, so we made a breadboard adapter in the profile of a DIP-8 chip.  Our LTC2640 footprint is included in the project archive attached at the end of this article.

The schematic above shows our test circuit for the LTC2640. It requires a 2.7-5volt power supply, we used the Bus Pirate’s 3.3volt supply. C1 is a bypass capacitor between the power pin and ground. Pin 8 is an active-low reset pin, tie it high for normal operation. Pin 7 is the DAC output, connect the Bus Pirate voltage measurement probe (ADC) here.

Pirata dell’autobus
LTC2640 (pin #)

Mosi
SDI (3)

OROLOGIO
SCK (2)

Cs.
CS/LD (1)

Adc.
VOUT (7)

+ 3.3Volts.
CLR (8 )

+ 3.3Volts.
VDD (5)

Gnd.
GND (4)

We connected the Bus Pirate to the LTC2640 as shown in the table. The LTC2640 doesn’t have a data output pin, this SPI connection remains unused.

The Bus Pirate’s hardware SPI library and software RAW3WIRE library are compatible with the LTC2640’s SPI interface. We used the SPI library; if you use the RAW3WIRE library be sure to choose normal pin output.

HIZ> M <-Select mode 1. Hiz. 2. 1 filo 3. UART. 4. I2C. 5. SPI 6. JTAG 7. RAW2WIRE 8. RAW3WIRE 9. PC alla tastiera MODE>5<–SPI or RAW3WIRE Set di modalità 900 Set speed: 1. 30KHz 2. 125KHz 3. 250KHz 4. 1MHz SPEED>1 <–test at low speed ... 102 SPI READY SPI >.

Press M for the Bus Pirate mode menu, choose 5 for SPI mode. There are a bunch of configuration options for the SPI module, use the default options for all of them. After SPI mode is ready we need to configure the power supply.

SPI>p<–power supply setup W / W Appagni 3.3 fornitura di fornitura? 1. No. 2. Sì MODE>2<–use 3.3volt supply W / W Appagni 5 Volt Forniture? 1. No. 2. Sì MODE>1<–don’t use 5volt supply Alimentazione 9xx configurata, utilizzare w / w per alternare Monitor di tensione 9xx: 5 V: 0.0 | 3.3V: 0.0 | VPULLUP: 0.0 | SPI >.

p opens the Bus Pirate power supply menu. We use the 3.3volt supply but not the 5volt supply. The voltage monitor verifies that the power supplies are off.

SPI>W<–capital W (silly CSS) enables power supply 9xx 3.3VOLT supply ON SPI>v<–voltage monitor Monitor di tensione 9xx: 5 V: 0.0 | 3.3V: 3.3 | VPULLUP: 0.0 | SPI >.

Capital ‘W’ enables any power supplies selected in the previous menu, a small ‘w’ disables them. V displays the supply voltage monitor, which now shows 3.3volts output from the 3.3volt supply.

Now that configuration is finished, we can send commands to the LTC2640 over the SPI bus. The LTC2640 has a 24bit (3byte) interface protocol. The first byte is a command, followed by two data bytes. The LTC2640 is available in 8,10, and 12bit versions; the 8bit version uses the first byte to set the DAC valuE, e ignora il secondo byte.

SPI> [0b00110000 255 0] <- Set DAC per intero 110 SPI CS abilitato 120 SPI Scrivi: 0x30 <-write DAC Command 120 SPI Scrivi: 0xFF <-DAC Valore 120 SPI Scrivi: 0x00 <-don't Area 140 cs disabili SPI >.

Ogni comando SPI inizia abilitando il chip Select Pin ([). Il primo byte è il comando di aggiornare il DAC (0B00110000), seguito dal valore all’uscita (255) e dal terzo byte che viene ignorato (0). Il comando termina disabilitando il chip Select (]).

Abbiamo utilizzato un DAC a 8 bit con 255 passaggi di tensione anche, l’uscita impostata su 255 è al 100%. Possiamo utilizzare la sonda di tensione pirata autobus per misurare l’uscita.

SPI> D <-Measure Tensione Sonda di tensione 9xx: uscita da 2.5Volts <-Dac SPI >.

D innesca una misurazione della tensione. La tensione di uscita DAC è al 100% (255/255) del riferimento interno, 2,5 volte.

SPI> [0b00110000 0 0] D
110 SPI CS abilitato
120 SPI Scrivi: 0x30 <-write DAC Command 120 SPI Scrivi: 0x00 <-Dac valore 120 SPI Scrivi: 0x00 <-don't Area 140 cs disabili Sonda di tensione 9xx: 0,0 volte output <-Dac SPI >.

Lo stesso comando con un valore DAC di 0 uscite 0% (0/255) di 2,5 volte; 0volts.

SPI> [0b00110000 128 0] D
110 SPI CS abilitato
120 SPI Scrivi: 0x30 <-write DAC Command 120 SPI Scrivi: 0x80 <-DAC valore 120 SPI Scrivi: 0x00 <-don't Area 140 cs disabili Sonda di tensione 9xx: 1.2Volts <-Dac output SPI >.

Un valore DAC di 128 è di circa il 50% (128/255) della tensione di riferimento, 1.2volt.

SPI> [0b01000000 0 0] D
110 SPI CS abilitato
120 SPI Scrivi: 0x40 <-Power Down Command 120 SPI Scrivi: 0x00 <-don't Area 120 SPI Scrivi: 0x00 <-don't Area 140 cs disabili Sonda di tensione 9xx: 0,0 volte <-dac off SPI >.

LTC2640 ha una modalità a bassa potenza, attivata dal comando 0b01000000 e due byte che vengono ignorati. Dopo il comando di accensione, possiamo verificare che ci sia uscita dal DAC. Scrivi qualsiasi valore DAC per uscire dalla modalità a bassa potenza.

Prendendolo oltre

Qual è il prossimo passo per il pirata dell’autobus? Alla fine effettueremo un aggiornamento finale al design che include USB su PCB a doppia facciata professionale. I LED dell’indicatore di alimentazione sono stati predisposti per questa versione, ma non è stato incluso. Sarebbe anche utile avere un connettore a tastiera per il debug senza PC. check out the roadmap and wishlists on the Hack a Day Bus Pirate page.

Download: buspirate.v1a.zip

Leave a Reply

Your email address will not be published.