Escudo de host USB Arduino casero

Estoy tratando de construir el Circuits@Home USB Host Shield (basado en el chip MAX3421E) desde cero; dado que necesito poder alimentar el Arduino usando el modo OTG, una placa prefabricada no funcionará para mi aplicación. Para empezar, simplemente estoy tratando de recrear el Mini Host Shield, pero estoy atascado cuando se trata de hacer que funcione la transferencia de datos USB. El boceto "board_qc" pasa todas las pruebas cuando lo ejecuto en mi escudo casero (conectado a un Arduino Pro Mini 3.3V 8MHz) pero luego falla con "USB State Machine Reached Error State" cuando conecto un dongle BLE enchufable. Compré un host shield de tamaño completo para mi Arduino MEGA 2560 para recopilar datos de control para la depuración, y tanto él como el dongle funcionan perfectamente con el boceto board_qc. I' He examinado las señales USB D+/- de ambas placas con un osciloscopio (consulte el enlace de la imagen adjunta) y son prácticamente idénticas excepto por el extremo final de las formas de onda. ¿Qué podría estar causando este problema, o mi problema está en otra parte del circuito?

Mis pensamientos fueron:

1) demasiada capacitancia (mi oscilador de cristal de 20 pF + capacitores de 2x39 pF frente al oscilador de 9 pF especificado y capacitores de 2x18 pF)

2) He blindado/puesto a tierra incorrectamente mi enchufe USB hembra A

3) Como no he tenido tiempo de hacer un convertidor elevador de 3.3V->5V, he estado alimentando el puerto USB con 5V desde mi Arduino MEGA 2560 y conectando a tierra el MEGA a mi circuito. ¿Tal vez la conexión a tierra cruzada entre Arduinos interfiere con las señales USB o el blindaje?

En este punto, estoy casi completamente perdido, ¡así que agradezco cualquier aporte! ¡Gracias!

IMÁGENES:

ingrese la descripción de la imagen aquí

Hola, yo también estoy enfrentando el mismo problema. ¿Eres capaz de resolver este problema? He conectado directamente d+ d-lines con max3421 pero no hay cambios. Veo que la línea D+ no tiene voltaje y la línea D- tiene alrededor de 3v.
@Gaurav No he podido resolverlo. El proyecto cambió de dirección de todos modos, ya que un teléfono Android no puede alimentar un accesorio. Pude hacer que la comunicación USB funcionara con un chip AVR sin procesar y la biblioteca V-USB, por lo que también podría ser una ruta adecuada para usted.

Respuestas (1)

El problema más probable es que haya demasiada inductancia en los cables D+/D-.

El USB es exigente. Ejecutar una señal USB a través de una placa de prueba, un par de cables de conexión sueltos y una placa de prueba nuevamente es probable que degrade la señal hasta el punto de que no funcione.

Es posible que pueda rescatar esta parte soldando las resistencias directamente entre la conexión USB y la conexión MAX3421E, sin pasar por la placa de pruebas por completo. Será feo, pero podría funcionar.

Sin embargo, es probable que tenga que volver a girar la placa MAX3421E con un conector USB en la placa. Si hace esto, incluya también una huella para el cristal y los condensadores asociados en la placa; la capacitancia parásita en una placa de prueba a menudo interferirá con los osciladores.

Puede que tenga razón, pero recreé la placa de conexión FTDI (de SparkFun) en una placa de prueba y funciona con USB sin problemas... ¿El FT232RL podría ser más tolerante a la irritación de la señal?