Ruido (¿relacionado con la capacitancia?) En la señal serial

11

Las fotos del "resumen ejecutivo":

La señal serial parece desordenada

Alimentando 3.3V al micrófono, sondeando la TX de la tableta

Quiero decodificar la señal serial que sale del conector de auriculares de mi tableta. Este es un "truco" algo extraño que existe en algunos teléfonos y tabletas: básicamente, si alimenta 3.3V en la entrada de micrófono de su enchufe TRRS, los canales izquierdo y derecho se convierten en TX / RX en serie.

Utilicé un cable Raspberry PI TRRS a TV (como puede ver en la segunda imagen) para obtener acceso a los 4 lugares que necesitaba: GND, MIC, L, R. El cable no debe hacer otra cosa que exponer las 3 señales (MIC, L, R - emparejadas con GND) en los tres cables correspondientes (rojo, blanco, amarillo).

Utilicé las sondas de mi BitScope para sondear entre el TX (punta del cable blanco en la segunda imagen) y el GND común (sonda marrón en la parte inferior de la segunda imagen). También utilicé dos sondas (roja y azul) para "alimentar" 3.3V desde mi chip USB / TTL (un PL2303HX enchufado en mi computadora portátil) a la punta MIC (roja).

Al reiniciar la tableta, vi lo que sin lugar a dudas es una señal en serie a 115200 (pico a pico de 8 a 9us), pero con mucha capacidad (video) .

Entonces, mi pregunta, antes de conectarme en línea y pedir un enchufe TRRS, cables y un soldador, es la capacidad que estoy viendo debido a ...

  • el cable TRRS a TV de 1 metro de largo, o el uso de sondas en lugar de cables soldados

O

  • las sondas y el cable, de hecho, no pueden dar cuenta de esta gran capacidad, y la razón por la que veo esto es que el conector para auriculares de la tableta simplemente no fue diseñado para emitir esta señal (es decir, lo que estoy viendo es lo que sale del conector) .

Como probablemente puedas adivinar, soy muy nuevo en este tipo de cosas; Soy un tipo de software, compré mi BitScope hace una semana y me encantaría acceder a la serie de mi tableta para "divertirme y obtener ganancias" (piratear cosas del gestor de arranque, compilar Cyanogenmod para ello, etc.).

Apreciaría una suposición estimada sobre si esta es una causa perdida (es decir, los cables no pueden explicar tanta capacidad) o no.

Gracias de antemano por cualquier ayuda / sugerencia.

ttsiodras
fuente
1
La señal me parece bastante normal. ¿Qué es lo que no te gusta? Es probable que su cable RCA tenga una capacitancia masiva de 1000pF más o menos, por lo que no debería sorprendernos tener bordes lentos.
Ale..chenski
"¿Qué es lo que no le gusta?", Creo que los bordes son demasiado lentos (mi PL2303HX, es decir, mi USB / TTL, no decodificó nada).
ttsiodras
(1) asegúrese de que su cable tenga menos de 3 metros (10 pies); (2) si puede obtener solo un conector como parte sin cable, conéctelo a la tableta y mida sin cable para ver la "calidad" de la señal; (3) solo baja la velocidad de transmisión.
Anónimo
@ Anónimo: lo intenté; publicado mis resultados a continuación.
ttsiodras
1
@AliChen: Tenías razón, amigo: utilicé un BSS138 y decodifiqué la señal (ver el apéndice de mi respuesta a continuación). Increíble, no esperaba esto.
ttsiodras

Respuestas:

10

Entonces, seguí el consejo dado por las dos personas amables que comentaron ... Aquí están los resultados.

  1. Ali Chen indicó que los bordes lentos pueden atribuirse a la capacitancia del cable RCA; y "Anónimo" recomendó conectarlo directamente a la placa con un conector sin cables. Seguí sus consejos, quité la tableta para exponer la PCB, enchufé un conector desnudo y la probé, pero desafortunadamente los resultados fueron los mismos: bordes muy lentos, claramente impulsados ​​por la capacitancia. No fueron los cables RCA ; en cambio, parece que a quien diseñó la tableta no le importó mucho la señal serial que salía de la toma de auriculares (probablemente utilizó alguna otra forma de interactuar con la placa). Intenté sondear todo el PCB con la esperanza de encontrar una señal en serie más limpia, pero fallé.

  2. Anónimo también recomendó disminuir la velocidad de transmisión; desafortunadamente, no hay una forma documentada de influir en el proceso de arranque de mi tableta para configurar la velocidad en baudios utilizada durante u-boot (que es lo que me interesaba) ...

Pero es posible hacerlo DESPUÉS de que se complete el arranque, desde un shell ADB, ya que he logrado compilar mi propio núcleo y convertirme en root .

Así que pude hacer esto ...

$ su
# stty -F /dev/ttyHSL0 9600
# while true ; do echo UUUUUUU > /dev/ttyHSL0 ; sleep 0.1 ; done

Y de hecho, el resultado es mucho más agradable:

Mucho mejor a 9600

