serial star

Serial Star, 4 conversores USB Serie e I2C

Hola! Esta es una de las últimas placas que diseñe el año pasado. En 2016, desarrollé la tarjeta doble conversor USB serie e I2C. Esta placa funciona perfectamente, pero tiene un par de carencias. La primera es que, para utilizar los dos conversores, se necesitan dos puertos USB libres. Hoy en día esto no es mucho problema con los hub USB, pero aún así se necesita uno y dos cables USB. El otro problema es que esta tarjeta utiliza un conector mini-USB. Por supuesto, los cables USB con conector mini-USB se siguen encontrando, pero no son tan estándar como los micro-USB. Por estas dos razones, he decidido actualizar la placa, añadiendo un Hub USB de 4 puertos y cambiando el conector a uno micro-USB. Como he utilizado un hub de cuatro puertos, he utilizado también 4 conversores USB serie. Con un par de añadidos, se puede seleccionar la tensión de funcionamiento (5V o 3.3V), los niveles del puerto serie (TTL, RS232) y las funciones de los pines GPIO de forma independiente para cada uno de los conversores. Así que vamos a ver como funciona este conversor.

  • HARDWARE

Esta placa es, básicamente, un Hub USB de 4 puertos con 4 conversores USB serie / I2C y algunos añadidos. El Hub USB es la referencia TUSB2046I, de Texas Instruments. Los conversores USB serie son el modelo MCP2221A de Microchip, los mismos conversores que utilicé en el pasado. El esquema de la tarjeta se puede descargar desde aquí: EEL_SERIAL_STAR_V1.0. Es simple, a continuación una pequeña descripción de lo más significativo:

  •  Página 1: Diagrama principal. Donde se realizan la interconexión de todos los bloques. Aquí está el conector mini-USB (J1). También he dejado previsto un conector de 4 pines y paso 2,54mm con las señales del USB. Está reservado para soldar un conector o cable USB en caso que la soldadura (a mano) del conector micro USB falle.
  • Página 2: Alimentación. La tarjeta se alimenta a través del puerto USB, por lo que la tensión de alimentación es de 5V. En esta alimentación ha y un LDO (U1) con lo que se obtienen 3.3V. Con los jumpers S1 – S4 se puede elegir la tensión de funcionamiento de cada uno de los conversores USB serie de forma independiente. Así, cada conversor puede funcionar a 5V procedentes del USB o a 3.3V provenientes del LDO. Después de estos jumpers y antes de alimentar a los conversores, hay un switch limitador de corriente, el TPS2041B. La idea es utilizar este switch (uno por conversor) para detectar posibles sobrecorrientes o cortocircuitos en cualquiera de los conversores y poder desconectarlo. Esto permite que el cortocircuito no se propague al resto del circuito y que los demás conversores puedan continuar funcionando normalmente. Por cada switch se ha dejado prevista una resistencia (no montada) para el caso que no se quiera montar el switch y puentearlo.

serial star

  • Página 3: USB Hub. Basado en el TUSB2046B de Texas Instruments, es un Hub USB 2.0 (12Mbps) de 4 puertos. Tiene un puerto de subida y cuatro de bajada, compatibles con la especificación USB 2.0. Para el puerto conectado al PC he usado el supresor de transitorios SN65220, también de Texas. La configuración del Hub USB en la tarjeta es la siguiente:
    • Pin BUSPWR = 0 –> Modo auto alimentado
    • Pin EXTMEM = 1 –> Interfaz para memoria externa EEPROM deshabilitad
    • Pin EEDATA/GANGED = 0 –> Detección de sobre corriente independiente por puerto
    • Pin TSTPLL = 0 –> Operación normal a 6MHz
    • Pin TSTMODE = 0 –> Operación normal a 6MHz
    • Generación de reloj: Cristal externo de 6MHz.
  • Páginas 4-7: Conversor USB Serie. Basado en el MCP2221A de Microchip, es un conversor de protocolos USB 2.0 a UART/I2C con pines configurables (GPIO). La configuración es exactamente la misma para los cuatro conversores, por lo que todas las características son las mismas independientemente del conversor utilizado. La tensión de funcionamiento de cada conversor es independiente, configurable con un jumper entre 5V o 3.3V. Como los niveles de salida de tensión del MCP2221 son función de la alimentación de entrada, los puertos I2C y serie de cada conversor pueden utilizar niveles de 5V o 3.3V con solo mover un jumper. Cada conversor USB serie tiene asociados tres conectores, con las señales que se indican a continuación:
  • Conector I2C (J2, J5, J8, J11): Conector de 4 pines y paso 2,54mm con VCC, GND y las líneas I2C (SDA y SCL). Los niveles de tensión de estas líneas pueden ser 5V o 3.3V en función de la posición del jumper de alimentación. Para la monitorización de las comunicaciones I2C, hay un led amarillo que indica actividad en el bus I2C. Esta es la funcionalidad por defecto del pin GP3 del conversor USB serie.

