Cómo hacerlo: The Bus Pirate, interfaz serie universal

ACTUALIZAR: Nuevo firmware con JTAG y más

Siempre estamos felices de obtener un nuevo chip o tarjeta SIM para una interfaz, pero nuestro entusiasmo a menudo se debilita debido al proceso de creación de prototipos. La interconexión de cada chip generalmente significa hacer una panorámica de un circuito, escribir código y sacar el programador; tal vez incluso un prototipo de PCB.

Hace unos años construimos el primer “Bus Pirate”, una interfaz de bus universal que se comunica con la mayoría de los chips de terminales serie de computadoras. Se admiten varios protocolos de serie estándar a 3,3-5 voltios, incluidos I2C, SPI y serie asíncrona. Las bibliotecas adicionales “sin procesar” de 2 y 3 cables pueden interactuar con casi cualquier protocolo serial propietario. Debido a que esta fue una herramienta tan útil para nosotros, limpiamos el código, documentamos el proyecto y lo publicamos aquí con especificaciones, esquemas y código fuente.

Resumen del concepto



El Bus Pirate es un punto final en serie para muchos protocolos de interfaz IC. Escribimos comandos en un terminal serial en la computadora. Los comandos van al Bus Pirate a través del puerto serie de la computadora. El Bus Pirate habla con un microchip en el protocolo apropiado y devuelve los resultados a la computadora.

Todos los pines emiten 3,3 voltios, pero toleran 5 voltios. Las fuentes de alimentación incorporadas de 3,3 voltios y 5 voltios están disponibles para alimentar el chip conectado. Resistencias adicionales I2C configurables por software completan el paquete.

La interfaz de terminal serial funciona con cualquier sistema: computadora, Mac, Linux, Palm Pilots, dispositivos WinCE, etc.; no se necesita una mierda. Consideramos un dispositivo USB, pero el USB no es compatible con la gran cantidad de dispositivos portátiles que tienen un puerto serie. También queríamos un dispositivo de 3,3 voltios con entradas tolerantes de 5 voltios, pero los microcontroladores USB de orificio pasante más populares eran piezas de 5 voltios (por ejemplo, el PIC18Fx550).

El Bus Pirate actualmente “habla” tres protocolos de hardware para una interfaz de alta velocidad y tiene dos bibliotecas de protocolos de software para una fácil manipulación del bus. La teoría y especificación de cada protocolo va más allá de lo que podemos abordar aquí, pero eche un vistazo a algunos de estos tutoriales:

I2C

Bus lento de 2 hilos. Wikipedia es un gran lugar para comenzar un trasfondo de I2C. I2C-Bus.org, Robot Electronics, Embedded Systems Academy y Embedded.com tienen tutoriales de I2C decentes.

SPI

Bus simple de 3 hilos. Wikipedia tiene antecedentes; Embedded.com tiene un excelente tutorial y una comparación con I2C.

Transmisor receptor asíncrono universal (UART o serie)

Protocolo serie dependiente del reloj y la hora, mejor conocido por su apariencia como protocolo de puerto serie de la computadora. Wikipedia tiene experiencia en protocolos seriales asincrónicos.

2 hilos sin procesar

Esta es una biblioteca de protocolo general de 2 cables, similar a I2C pero sin un bit ACK. I2C y muchos protocolos patentados de 2 cables se pueden configurar utilizando las manipulaciones de bus disponibles en este modo. Utilice esta biblioteca para trabajar con dispositivos de 2 cables que no sean I2C, como tarjetas inteligentes o sensores de temperatura / humedad Sensirion SHT11.

3 hilos sin procesar

Esta es una biblioteca de protocolo general de 3 cables, similar a SPI pero sin las limitaciones de un módulo de hardware. Utilice esta biblioteca para trabajar con dispositivos que utilizan protocolos de 3 cables no compatibles con 8 bits, como el nocaut LCD Sparkfun Nokia 6100. Se pueden formar muchos protocolos de 3 hilos utilizando las manipulaciones de bus disponibles en este modo.

Hardware

Haga clic para obtener una imagen de ubicación de PCB de tamaño completo (PNG). Los terminales de tornillo se conectan a las fuentes de alimentación. Una fila de encabezados de siete pines se conecta a los pines IO. A pesar de la etiqueta, solo se necesita CC de 7 voltios.

ALFILER SPI I2C RS232
B9

MOSI

SDA

B8

CLK

SCL

B7

MISO

RX

B6

CS

TX

B5

AUX

AUX

AUX

Suelo

GND

GND

GND

