Problemas del concentrador USB y del controlador de Ethernet LAN9512

3

Estoy trabajando en un tablero personalizado usando una computadora Raspberry Pi en el módulo (COM) (información y esquemas aquí: enlace . El tablero se basa en la Raspberry Pi modelo B (aquí se muestra un esquema: enlace ), ya que utiliza el concentrador USB LAN9512 y el controlador IC de Ethernet en la misma configuración que el modelo B de Rasberry Pi (parte relevante del esquema adjunto). El primer puerto USB descendente en mi placa está conectado a una MCU de Arm Cortex M3 en la misma placa, y la otra está conectada al conector USB para enchufar dispositivos USB externos. La Ethernet está conectada a un conector RJ45 molex con magnéticos integrados.

El problema es que, mientras que otras partes de la placa están funcionando bien hasta ahora, no puedo hacer que la LAN9512 funcione. Conecto la Raspberry Pi COM y accedo a ella a través de una consola serie. Puedo ver el LAN9512 detectado y los controladores correctos se cargan en la salida de syslog. Sin embargo, Ethernet no funciona cuando se conecta un cable, no sucede nada cuando se conecta un dispositivo USB (ya sea el mouse, el teclado o la unidad flash) al puerto USB, y la MCU ARM Cortex no aparece en los dispositivos como un USB COM. puerto (como está configurado en el software). Además, la luz "LINK" de Ethernet está siempre encendida. Básicamente, todo se ve bien desde el puerto ascendente hasta la frambuesa pi cuando se detecta el LAN9512 y se cargan los controladores, pero no funciona nada, ni siquiera genera ningún mensaje en syslog o registro de depuración en la COM de frambuesa.

He intentado todo lo que pude pensar hasta ahora. Busqué cortocircuitos en el LAN9512 IC, reemplacé el IC con uno nuevo (el mismo comportamiento), verifiqué los voltajes en todos los pines del LAN9512 IC y los comparé con los voltajes de la Raspberry Pi en el mismo IC (la única diferencia es ENLACE señal de led, como se muestra en el documento adjunto). Me aseguré de que el cristal estuviera oscilando con un o-scope. Quité los diodos de protección U401. Quité el brazo Cortex MCU. Quité el conector Ethernet. Me aseguré de que todos los componentes estén poblados correctamente. Probé un nuevo módulo COM.

Cuando conduzco la línea GPIO6 en el módulo COM bajo, que está vinculado al RESTABLECIMIENTO de la LAN9512 y vuelve al nivel alto nuevamente, obtengo

la siguiente salida:

    [ 1041.165108] usb 1-1: USB disconnect, device number 2 
    [ 1041.165143] usb 1-1.1: USB disconnect, device number 3
    [ 1041.165408] smsc95xx 1-1.1:1.0 eth0: unregister 'smsc95xx' usb-bcm2708_usb-1.1, smsc95xx USB 2.0 Ethernet
    [ 1041.165472] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
    lsusb:
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Volver a lo alto

    [ 1137.826768] Indeed it is in host mode hprt0 = 00021501
    [ 1138.006764] usb 1-1: new high-speed USB device number 4 using dwc_otg
    [ 1138.006958] Indeed it is in host mode hprt0 = 00001101
    [ 1138.207088] usb 1-1: New USB device found, idVendor=0424, idProduct=9512
    [ 1138.207123] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
    [ 1138.213408] hub 1-1:1.0: USB hub found
    [ 1138.213589] hub 1-1:1.0: 3 ports detected
    [ 1138.486807] usb 1-1.1: new high-speed USB device number 5 using dwc_otg
    [ 1138.587054] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00
    [ 1138.587086] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
    [ 1138.590152] smsc95xx v1.0.4
    [ 1138.656927] smsc95xx 1-1.1:1.0 eth0: register 'smsc95xx' at usb-bcm2708_usb-1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:02:d4:3b
    [ 1138.839255] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup

que es lo mismo que cuando hago eso en una frambuesa pi modelo B (guarda la última línea). Revisé doble y triple el esquema y lo comparé con el modelo B del esquema anterior. Presté atención al enrutamiento de las líneas USB en el diseño y son tan iguales como podría hacerlas siempre que mi software de diseño no tenga los medios para enrutar pares diferenciales.

El apilamiento de la capa es SUPERIOR, se adjunta la señal interna, el gnd interno, la parte inferior y las partes del tablero de interés. Leí todos los documentos que pude encontrar en relación con LAN9512 y no pude encontrar nada que explique esta situación. Tampoco entiendo por qué el led LINK está siempre encendido.

Mi pregunta es si alguien con más experiencia que yo, con este IC o con concentradores Ethernet y USB en general, ¿puede detectar un problema potencial? ¿Es posible que todo esto se deba a que las líneas USB y ETH no se enrutan diferencialmente? Yo esperaría que obtendría algunos errores y todo tipo de comportamiento errático si ese fuera el caso?

Se adjuntan la página de esquema de LAN9512, el diseño de la placa, el registro dmesg en el arranque de la rapsberry pi y los voltajes medidos en mi placa y en un modelo B operativo.

La documentación de LAN9512 está aquí: enlace

Cualquier comentario o ideas muy apreciadas.

Esquema de LAN9512 aquí: enlace

Voltajes en el modelo B y en el tablero personalizado aquí: enlace

Capas de PCB:

TOP

enlace

Siglo interno:

enlace

Plano interno de GND:

enlace

Parte inferior:

enlace

    
pregunta IgorEE

1 respuesta

7

Resolví el problema, pero fue necesario volver a fabricar la placa. El problema parecía estar en el enrutamiento y la acumulación de capas. Las trazas de USB y Ethernet no tenían impedancia correcta debido a dos razones.

En primer lugar, la geometría de la pista no era correcta para la impedancia diferencial de 90 ohmios (USB) y 100 ohmios (ETHERNET). Si su software de diseño no es compatible con el enrutamiento diferencial (p. Ej., Altium sí lo hace), entonces deberá usar algo como SaturnPCB para calcular la geometría de la pista y enrutar manualmente las trazas en consecuencia (tuve que hacer esto).

En segundo lugar, y lo más importante, el apilamiento de la capa no era correcto para admitir las trazas de alta velocidad de USB y Ethernet. Los rastros USB y ETH requieren un plano de tierra firme debajo y, dado que este no era el caso en mi placa, realmente arruinó la integridad de la señal. Poner un plano de tierra sólido (por lo tanto, cambiar la pila a TOP-GND-INNER SIGNAL-BOTTOM) solucionó los problemas de integridad de la señal.

También limpié la colocación de las tapas de desacoplamiento alrededor del LAN9512 IC.

Después de estos cambios, la nueva placa funcionó sin problemas. Si está utilizando el raspberryPi para sincronizar el LAN9512 (como lo hace B + con LAN9514), también necesita configurar el Pi para emitir una señal de reloj. Puede encontrar información sobre esto aquí: enlace Si tiene un oscilador separado para el LAN9512, ignore este párrafo.

Espero que ayude!

    
respondido por el IgorEE

Lea otras preguntas en las etiquetas