serial star

  • Conector GPIO (J4, J7, J10, J13): Conector de 4 pines y paso 2,54mm con VCC, GND y dos líneas de propósito general. Al igual que las señales del bus I2C, el nivel de estos pines será de 5V 0 3,3V en función de la posición del jumper de alimentación. La función de estos pines es configurable a través de una aplicación de Microchip, y tienen las siguientes opciones:
    • GP1: Salida de referencia de reloj / ADC Canal 1 / Led TX de UART / Interrupción externa.
    • GP2: Estado de configuración de USB / ADC Canal 2 / DAC salida 1

serial star

  • Conector Serie (J3, J6, J9, J12): Conector de 4 pines y paso 2,54mm con VCC, GND y las líneas de la UART TX y RX. Cada conversor USB serie incluye un transceiver TTL – RS232, el conocido MAX3232, y un doble switch de deslizamiento, referencia WS-SLSV de Wüth. También he usado el pin GP0 para conectar un led rojo, indicando que hay actividad de recepción en la UART (función por defecto de GP0). Con este setup, los pines serie del conversor se pueden configurar de tres formas diferentes:
    • Puerto serie TTL a 5V: Poner el jumper de alimentación en la posición 5V y el switch serie asociado en la posición TTL.
    • Puerto serie TTL a 3.3V: Poner el jumper de alimentación en la posición 3.3V y el switch serie asociado en la posición TTL.
    • Puerto serie RS-232: Poner el switch serie en la posición RS232. En este caso la posición del jumper de alimentación es indiferente porque el MAX3232 can work with 3.3V or 5V inputs.

serial star

  • DISEÑO PCB

Cada conversor USB serie necesita 3 conectores de 4 pines, con lo que en total habrá 12 conectores para los conversores. Además se necesita un conector más para el conector micro USB. Para distribuir todos estos conectores de una forma sencilla, pensé en diseñar la PCB con forma de estrella de 13 puntas.

serial star

Como se puede ver, la punta del conector micro USB es más corta que el resto, ya que hay que conectar el cable USB y tampoco quería que ocupase mucho más espacio. Para los tres conectores asociados a cada conversor MCP2221, he seguido el mismo orden: los tres conectores seguidos y, de izquierda a derecha son: Serie – I2C – GPIO-. El espaciado y disposición de componentes es el mismo para los cuatro conversores. De hecho, hice el posicionamiento y ruteado del primer conversor y cuando estaba acabado, copié y pegué los bloques con un ángulo de 27.69º (360º / 13 puntas). Actualizando las referencias de acuerdo al esquema, todos los conectores estaban ruteados!

Esta vez he enviado los Ficheros GERBER a la empresa JLCPCB, es la primera vez que he trabajado con esta compañía, me gusta ir probando diferentes fabricantes. El resumen de esta fabricación ha sido el siguiente:

  • 10 PCB’s : 1,76eur / Envío a España: 8.25 eur  –> Precio total: 10.01 eur (1eur / placa)
  • Tiempo de fabricación: Justo 24 horas desde que envié los ficheros Gerber hasta que las placas estaban listas para el envío:
    serial star
  • tiempo de entrega: 18 días