Esta tabla muestra las conexiones de pines para cada modo de bus. El modo de 2 hilos sin procesar utiliza la misma configuración de pines que I2C. El modo sin procesar de 3 cables utiliza la misma configuración de pines que SPI.

Haga clic para ver la imagen del circuito a tamaño completo (PNG). El circuito y la PCB están diseñados con la versión gratuita de Cadsoft Eagle. Descarga el archivo del proyecto (ZIP).

IMAGEN 24FJ64GA002

Usamos un microcontrolador PIC24FJ64GA002 en el Bus Pirate; este es el mismo chip que usamos en nuestro proyecto de miniservidor. Es lo suficientemente rápido para hacer todo lo que queremos (16MIPS), y la función de selección de pines periféricos permite que los módulos de hardware SPI, UART e I2C compartan pines de salida. Cada pin de alimentación necesita un condensador de desconexión (C12,13), y la función MCLR requiere una resistencia (R7) entre el pin 1 y 3,3 voltios. El PIC tiene un regulador de voltaje interno que requiere un capacitor de tantalio de 10uF (C3), aunque usamos un capacitor electrolítico simple sin ningún problema. Lea sobre la programación y el trabajo con este chip en nuestro tutorial PIC24F. Si no tiene un depurador PIC, varios lectores recomiendan los clones ICD2 por menos de $ 40 en eBay.

El PIC opera a 3.3 voltios, pero los pines de solo digital toleran 5 voltios para conectar la lógica de 5 voltios. Los pines 14,15,16,17,18,21 y 22 son solo digitales, lo cual determinamos mirando a través de la hoja de datos y quitando los pines con un tipo de conexión analógica (Tabla 1-2, páginas 11-16). Según la hoja de datos, los pines I2C también toleran 5 voltios. Hay mucha información contradictoria en Internet, pero la página de datos 230, parámetro DI28, dice claramente que la entrada máxima para un pin I2C 24FJ64GA002 sin un circuito analógico es de 5,5 voltios.

Los pines 21 y 22 (RB10 / 11) pueden estirar SDA / SCL a través de las resistencias R4 y R5.

MAX3223CPP

Este chip convierte una salida serial de 3 voltios en señales RS232 de +/- 10 voltios compatibles con un puerto serial de computadora. El MAX3223CPP es una versión de 3-5 voltios del MAX202, con funciones de ahorro adicionales. Los radios MAX RS232 requieren cuatro capacitores de 0.1uF para una bomba de carga (C4, 5, 7, 8) y un capacitor de desconexión (C17). Usamos los mismos condensadores para todo.

Usamos MAX3223CPP, que aparentemente ya no está disponible. MAX3223EEPP + es una versión más nueva compatible con pines, disponible en Digikey por $ 7. ¡Ja! No se utiliza ninguna de las funciones de ahorro de energía del 3223, por lo que, si es posible, se debe reemplazar un receptor de radio RS232 de 3.3 voltios más barato y simple.

Suministros de electricidad

La mayoría de los chips pueden ser alimentados por los 3.3 voltios y 5 voltios integrados del Bus Pirate. 5 voltios son proporcionados por un regulador común 7805 (VR2) y dos condensadores de desconexión (C9,10). Un regulador regulable LM317 (VR1) está sintonizado a 3.3 voltios usando dos resistencias (R2.3) y requiere dos condensadores de desconexión (C6.7). El circuito requiere una corriente de 7-10 voltios (J1).

Lista de

Parte Valor
IC1PIC24FJ64GA002-DIP
IC2MAX3223CPP (pruebe MAX3223EEPP +)
C3Condensador de 10uF (preferiblemente tantalio)
C4-13.17Condensadores 0.1uF
R1Resistencia de 330 ohmios
R2Resistencia de 240 ohmios
R3Resistencia de 390 ohmios
R4,5,7Resistencia de 2K2 ohmios
VR1LM317
VR2LM7805
X1Soporte de tornillo (3 terminales) * sin probar
X2Conector hembra DB9 (puerto serie) * no probado
ICSP, SV3Cabezal de clavija de .1 “, ángulo recto
J1Conector de alimentación, clavija de 2,1 mm
LED1LED de 3 mm (opcional)

Firmware

El firmware está escrito en C utilizando la versión de prueba gratuita del compilador PIC C30. Aprenda todo sobre cómo trabajar con este PIC en nuestra introducción a la serie PIC 24F. Descarga el archivo del proyecto (ZIP).

main.c: maneja la interfaz del terminal de usuario.

busPirate.c: rutinas abstractas que convierten la sintaxis en acciones en el bus apropiado.