Estoy bastante seguro de que esta señal se puede decodificar bien, si uso una palanca de cambios (es de 1.8V, por lo que mi USB-TTL de 3.3V todavía no puede decodificarla).

Entonces, para concluir: el "puerto serie dentro de la toma de auriculares" de mi tableta solo se puede usar DESPUÉS de completar el arranque, y el UART se desaceleró a 9600 baudios; lo cual es lamentable, ya que la salida en serie se necesita más durante el proceso de arranque (si algo falla, eso es), y durante ese tiempo, la velocidad UART está codificada en el código de arranque de mi tableta a 115200 baudios.

PD: También probé una sugerencia de un amigo, para usar un pull-up de 3.3K hacia el riel de 3.3V en la señal serial enviada por el conector para auriculares, pero fue en vano.

ACTUALIZACIÓN, 3 días después

Perseveré :-)

Siguiendo los consejos de Chris Stratton, que una buena palanca de cambios puede hacer frente incluso a este tipo de señal, compré un soldador, un BSS138, una placa de pruebas y un montón de cables. Después de lo que probablemente sea el peor trabajo de soldadura NUNCA, logré soldar los encabezados de clavija en el BSS138, y luego procedí a conectarlo a la placa de pruebas y crear este lío enredado:

El tablero y mi BSS138

Lo que no esperaba era que después de generar minicom y emitir un "reinicio de arranque rápido", para mi completo asombro, vi esto:

Señal serial decodificada!

Increíble: después de que BSS138 "eleva" la señal de 1.8 a 3.3V, ¡esa señal miserable y llena de capacitancia realmente puede decodificarse! Finalmente puedo ver por qué mi tableta no se inicia.

Hola, pequeña tableta - TE PROPIO ahora :-)

ttsiodras
fuente
1
Si bien es bastante probable que la señal original pueda decodificarse con un cambiador de nivel bien diseñado, también es posible que el ancho de banda del circuito de salida de audio tal como se envía sea ​​bastante menor de lo que sería ideal para esta señal digital. Un producto de consumo necesita pasar las pruebas de interferencia emitidas, y el amplificador de auriculares en sí mismo es probablemente un diseño de conmutación, por lo que es probable que haya filtros LC en el borde de la placa para suprimir las emisiones, que estarían diseñadas principalmente para pasar audio, no esto.
Chris Stratton el
Pero también tenga en cuenta si su alcance de rendimiento relativamente bajo o la configuración que está utilizando puede estar tergiversando la señal: sería bueno para la comparación ver la salida de su pi o un convertidor en serie USB a la misma velocidad de transmisión y ver cuán cuadrado el alcance hace que se vea.
Chris Stratton el
@ChrisStratton Acerca de los filtros de interferencia: no tengo idea, pero suena plausible, si la función que descubrí (en serie a través de la toma de auriculares) no estaba destinada a ser utilizada. Inicialmente me enteré de esto mientras leía sobre los dispositivos Nexus, y al sentir curiosidad por saber cómo respondería mi tableta, decidí probarlo. Acerca de verificar mi alcance: por supuesto, eso fue lo primero que hice cuando lo compré: muestra pulsos cuadrados cristalinos en 115200 enviados desde el pin TX GPIO de mi Raspberry PI2. Estoy bastante seguro en este punto de que no soy yo, ni mi alcance, es el HW de la tableta.
ttsiodras
@ChrisStratton: "... podría decodificarse con una palanca de cambio de nivel bien diseñada", ¿tiene en mente algún chip específico?
ttsiodras
@ChrisStratton: ¡Victoria! BSS138 decodificó la señal. Aumenté mi respuesta e incluí la prueba :-) Gracias por señalarme en la dirección correcta.
ttsiodras
0

¿Tiene su DSO suficiente ancho de banda @ 524ksps para incluso mostrar una onda cuadrada a una velocidad de datos de 115.2 kbps? Yo creo que si. solo para tu información. Podría estar equivocado.

Tal vez usaste una resolución más lenta.

Tony Stewart Sunnyskyguy EE75
fuente
¡Guau, no hay amor para el pequeño! Pobre BitScope :-) En serio, sin embargo: las sondas BitScope multan los 115200 baudios que salen de mi Raspberry PI, mostrando pulsos cuadrados agradables y claros ... nada como lo que muestra la señal que sale de la toma de auriculares de mi tableta ( i.stack .imgur.com / WAw6J.png ). Estoy en el proceso de obtener una palanca de cambios (para pasar de 1.8 a 3.3) y un analizador lógico, por lo que tal vez la palanca de cambios limpiará esto. ¡Veremos!
ttsiodras
Hecho! BSS138 decodificó la señal.
ttsiodras
BSS138 tiene un umbral Vgs más bajo de 1.3V {0.8min, 1.5max} en lugar de Vcc / 2 +/-? o 2.5V +/-? entonces el umbral inferior lo hizo. Esta es la forma en que funciona 74HCTxx y acepta señales de 3.3V en lógica de 5V
Tony Stewart Sunnyskyguy EE75
ahora qué diablos es un desbordamiento de Jiffies? una caja Linux con errores? o simplemente latencia de arranque normal
Tony Stewart Sunnyskyguy EE75