5 de diciembre de 2010

Puente de USB a I ² C

NOTA DE SOLICITUD 4482

Puente de USB a I ² C

Por: Fons Janssen, miembro senior del personal técnico


Resumen: Este circuito ofrece un directo-I ² C al puerto USB de su PC. Un USB 1-Wire ® mochila proporciona el PC con un maestro 1-Wire, que controla un 1-Wire de I / O extensor. Este I / O extensor dispone de dos puertos bidireccionales de drenaje abierto, que el PC puede escribir y leer. Mediante la generación de las señales de la lógica a la derecha en estos dos puertos, el PC puede emular a un maestro de I ² C. 



Una versión similar de este artículo apareció en los Países Bajos en febrero de 2009 cuestión y en alemán, francés e Inglés en marzo de 2009 de Elektor revista.

El software LabVIEW ® discutidos en esta nota de aplicación está disponible para descarga.

Cuando usted necesita un directo-I ² C para el PC, hay varias opciones disponibles. el puerto paralelo del PC, por ejemplo, puede emular un maestro de I ² C (véase la nota de solicitud de 3230, "Cómo usar la PC de un puerto paralelo para comunicarse con dispositivos de 2 hilos"). Los nuevos PC, sin embargo, a menudo carecen de este puerto, y las variantes modernas de Windows ® (Windows XP ® y Windows Vista ®) no permiten el acceso a ella fácilmente.

Un mejor enfoque es utilizar el puerto USB, pero que la técnica requiere un controlador de complejos y con frecuencia un microcontrolador, así, que a su vez requiere de firmware. No es algo que se puede construir en una tarde! Numerosas versiones comerciales están disponibles, pero que no son baratos. El circuito de la Figura 1, por el contrario, se puede construir rápidamente, y funciona con una variedad de lenguajes de programación como LabVIEW y Visual Basic.

Figure 1. This circuit provides an I²C interface to a computer's USB port.
Figura 1. Este circuito proporciona una interface I ² C a un puerto USB del ordenador.

U1 (DS9490R) es USB-a-1-Wire un puente y se agrega un master 1-Wire de la PC. A 1-Wire I / O extensor (U2, DS2413P) conectado a la red 1-Wire ofrece dos bidireccional de drenaje abierto los puertos, controlable por el PC a través de U1. Eso es todo el hardware necesario para crear una I ² C maestro.


Software


Para microcontroladores que carecen de un maestro en hardware ² C, "poco golpeando" es un método probado para la aplicación de un programa de I ² C maestro. Esa es la técnica utilizada para habilitar un software de I ² C maestro para esta plataforma.



