We use the Bus Pirate to interface a new chip without writing code or creating a PCB. based on your feedback, and our experience using the original Bus Pirate to demonstrate various parts, we updated the design with new features and more affordable components.
There’s also a firmware update for both Bus Pirate hardware versions, with bug fixes, and a PC AT keyboard decoder. check out the new Hack a Day Bus Pirate page, and browse the Bus Pirate source code in our Google code SVN repository.
We cover the design updates and interface a digital to analog converter below.
Concept overview
The Bus Pirate started as a collection of code fragments we used to test new chips without limitless compile-program-run development cycles. We released it in a how-to and used it to demonstrate a bunch of serial interface ICs in our parts posts. This post introduces an updated design with new features and a bunch of improvements.
Surface mount design
Pull-up resistors on all bus lines with external voltage source
Software resettable 3.3volt and 5volt power supplies
Voltage monitoring of all power supplies
An external voltage measurement probe
Cheaper parts
Matériel
Click for a full size schematic image (PNG). The circuit and PCB are created using the freeware version of Cadsoft Eagle. All the files for this project are included in the project archive linked at the end of the article.
Microcontroller
We used a Microchip PIC24FJ64GA002 28pin SOIC microcontroller (IC1) in this project. The power pins have 0.1uF bypass capacitors to ground (C1,2). The 2.5volt internal regulator requires a 10uF tantalum capacitor (C20). The chip is programmed through a five pin header (ICSP). A 2K pull-up resistor (R1) is required for the MCLR function on pin 1. read a lot more about this chip in our PIC24F introduction.
RS-232 transceiver
An economical MAX3232CSE RS232 transceiver (IC2) interfaces the photo to a PC serial port. This chip replaces the expensive through-hole MAX3223EEPP+ used in the previous version of the Bus Pirate. The serial interface will work with a USB->serial adapter.
Bus pull-up resistors
The original Bus Pirate has 3.3volt pull-up resistors on 2 pins, but a lot of of our tests required additional external resistors. The updated design has pull-up resistors (R20-23) on the three main bus signals (data in, data out, clock) and the chip select (CS) pin.
A row of jumpers (SV5) connects each resistor to an external voltage supplied through the Vext terminal (X4). Through-hole resistors are used like jumper-wires to make the PCB much easier to etch at home.
We couldn’t find an sophisticated way to control an arbitrary voltage pull-up resistor variety from a 3.3volt microcontroller. If you have any ideas, please share them in the comments.
Source de courant
VR1 is a 3.3volt supply for the microcontroller and RS232 transceiver. VR2 is a 5volt supply. Both require two 0.1uF bypass capacitors (C3-C6). J1 is a power supply jack for a common 2.1mm DC barrel plug. 7-10volts DC is probably the optimal power supply range.
The original Bus Pirate had dual power supplies, 3.3volts and 5volts, so a lot of ICs could be interfaced without an additional power supply. A major nuisance was the lack of a power reset for connected chips. If a misconfigured IC needed to be power-cycled, we had to disconnect a wire. We got so worn out of this routine that we added a software controlled reset to the updated design.
VR3 (3.3volts) and VR4 (5volts) are TI TPS796XX voltage regulators with an enable switch. A high level on pin 1 enables the regulator. A pull-down resistor (R13,R12) makes sure that the regulators are off when the photo isn’t actively driving the line, such as during power-up initialization. The datasheet specifies a large capacitor on the input (C23, C21) and output (C24, C22) pins, we used the same 10uF tantalum we use everywhere. 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 1Les résistances 0K (R10, R11 ci-dessus) divisent la tension d’entrée en deux, ce qui permet de mesurer jusqu’à 6,6 pouces avec le microcontrôleur photo de 3,3 Volt.
Le pirate de bus a quatre moniteurs de tension. Les alimentations de 3,3 Volet et 5 Volet sont surveillées, de même que la tension externe introduite aux résistances de pull-up. Un quatrième moniteur est connecté à la broche 9 de l’en-tête de sortie pour faire une sonde de tension.
Cavalier
Cliquez pour un diagramme de placement complet (PNG). La planche est une conception supposée à une seule face, nous avons gravi la nôtre dans le laboratoire sur une carte de pointe de la photo à une face. En haut, près de C13, deux fils de cavaliers se rencontrent à une seule via; Nous avons soudé un fil de cavalier à l’autre à l’arrière du tableau.
Liste des pièces
Partie
Évaluer
Ic1
Pic24fj64ga002 (SOIC)
Ic2
Max3232cse (SOIC-N)
Vr1
LD1117S33 3.3Volt régulateur (SOT223)
Vr2
LD1117S50 Régulateur 5 Volet (SOT223)
Vr3
TPS79633 3.3Volt régulateur (SOT223-6)
Vr4
Régulateur TPS79650 5 Volet (SOT223-6)
C1-13
0.1uf condensateur (0805)
C20-24
10UF Condensateur Tantalum (SMC A)
R1
Résistance de 2000 Ohm (0805)
R2,3
390 ohm résistance (0805)
R4-13
Résistance 10000 Ohm (0805)
R20-23
Résistance de 2,2k-10k Ohm (trou traversant)
LED1,2
LED (0805)
J1
Jack électrique 2.1mm
X2, x4
Pince à vis (2 bornes) * non testée
X3
Connecteur de port série DB9 Femme * non testé
ICSP
0,1 “Broche en-tête, droit
Sv4
0,1 “Broche en-tête ou en-tête enveloppé
Sv5
0,1 “Broche en-tête, droit
Firmware
Le micrologiciel est écrit en C à l’aide de la version de démonstration gratuite du compilateur photo C30. Apprenez tout sur le travail avec cette photo dans notre introduction à la série photo 24f.
Le microprogramme le plus courant est affiché sur la page pirate de bus Hack A jour de bus. La source actuelle est dans notre référentiel Google Code SVN.
En l’utilisant
Le diagramme ci-dessus montre le pirate de bus.
Nous avons fait un cordon avec des clips d’alligator à la fin et avons ajouté des étiquettes à chaque fil afin que nous ne devons pas faire référence à cette table chaque fois que nous interfacerons une nouvelle puce.
Si vous connaissez des connecteurs ou des câbles étonnants, veuillez leur lier dans les commentaires.
LTC2640 SPI Digital to analogiste Converter
La technologie linéaire LTC2640-LZ8 est un convertisseur numérique 8 bits pour analogique (DAC) programmé sur SPI. Un CAD est essentiellement un diviseur de tension programmable. Ils sont bénéfiques pour recréer des formes d’onde, telles que des signaux audio. Un DAC 8 bits a 255 intervalles de référence entre 0 et la tension de référence, la partie L que nous avons utilisée a une référence interne 2.5volt.
Le LTC2640 est uniquement disponible dans un petit paquet SOT223-8, nous avons donc fait une carte de pain de pain dans le profil de la puce DIP-8. Notre empreinte LTC2640 est incluse dans les archives de projet ci-jointes à la fin de cet article.
Le schéma ci-dessus montre notre circuit de test pour le LTC2640. Il nécessite une alimentation de 2,7-5 Volet, nous avons utilisé l’offre de 3,3 Volts du pirate de bus. C1 est un condensateur de dérivation entre la broche de puissance et le sol. La broche 8 est une broche de réinitialisation active-faible, attachez-la élevée pour un fonctionnement normal. La broche 7 est la sortie du CAD, connectez la sonde de mesure de la tension de pirate de bus (ADC) ici.
Pirate de bus
LTC2640 (PIN #)
Mosi
SDI (3)
L’HORLOGE
Sck (2)
Cs
CS / LD (1)
Adc
Vout (7)
+ 3.3volts
CLR (8)
+ 3.3volts
VDD (5)
Gnd
GND (4)
Nous avons connecté le pirate de bus au LTC2640 comme indiqué dans la table. Le LTC2640 n’a pas de code PIN de sortie de données, cette connexion SPI reste inutilisée.
La bibliothèque SPI du matériel de Bus Pirate et la bibliothèque de logiciels Raw3Wire sont compatibles avec l’interface SPI de LTC2640. Nous avons utilisé la bibliothèque SPI; Si vous utilisez la bibliothèque Raw3Wire, assurez-vous de choisir une sortie de code PIN normale.
Hiz> M <- Sélectionner le mode 1. Hiz 2. 1 fil 3. UART 4. i2c 5. SPI 6. JTAG 7. Raw2wire 8. Raw3wire 9. PC au clavier Mode> 5 <-PI ou Raw3wire Ensemble de mode 900 Définir la vitesse: 1. 30kHz 2. 125kHz 3. 250kHz 4. 1 MHz Vitesse> 1 <-Test à basse vitesse ... 102 SPI prêt SPI>
Appuyez sur M pour le menu du mode pirate de bus, choisissez 5 pour le mode SPI. Il existe une bande d’options de configuration pour le module SPI, utilisez les options par défaut pour toutes. Après que le mode SPI soit prêt, nous devons configurer l’alimentation électrique.
SPI> P <-Power Fournir SETUP W / W Talgles 3.3Volts d'approvisionnement? 1. Non 2. Oui Mode> 2 <-Utilisez 3.3Volt W / W Talgle 5 Volt 1. Non 2. Oui Mode> 1 <-Don utilise 5 Volt Fourniture 9xx configurée, utilisez w / w pour basculer Moniteur de tension 9xx: 5V: 0.0 | 3.3V: 0.0 | VPullup: 0.0 | SPI>
P ouvre le menu d’alimentation Pirate de bus. Nous utilisons l’approvisionnement de 3,3 Volts mais pas l’alimentation 5 Volt. Le moniteur de tension vérifie que les alimentations de puissance sont éteintes.
SPI> W <-Capital W (Silly CSS) permet d'alimenter 9xx 3.3Volt d'approvisionnement sur SPI> V <-Voltage Moniteur Moniteur de tension 9xx: 5V: 0.0 | 3.3v: 3.3 | VPullup: 0.0 | SPI>
Capital ‘W’ permet de sélectionner les alimentations sélectionnées dans le menu précédent, un petit “W” les désactive. V Affiche le moniteur de tension d’alimentation qui affiche maintenant la sortie 3.3Volts de l’alimentation de 3,3 Volts.
Maintenant que cette configuration est terminée, nous pouvons envoyer des commandes au LTC2640 sur le bus SPI. Le LTC2640 dispose d’un protocole d’interface 24 bits (3BYTE). Le premier octet est une commande, suivie de deux octets de données. Le LTC2640 est disponible en version 8,10 et 12 bits; La version 8 bits utilise le premier octet pour définir la valeur de la DACe, and ignores the second byte.
SPI>[0b00110000 255 0]<–set DAC to full 110 SPI CS ENABLED 120 SPI WRITE: 0x30<–write DAC command 120 SPI WRITE: 0xFF<–DAC value 120 SPI WRITE: 0x00<–don’t care 140 CS DISABLED SPI>
Every SPI command begins by enabling the chip select pin ([). The first byte is the command to update the DAC (0b00110000), followed by the value to output (255), and a third byte that’s ignored (0). The command ends by disabling chip select (]).
We used an 8bit DAC with 255 even voltage steps, output set to 255 is 100%. We can use the Bus Pirate voltage probe to measure the output.
SPI>d<–measure voltage 9xx VOLTAGE PROBE: 2.5VOLTS<–DAC output SPI>
D triggers a voltage measurement. The DAC output voltage is 100% (255/255) of the internal reference, 2.5volts.
SPI>[0b00110000 0 0] d
110 SPI CS ENABLED
120 SPI WRITE: 0x30<–write DAC command
120 SPI WRITE: 0x00<–DAC value
120 SPI WRITE: 0x00<–don’t care
140 CS DISABLED
9xx VOLTAGE PROBE: 0.0VOLTS<–DAC output
SPI>
The same command with a DAC value of 0 outputs 0% (0/255) of 2.5volts; 0volts.
SPI>[0b00110000 128 0] d
110 SPI CS ENABLED
120 SPI WRITE: 0x30<–write DAC command
120 SPI WRITE: 0x80<–DAC value
120 SPI WRITE: 0x00<–don’t care
140 CS DISABLED
9xx VOLTAGE PROBE: 1.2VOLTS<–DAC output
SPI>
A DAC value of 128 is about 50% (128/255) of the reference voltage, 1.2volts.
SPI>[0b01000000 0 0] d
110 SPI CS ENABLED
120 SPI WRITE: 0x40<–power down command
120 SPI WRITE: 0x00<–don’t care
120 SPI WRITE: 0x00<–don’t care
140 CS DISABLED
9xx VOLTAGE PROBE: 0.0VOLTS<–DAC off
SPI>
The LTC2640 has a low power mode, triggered by the command 0b01000000 and two bytes that are ignored. After the power down command we can verify that there’s output from the DAC. write any DAC value to exit low power mode.
Taking it further
What’s the next step for the Bus Pirate? We’ll eventually make a final update to the design that includes USB on a professionally made, double-sided PCB. Power supply indicator LEDs were slated for this version, but didn’t get included. It would also be helpful to have an AT keyboard connector for debugging without a PC. check out the roadmap and wishlists on the Hack a Day Bus Pirate page.
Download: buspirate.v1a.zip