uartIO.c: rutinas de E / S para ambos dispositivos UART.

m_i2c_1.c – Programación de rutinas I2C de [Michael Pearce]. No pudimos iniciar el hardware I2C PIC, por lo que usamos esta biblioteca auxiliar. El software no tiene en cuenta la velocidad de I2C y parece funcionar alrededor de los 5 KHz.

SPI.c: rutinas que ejecutan el módulo SPI de hardware.

raw2wire.c – Biblioteca de interfaz de software de 2 cables.

raw3wire.c: biblioteca de interfaz de software de 3 cables (SPI).

La entrada del usuario se mantiene en un búfer de 4000 bytes hasta que se detecta una señal de nueva línea (entrada). Si el primer carácter de la entrada es un menú (ver más abajo), se muestra el cuadro de diálogo del menú; de lo contrario, la cadena se analiza para los datos que enviará el bus (ver sintaxis). El código consta de un número embarazoso de declaraciones de cambio y un código espagueti.

Interfaz final

En lugar de escribir un software para controlar el dispositivo, le dimos una interfaz de línea de comandos en serie que funcionaría con cualquier terminal ASCII. El pirata informático responde a los comandos con códigos de resultado de tres dígitos y un mensaje corto. Los códigos están diseñados teniendo en cuenta la automatización informática. Hemos insertado una serie de códigos de resultado en el archivo del proyecto (zip).

Opciones de menú

Las opciones del menú son comandos de un carácter que no involucran transmisiones de datos. Ingrese el carácter seguido de , para acceder al menú.

? – Mostrar menú de ayuda con comandos y sintaxis.