El software genera las señales de I ² C mediante el control de los niveles lógicos de los PIOA U2 y PIOB (pines 6 y 4). Para crear la condición de arranque, por ejemplo, SDA debe transición de alto a bajo, mientras que SCL es alta. Unidad SCL (PIOA) de altura, a continuación, SDA PIOB) de altura (y, a continuación tire baja SDA. Así, el software implementa el I ² C mediante el control maestro PIOA y el PIOB. Un diagrama de flujo de la hoja de datos DS2413 muestra esta función PIO (Figura 2).

Figure 2. Flow chart for the PIO function, taken from the DS2413 data sheet.
Figura 2. Diagrama de flujo para la función de PIO, tomada de la hoja de datos DS2413.

Para cambiar las salidas de PIO, primero debe abordar la parte a través de funciones ROM. Este sistema sólo incluye un solo esclavo 1-Wire, por lo que puede pasar el procedimiento complejo de abordar a través del "ROM saltar" de comandos. A continuación, escriba en la salida PIO cierres mediante el envío de un "5A" de comandos. El 1-Wire de I / O extensor (U2), incluye un registro de 8 bits, cuyos dos LSB conectarse a PIOA y el PIOB. (Los otros seis bits no le importa.)

Para cambiar el estado de la lógica, los nuevos datos se envían dos veces: una como es, y una vez invertida. El esclavo (U2) confirma la recepción libre de error al devolver un "AA" de comandos para el maestro, y concluye enviando el nuevo estado de resultado así. Toda la secuencia puede ahora volver a empezar, o ser abortado por un restablecimiento de los hilos Master 1. Por lo tanto, debe transferir cuatro bytes (sin contar la ROM Skip y comandos 5A) para cada cambio de salida. Por ejemplo, debe ejecutar la siguiente secuencia para generar el orden de arranque I ² C:


Master ModeDatosComentarios
TX(Reset)Perdí el autobús
RX(Presencia)DS2413 está presente
TX0xCCSaltar ROM
TX0x5AEscribe una PIO registro
TX0xFFSCL y SDA = 1 = 1
TX0x00datos invertido
RX0xAALos datos se reciben
RX0x0FVolver estado de la salida
TX0xFDSCL y SDA = 1 = 0
TX0x02datos invertido
RX0xAALos datos recibidos
RX0x2DVolver estado de la salida



secuencias similares aplicar otros eventos, tales como enviar bytes, reconoce, y se detendrá.


Maxim ofrece un controlador de software para el DS9490, y también una 1-Wire de software del Kit de desarrollo (SDK) para Windows que soporta la plataforma Microsoft. NET. Para ilustrar, podemos implementar un maestro de I ² C en LabVIEW, utilizando su. NET de apoyo. Eso sólo funciona si el controlador de hilos uno se instala con. Apoyo NET. Otro requisito es instalar el Microsoft. NET y Visual J # Redistributable Package. Para más detalles, véase la nota de aplicación 155, "1-Wire ® de software de recursos guía de descripción de dispositivos. "

Para evitar que otras aplicaciones de acceso a la red 1-Wire, el VI "I ² C Inicializar" (donde VI es un instrumento virtual de LabVIEW plazo significado), inicializa U1 y LabVIEW da acceso exclusivo a una red de alambre (Figura 3). A continuación, emitir un reajuste de alambre de 1 seguido por un comando de saltar (CC), y concluirá con una PIO comando de escribir (5A).

Figure 3. The VI "I²C Initialize" initializes the DS2413, after which it is ready to receive I/O data.
Más imagen detallada (PDF, 446kb)
Figura 3. El VI "I ² C Inicializar" inicializa el DS2413, después de lo cual está listo para recibir datos E / S.

El esclavo (U2) está listo para aceptar datos de la PIO. El VI "I ² C del reloj" cambia la línea SCL de menor a mayor (Figura 4). SDA pueden ser altas o bajas, y el VI devuelve el estado de SDA. Puede escribir un byte completo por llamar a esta función 8 veces seguidas (una por cada bit transmitido). Si el esclavo es la devolución de datos, adventista del séptimo día es impulsado por el gran maestro. Para transmitir "0" el esclavo puede tirar de baja SDA (esto está bien, porque PIOB es una fuga de salida abierta). Debido a que U2 vuelve automáticamente al estado de la salida al día, sin leer acción especial se requiere (ver las iniciativas voluntarias "Yo Enviar ² bytes C" y "Get I ² C byte").

Más imagen detallada (PDF, 1,6 MB)
Figura 4. El VI "I ² C del reloj" alterna SCL de menor a mayor. SDA se puede establecer o restablecer la "I ² C escribir" las acciones y de lectura para "I ² C leer" las acciones.

El VIS "I ² C inicio", "I ² C parada" y "I ² C reconocen" utilizar la misma estructura para generar adecuada SDA y SCL señales. Mediante la combinación de estas iniciativas voluntarias, puede programar una completa I ² C de lectura o escritura de sesión. Para ilustrar una sesión de comunicación (Figura 5), leemos Registro 0 de un reloj en tiempo real (DS1337). Ese dispositivo luego responde con 0x39, que es el contenido del registro que cuenta los segundos. El registro de dirección se establece en 0x00, la dirección del esclavo para 0xD0, y el número de bytes a leer es el valor 1. Una imagen de ámbito de aplicación (Figura 6) muestra las señales generadas por el circuito para esta configuración.

Figure 5. Example of how to read a register, using the Figure 1 circuit.
Figura 5. Ejemplo de cómo leer un registro, utilizando el circuito de la figura 1.

Figure 6. Read register 0 of DS1337. S=start, A=acknowledge, Sr=repeated start, and P=Stop. From master to slave is shaded; from slave to master is white.
Figura 6. Leer el registro 0 de DS1337. S = inicio, A = reconocer, Sr = inicio repetidas, y P = parada. De maestro a esclavo es la sombra; de esclavo a maestro es de color blanco.

Debido a la sobrecarga de software es grande, la velocidad a la que genera las señales de este circuito está limitado a aproximadamente 20bps. La idea se puede implementar en diferentes lenguajes de programación, sin embargo. El sitio web de Maxim ofrece varios programas de ejemplo-un alambre se puede utilizar como punto de partida. 

1-Wire es una marca registrada de Micrel, Inc.
LabVIEW es una marca registrada de National Instruments Corporation.
Windows es una marca registrada y marca de servicio registrada de Microsoft Corporation.
Windows Vista es una marca registrada y marca de servicio registrada de Microsoft Corporation.
Windows XP es una marca registrada y marca de servicio registrada de Microsoft Corporation.



partes relacionadas
DS24131 cable conmutador de canal dual direccionableMuestras gratuitas
DS9490RUSB 1-Wire /iadaptador botón


No hay comentarios:

Publicar un comentario