La calidad de las placas es realmente buena por el precio que tienen, como en casi todo este tipo de fabricantes. Los puntos positivos que he visto son el precio y la rapidez en la fabricación. En el lado negativo, elegir un color diferente al verde para la máscara de soldadura, incrementa el precio total. Pero nada importante 🙂

  • SOFTWARE

Una vez montada la placa, es tiempo de probarla. Lo primero que se necesita es le driver para el conversor MCP2221. En la página de Microchip está el driver para Windows, e información para Linux y MAC. He hecho todas las pruebas en un PC con Windows 10 Pro x64. Al conectar la tarjeta al PC, el led verde de alimentación se enciende y, tras cargar los drivers, los cuatro puertos serie aparecen disponibles:

serial star

Microchip tiene dos utilidades muy interesantes para trabajar con el conversor MCP2221. La primera es MCP2221 Utility (v1.0.1). Esta herramienta permite configurar cada parámetro del conversor USB: identificador USB, consumo, descriptores, funcionalidad de los pines GP, protección de acceso mediante …..es una herramienta realmente útil para customizar cada MCP2221:

serial star

En la parte inferior izquierda de la aplicación se pueden ver los conversores conectados, 4 con el montaje actual. Haciendo clic en la flecha cercana se selecciona el conversor activo sobre el que se actuará:

serial star

LA otra herramienta proporcionada por Microchip es el MCP2221 I2C/SMBus Terminal (v2.0). Esta herramienta permite utilizar el puerto I2C implementado en el conversor. Al igual que la aplicación anterior. se puede elegir el conversor a utilizar, seleccionando uno de los cuatro conectados. Esto se hace en la parte superior derecha de la aplicación:

serial star

Se puede enviar comands o recibir datos a un dispositivo I2C que esté conectado en el bus, y también se puede realizar un barrido del bus en busca de dispositivos conectados, dentro de un márgen de direcciones I2C especificado. Como test rápido, he conectado un Display OLED 128×64 al conversor #1 y he realizado un escaneo del bus desde las direcciones 0x00 a la 0xFF:
serial star

serial star
Se puede ver que en el escaneo se ha encontrado un dispositivo esclavo en la dirección 0x78 / 0x79 (dirección I2C de 8-bits).

  • TEST SERIE Y PEQUEÑO ERROR

Después de chequear las comunicaciones I2C, es tiempo de comprobar las comunicaciones serie.  Para la prueba he abierto 4 ventanas de un terminal serie (Tera Term Pro, por ejemplo), he utilizado un puerto para transmitir (COM15) y el resto como recepción (COM11, COM12 y COM14). El montaje empleado es el siguiente, realmente simple:

serial star

serial star

La primera prueba no funcionó como esperaba. Enviaba datos pero no recibía los caracteres de forma correcta. Después de un rato investigando, revisando el esquema por fin averigüé cual es el problema. Está en el switch para elegir si el puerto serie es TTL o RS232. Hay un cruce en las líneas de selección. Si se coloca el switch en la posición TTL, se transmitirá con niveles TTL pero en la línea de recepción se esperan niveles RS232. Y al revés, si se transmite en RS232, entonces se esperan los datos en niveles TTL. Por tanto, para realizar el test he configurado el puerto de transmisión como RS232 y el resto de puertos en TTL (para que esperen datos en RS232 debido a este cruce de líneas). Con esta configuración no hay ningún problema y todo funciona tal y como se espera:

Además a continuación se pueden ver como parpadean los led’s rojos cada vez que el puerto recibe un carácter:

Así que creo que es tiempo de diseñar la versión 1.1 para corregir este fallo 😉

  • Twitter
  • del.icio.us
  • Digg
  • Facebook
  • Technorati
  • Reddit
  • Yahoo Buzz
  • StumbleUpon

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.