METRO – Configure el modo de bus (SPI, I2C, UART, 2 hilos sin procesar, 3 hilos sin procesar). A continuación, aparece una indicación de la velocidad, la polaridad y el estado de salida (según el modo).

  • Velocidades de bus: SPI: 30, 125, 250, 1000KHz. I2C: 100, 400, 1000 KHz. UART: 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200bps. Modos crudos: 1, 10, 50 KHz.
  • El reloj inverso establece el estado inactivo en oposición al normal (SPI normal: bajo; UART normal: bajo): SPI: bajo; UART: baja sin rumbo fijo.
  • Algunos modos tienen modos de salida z alta opcionales para usar con resistencias de voltaje (Bajo = tierra, Alto = entrada).
  • L – Alternar el orden de envío / recepción de bits: primero los bits más / menos significativos.

    PAG – Interruptor de resistencia de voltaje de clavija SDA / SCL (3.3 voltios). Válido solo en los modos I2C y sin procesar de 2 cables.

    O – Establecer formato de pantalla de salida de números. El terminal puede mostrar números como valores ASCII decimales, hexadecimales y binarios. El cuarto formato envía el byte sin procesar y sin procesar para leer el formato de texto ASCII.

    Sintaxis

    Se utiliza una sintaxis simple para comunicarse con chips por bus. Los comandos de sintaxis tienen funciones generales que generalmente son válidas para todos los tipos de bus.

    A / a / @ – Alternar un pin auxiliar. La “A” mayúscula representa AUX alto, la “a” pequeña representa. @ establece la entrada (modo de alta impedancia) y lee el valor del pin.

    [ – Start data write. SPI/raw 3 wire: chip select enabled. I2C/raw 2 wire: start condition. RS232: open UART, discard received bytes.

    { – Start data write with reads. Same as [, except: SPI/raw 3 wire: show the read byte for each write. RS232: display data as it arrives asynchronously.

    ] o} – Redacción de datos finales. SPI / 3 hilos sin procesar: chip seleccionado desactivado. I2C / raw 2 wire: estado de parada. RS232: firme UART.

    R / r – Leer byte. SPI / raw 3-wire: envía un byte de imitación, vuelve a leer. I2C: leer byton para ACK. Raw 2 hilos: lee 8 bits. RS232: verifique el byte de UART y vuelva, o falle si está vacío. Utilice 0r1 … 255 para lecturas masivas de hasta 255 bytes.

    0b – Escribe este valor binario. El formato es 0b00000000 por byte, pero también los bytes parciales son buenos: 0b1001.

    0h o 0x – Escriba este valor HEX. El formato es 0h01 o 0x01. Los bytes parciales son buenos: 0xA. AF puede estar en minúsculas o mayúsculas.

    0-255 – Escribe este valor decimal. Cualquier número que no esté precedido por 0x, 0h o 0b se interpreta como un valor decimal.

    , o espacio – Limitador de valor. Utilice una coma o un espacio para separar los números. Cualquier combinación es buena, no se necesita restricción entre valores no numéricos: {0xa6,0, 0 16 5 0b111 0haF}.

    Comandos de manejo de bus directo para el modo sin procesar de 2 cables y el modo sin procesar de 3 cables.
    ^ Envía un reloj. Utilice 0 ^ 1 … 255 para varios tics de reloj.

    / y – Alternar el nivel de reloj alto (/) y bajo (). Incluye retardo de reloj (100uS).

    – / _ – Active el estado de los datos alto (-) y bajo (_). Incluye retardo de configuración de datos (20uS).

    ! – Leer un bit por reloj.

    . – Leer un pin de datos (sin reloj).

    Y – Retraso 1uS. Utilice 0 y 1 … 255 para retrasos múltiples.

    Usándolo


    Aquí hay dos ejemplos que muestran al Bus Pirate en acción. Los terminales deben configurarse en modo ASCII con eoo local, usamos el terminal de Windows. La conexión serial del lado de la computadora es 115200bps, 8N1. El Bus Pirate debe responder a cualquiera de las líneas de tipo (0x0a, 0x0d) o ambas (estilo Windows).

    .I2C / SPI – Flash 24LC1025 EEPROM

    Las EEPROMS de Microchip son chips de memoria de almacenamiento constante populares, el 24LC1025 tiene 128 Kbytes de almacenamiento con interfaz I2C. Podemos probar este chip sin abordar un circuito grande o escribir código.

    La imagen muestra el 24LC1025 conectado al Bus Pirate. La EEPROM funciona de 2,7 a 5 voltios, por lo que utilizamos el suministro de 3,3 voltios del Bus Pirate para alimentar el circuito. Las resistencias integradas SDA / SCL mantienen alto el bus I2C y eliminan la necesidad de resistencias externas. Un solo condensador de 0,1 uF desconecta la EEPROM de la fuente de alimentación.

    Establecer el modo I2C

    Primero configuramos el Bus Pirate para el modo I2C y habilitamos las resistencias de voltaje. Debido a que Bus Pirate utiliza actualmente una biblioteca de programas I2C, la velocidad no es realmente efectiva.

    SPI> m

    1. SPI
    2. I2C
    3. UART
    4. 2 ALAMBRES SIN PROCESAR
    5. CRUDO 3 ALAMBRES
    MODO> 2

    900 MODARO
    Velocidad fijada:
    1. 100 KHz (estándar)
    2. 400 KHz (modo rápido)
    3. 1 MHz (alta velocidad)
    VELOCIDAD> 1

    901 VELOCIDAD
    202 I2C NEGRO, P / p POR TIRADORES
    I2C> P

    205 I2C RETRENO ACTIVADO
    I2C>

    Escribir en EEPROM (I2C)

    Todas las operaciones de I2C comienzan con una condición inicial {o [, and end with a stop condition } or ]. La escritura comienza con el procesamiento del dispositivo (1 byte) y la búsqueda de un acuse de recibo (ACK). Si la EEPROM responde, podemos enviar la ubicación de los datos a escribir (2 bytes) y la carga útil de los datos (n bytes). Bus Pirate comprueba automáticamente ACK al final de cada escritura y ACK en cada lectura.

    La dirección base de 24LC1025 es 1010xxy, donde xx está determinado por el estado de los pines 2 y 3, e y es un modo de lectura (1) o escritura (0). Atamos los pines 2 y 3 en alto, haciendo la dirección de escritura completa. 1010110. Comenzaremos a escribir en el dispositivo en la primera ubicación de datos (0 0) y escriba del uno al trece utilizando una combinación de formatos de entrada de datos (1 … 13).

    I2C> {0b10100110 0 0 1 2 3 4 5 6 7 8 9 10 0xb 0xc 13}

    ESTADO 210 I2C

    220 I2C ESCRIBIR: 0xA6 ENTRAR: SÍ

    220 I2C ESCRIBIR: 0x00 CONSIGUE ACK: SÍ

    220 I2C ESCRIBIR: 0x00 CONSIGUE ACK: SÍ

    220 I2C ESCRIBIR: 0x01 ENTRAR: SÍ


    220 I2C ESCRIBIR: 0x0D ENTRAR: SÍ
    CONDICIÓN DE PARO 240 I2C
    I2C>

    Leer sobre EEPROM (I2C)

    Leer el 24LC1025 requiere dos pasos. Primero, un comando de escritura sin datos establece el puntero de dirección. En segundo lugar, un comando de lectura genera datos que comienzan en la ubicación establecida en el paso 1.

    El primer comando es un comando de escritura, usamos el equivalente hexadecimal de la dirección de escritura (0b10100110 = 0xa6) para ahorrar algo de escritura. El puntero de dirección se establece en el lugar donde escribimos nuestros datos (0 0).

    I2C> {0xa6 0 0}

    ESTADO 210 I2C
    220 I2C ESCRIBIR: 0xA6 ENTRAR: SÍ
    220 I2C ESCRIBIR: 0x00 CONSIGUE ACK: SÍ
    220 I2C ESCRIBIR: 0x00 CONSIGUE ACK: SÍ
    CONDICIÓN DE PARO 240 I2C

    Con el puntero configurado, podemos comenzar a leer datos. La dirección de lectura es la dirección del dispositivo, con el último bit establecido en 1 (0b10100111 o 0xa7). Usamos trece comandos r para leer los datos, pero podríamos usar la versión abreviada: 0r13.

    I2C> {0b10100111 rrrrrrrrrrrrr}

    ESTADO 210 I2C
    220 I2C ESCRIBIR: 0xA7 ENTRAR: SÍ

    230 I2C LEER: 0x01

    230 I2C LEER: 0x02


    230 I2C LEER: 0x0D

    CONDICIÓN DE PARO 240 I2C
    I2C>

    Sabemos que la operación se realizó correctamente porque la salida coincide con los datos que escribimos anteriormente.

    UART – EM406 SurfIII GPS

    El EM406 es un pequeño módulo GPS de 5 voltios que rastrea hasta 20 satélites. De forma predeterminada, emite datos formateados NMEA desde un puerto serie a 4800bps, 8N1. El formato de salida es serie estándar, pero a 2,8 voltios no coincide con los puertos serie de una computadora. El Bus Pirate puede conectar este GPS sin la necesidad de un transmisor RS232 separado o una fuente de alimentación de 5 voltios.

    Configurar UART

    Primero configuramos el Bus Pirate UART para recibir datos en serie a 4800bps.

    I2C> m

    1. SPI
    2. I2C
    3. UART
    4. RAW 2 ALAMBRES
    5. 3 ALAMBRES CRUDOS
    MODO> 3

    900 MODARO
    Velocidad fijada:
    (bps)
    1. 300
    2. 1200
    3. 2400
    4. 4800

    9. 115200
    VELOCIDAD> 4

    901 VELOCIDAD
    302 UART PRETAS
    UART>

    Habilitar lecturas de datos y UART

    Algo memorable de UART es que los datos llegan de forma asincrónica. A diferencia de SPI e I2C, donde la transferencia de datos está controlada por el host, los datos en serie pueden llegar a UART en cualquier momento. El GPS es un gran ejemplo de esto porque rastrea datos locales continuamente, sin la intervención del usuario.

    Desarrollamos dos modos de lectura para procesar datos asincrónicos. {eosigas todos los datos entrantes cuando llegan. Los datos nuevos se moverán y las entradas de datos se desperdiciarán, pero todas las entradas todavía se aceptan normalmente. [ opens the UART in a send only mode that discards incoming bytes. } or ] cierra UART, independientemente del modo.

    UART> {

    310 UART ABIERTO,} PARA CERRAR
    330 UART-LEGO: 0x80

    330 UART-LEGO: 0x78

    Escribir a UART

    Escriba valores para enviar UART. Incluso si la entrada está separada de los datos entrantes, se procesará más . Nosotros enviamos 0x40 por ejemplo, pero esto no tiene un significado particular para el módulo GPS.

    330 UART-LEGO: 0x80 0x40

    320 UART ESCRITURA: 0x40

    Cerrar la UART

    “}” Seguido por cierra la UART.

    330 UART-LEGO: 0x78
    303 UART-LEGO: 0x60 }

    330 UART-LEGO: 0xE6
    340 UART CERRADO
    UART>

    No creas que puedes usar estos datos de GPS para rastrearnos, en realidad no tenemos recepción satelital aquí en el sótano de mamá.

    Conduciéndolo

    Bus Pirate es una herramienta de desarrollo importante en nuestro laboratorio. Continuaremos actualizándolo a medida que lo usemos, y lanzaremos nuevo firmware a medida que agreguemos protocolos y funciones. Espere ver al Bus Pirate en artículos futuros.

    Estas mejoras están en la parte superior de nuestra lista. ¿Tienes alguna sugerencia?

    • Nuevos protocolos: One Wire, CAN, ???
    • Controles de polaridad y otros ajustes
    • Retraso de instrucción personalizable
    • Inicie el módulo I2C de hardware.
    • Habilite la configuración de velocidad del protocolo.
    • Radio RS232 más barata y más fácil de obtener
    • El archivo del proyecto (ZIP) tiene todo lo que necesita para construir su propio Bus Pirate.

      • Sombra dice:

        Eso es CALIENTE.

        Me quedo con 3;)

        Sé con certeza lo que prepararé a continuación 🙂

      • cde dice:

        Frio. Ahora intente transformar el i2c en un silenciador de bus.

      • aleksfox dice:

        me encanta ver este tipo de material profundo en la-tecnologia

        sigue así por favor!

      • ladyada dice:

        me recuerda al UBW – USB Bit Whacker – ¡pero un poco más obstinado!

      • Casi ahí dice:

        ¡Esto es bueno! No tengo una necesidad actual, pero la marqué porque estoy seguro de que la necesitaré algún día. Gracias por publicar esto.

      • Sombra dice:

        Tal vez (solo para una compatibilidad completa), ¿por qué no agregar los diversos protocolos OBD2? (Muy parecido al ELM327: http://www.elmelectronics.com/obdic.html), pero idealmente los “3 grandes”:
        41,6 KHz J1850 PWM
        10,4 KHz J1850 VPW
        ISO de 10,4 kHz [ISO 9141-2 or ISO 14230-4]

        Según el código fuente, los desarrolladores facilitaron mucho la adaptación de las cosas. ¡Me quito el sombrero ante ustedes, desarrolladores!

      • Curtisbeef dice:

        En lugar del MAX3223, podría hacer esta configuración discreta … todavía hay algunos elementos, pero ahorre $ 7 …

        http://dd-wrt.com/wiki/images/b/bb/LaFonera_Hardware_Serial-Cable-Port_11_simple_schematic.jpg

      • de dice:

        Genial ver este tipo de material.
        También estoy interesado en ver una aplicación de rastreo de bus i2c. ¿Alguna idea de cómo?

      • Curtisbeef dice:

        Encontré este documento AVR como un rastreador I2C no intrusivo, tiene un esquema y un código fuente … parece que sería bastante fácil de modificar para trabajar con esto …

        http://www.avrfreaks.net/index.php?module=Freaks%20Files&func=viewFile&id=566&showinfo=1

      • Juan dice:

        Gran proyecto.

      • cde dice:

        Todavía se puede encontrar y compilar el software actual i2c sniffer milk. Utiliza 3 cables en el puerto paralelo para oler los datos i2c (y más). Originalmente fue creado para ayudar a piratear la Xbox. Pero necesita una computadora Linux fuerte con un puerto paralelo real.

        El rastreador de hardware i2c sería ideal para aplicaciones portátiles (Cómo agregar un rastreador i2c a zipit moderado) o para uso independiente del sistema operativo, como en OSX con adaptador serie USB o Windows, etc.

        También me gusta más PICS que Amtels, así que: P

      • danreetz dice:

        ¿Cómo se compara esto con la interfaz Mak?

      • Chris dice:

        ¡Gran trabajo! Gracias, gracias, gracias.

      • Ian Lesnet dice:

        @cde

        Si estás interesado en el tabaco I2C, te encantará nuestro próximo proyecto.

      • Dinosaurio dice:

        esta. es. una. súper. proyecto.

        ¡EJÉRCITO DE RESERVA!

      • Rupin Chheda dice:

        ¿Este dispositivo está a la venta en algún lugar? Me interesaría comprar esto.

      • David dice:

        Curisbeef, este circuito de conmutación de nivel RS-232 al que se conecta solo funciona en una dirección, desde el puerto RS-232 verdadero hasta la entrada UART del microcontrolador. No hay más / menos swing en la otra dirección. Entonces, la mitad del circuito es bueno si solo desea obtener un RS-232 real.

      • Curtisbeef dice:

        ahh te tengo

      • chris dice:

        ¿Alguien piensa en hacer un conjunto de computadoras?

      • strider_mt2k dice:

        Entiendo lo suficiente como para saber que esta es una herramienta poderosa.

        Cosas interesantes y buena lectura.
        Este lugar está temblando.

      • werejag dice:

        Publicar equipo y ser malo como el arroz blanco

      • Johnny dice:

        ¿Puedo enviar un par de tarjetas por favor? : D: D

      • cambio de pluma dice:

        Acordado. Compraría esto en un segundo. Debido a que el propósito del producto es evitar el empanado, comparte claramente nuestros límites de tiempo. Quiero esto, pero no tengo tiempo para construirlo. ¿Por qué no ver si Sparkfun lo fabricará y venderá por usted? Mejor aún, véndalo usted mismo.

        Un proyecto maravilloso, hay muy poco trabajo de esta calidad aquí.

      • Marcos dice:

        entonces, así:

        http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en028600

        pero no usb, y probablemente más caro, y tienes que construirlo tú mismo.

      • takane2 dice:

        ¡JTAG sería genial! Podría haberlo desarrollado yo mismo si no lo hubiera hecho ks-pause

      • Ian Lesnet dice:

        @ takane2: agregamos JTAG con interfaz de máquina de estado y reproductor XSVF para programar cadenas JTAG a partir de archivos de cadenas SVF precompilados. Por favor, avíseme si le gustaría probar la versión anterior.

      • Ian Lesnet dice:

        Después de muchos intentos frustrantes, encontramos esta publicación que explica por qué no pudimos ejecutar el módulo I2C de hardware:

        http://forum.microchip.com/tm.aspx?m=271183&mpage=1

        En realidad, esto es un problema con el chip.

      • Todd S. dice:

        ¡Que buena idea! Gracias por compartir.

      • Rectificador dice:

        Me gustaría ver soporte unidireccional. Podría implementarse fácilmente con la fuente proporcionada en ibutton sdk:

        http://www.maxim-ic.com/products/ibutton/software/1wire/wirekit.cfm

        Estoy planeando un proyecto que utilizará muchos sensores de tiempo único, y este dispositivo sería genial para probarlos / recopilar sus ID de ROM. Buen trabajo en esta cosa, ¡parece realmente útil!

      • micro dice:

        Sería bueno incluir también un protocolo de bus de cable

      • Ian Lesnet dice:

        Hoy probamos con 1 cable y está casi listo. Probablemente cubriremos las piezas de 1 cable la semana que viene.

      • clint dice:

        ¡Ay, qué gran proyecto! ¡Prestigio!
        ¿Alguien sabe dónde puedo comprar un PCB o un kit?

        Si no es así, ¿alguien quiere ponerse en contacto con este tipo y ver si los logra?

        http://www.seeedstudio.com/depot/

        Oh, solo curiosidad, ¿qué tipo de herramienta usa la gente para generar esas hermosas imágenes de circuitos en 3D?

        ¡Gracias!

      • Ian Lesnet dice:

        Usamos Eagle3d para hacer las representaciones. Excelente script de código abierto, disponible aquí:
        http://www.matwei.de/doku.php?id=en:eagle3d:eagle3d

        Busque el enlace de la versión beta en el archivo de la lista de correo, tiene muchas características nuevas.

      • clint dice:

        Gracias Ian, ¡este es un paquete en 3D bastante dulce!

        Acerca de la PCB para este proyecto …

        Me he dado cuenta de que tienes algunos proyectos bastante interesantes en tu haber, Ian; probablemente podrías recaudar unos dólares extra vendiendo equipos o, al menos, solo los PCB.

        Como la mayoría de los aficionados, puedo luchar bastante bien, pero cuando se trata de crear mis propios PCB, tengo que trazar la línea. Es demasiado complicado y raro para mí conseguir todos los materiales que necesito. Además, la solución eficaz es difícil de eliminar, sin mencionar que vivo junto a un río con una importante carrera de salmones. Me sentiría devastado si accidentalmente derramara esta cosa en el agua subterránea local.

        Shoot, Hack-a-Day podría considerar ofrecer un servicio de PCB de “compra por cobrar” con bastante facilidad para proyectos como estos:

        Obtenga un grupo crítico de compradores interesados, tal vez incluso información de pago también, lo suficiente para cubrir los fabulosos costos iniciales por un tamaño decente. Los costos estarían cubiertos y Hack-a-Day se quedaría con una caja de extras.

        Configure una tienda en línea para vender esos extras hasta que se vayan, y devuelva el $$$ a la operación Hack-a-day.

        Solo un pensamiento. De cualquier manera, ¡gracias y sigan con el buen trabajo!

        -Clint

      • kay m reimers dice:

        Creo que una buena adición serían algunas salidas de disparo que podrían configurarse para cambiar de pulso / estado cuando se produce la dirección o se produce el inicio / parada / acción u otra condición.
        el disparador se puede utilizar para disparar un estetoscopio

      • mick dice:

        ¿Alguien sabe exactamente qué fuente de alimentación se necesita para esto? ¿Debería poder funcionar de 14 a 20 voltios o simplemente se puede configurar para que diga a 15 voltios?

      • Ian Lesnet dice:

        @mick

        La etiqueta es incorrecta. Cualquier cosa por encima de 7 voltios, pero por debajo de ~ 20 voltios debería funcionar bien.

      • Ian Lesnet dice:

        Las instrucciones de acceso a SVN de Google no parecen funcionar. Usamos TortoiseSVN para acceder al repositorio. Aquí está la URL correcta para el acceso anónimo a SVN:

        http://the-bus-pirate.googlecode.com/svn/trunk/

        Tenga en cuenta que no tiene la papelera posterior en las instrucciones de Google.

      • Manu dice:

        Hola,

        En primer lugar felicitaciones por este gran proyecto.
        ¡Tengo que comprobar diferentes elementos de i2c para mi trabajo y el bus pirata será útil!

        Monté una computadora (v1a) y programé el PIC24 con firmware v1a versión 0e (sin cargador de arranque).
        No he probado ningún componente, pero responde con un hiperfinito, por lo que el hardware tiene que ser bueno.

        Como me pregunto, hice un cuadro de svn de google para jugar con el código.
        Lo compilé en una depuración.
        Sin embargo, cuando trato de usar Mplab en modo de depuración y establezco un punto de interrupción en el código fuente, tengo un “error de incapacidad para ingresar al modo de depuración”.
        Alguna información útil:
        – Trabajo con pickit2, mplab v8.20a y C30 v3.10 (versión completa).
        – También probé con ICD2 con el mismo error.
        – en base.h, definí BUSPIRATEV1A

        En un foro de microchip, leí que puede ser un problema de configuración oscilante.

        Entonces mi pregunta es:
        ¿Cómo limpias tu proyecto?

      • Ian Lesnet dice:

        @manu

        La fuente de corriente se puede utilizar con el motor de arranque.

        Para usarlo sin, elimine el archivo de enlace que transfiere el comienzo del programa (.gld). Creo que debería ser así. También asegúrese de que esté en modo de depuración y que la edición de lanzamiento / depuración esté configurada para depurar.

        Compartiré la fuente en revisiones en unos días.

      • Manu dice:

        Aquí está.
        Eliminaré el .gld y entrará en depuración.
        ¡Gracias por tu ayuda!

      • Andrés dice:

        Hola,
        así que construí un bP, un tablero grabado adecuado, se ve como imágenes en un artículo, excepto que el mío tiene un LED adaptado.
        Funciona, hasta ahora lo probé con LM75, DS1337, mcp9801, mcp3221, tc1321, mcp23008, 24c16.
        pero … 2 problemas,
        cuando hago esto
        I2C> p
        1. Extracción SDA / SCL
        2. SDA / SCL Pullup activado
        MODO> 2
        205 SDA / SCL PULLUP ON … baja RB11
        I2C>
        esto es con o sin dispositivos fijos, si tengo un tirón de resistencia temp-4k7 en SDA antes de hacer ese comando y eliminarlo más tarde, entonces RB11 es alto. ???

        segundo, Aux y Freq, siempre devuelve 0 cuando se emite un comando F. sin embargo, el estado lógico alterna bien con A / a. Probé frecuencias de 1Hz a 32kHz. ???
        el PIC tiene firmware .v0c
        alguna ayuda por favor?
        AB

      • Ian Lesnet dice:

        @andrew – No estoy seguro. Es posible que desee intentar actualizar el último firmware (v0f o v0g-beta).

      • Ian Lesnet dice:

        @andrew: verifiqué el código más reciente, las funciones de extracción funcionan como se esperaba, pero eso no significa que no haya un error más profundo.

        También miré la función de medición de frecuencia. Encontré un error que afecta a v1a y posteriores, pero debería funcionar bien en v0a.

        Si puede actualizar el último firmware en SVN y verificar estos problemas, comenzaré a separar el código para encontrar al culpable.

      • Simón F dice:

        Este es un hermoso proyecto.
        Muchísimas gracias.
        Leí que tienes un reproductor svf JTAG planeado o en Alpha, ¿puedes compartir eso conmigo también?

        Hola

        SF

      • Ian Lesnet dice:

        @sf

        https://la-tecnologia.com/2008/12/01/bus-pirate-firmware-update-v0c-jtag-and-more/

      • David dice:

        Tal vez sea solo yo, pero de dónde obtuvo el formulario de la pizarra … ya sea que lo haya creado o lo haya comprado. ???

      • Ian dice:

        @David – Creé este tablero usando el proceso fotopositivo.

      • David dice:

        OH ..! He estado pensando en cómo estableces el camino … Todavía soy un poco nuevo en estas cosas.

      • David dice:

        hey … ¿conoces un buen sitio web donde puedo hacer este tablero?

Alejandro Vargas
Alejandro Vargas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *