Rumore (relativo alla capacità?) Nel segnale seriale


11

Le immagini del "sommario esecutivo":

Il segnale seriale sembra incasinato

Alimentazione 3,3 V al microfono, sondaggio TX del tablet

Voglio decodificare il segnale seriale che esce dal jack delle cuffie del mio tablet. Questo è un po 'strano "hack" che esiste in alcuni telefoni e tablet: fondamentalmente, se si alimenta 3,3 V nell'ingresso del microfono della presa TRRS, i canali sinistro e destro diventano TX / RX seriali.

Ho usato un cavo TRRS-TV Raspberry PI (come puoi vedere nella seconda immagine) per ottenere l'accesso ai 4 luoghi di cui avevo bisogno: GND, MIC, L, R. Il cavo non dovrebbe fare altro che esporre i 3 segnali (MIC, L, R - accoppiati a GND) nei tre cavi corrispondenti (rosso, bianco, giallo).

Ho usato le sonde del mio BitScope per sondare tra il TX (punta del cavo bianco nella seconda immagine) e il GND comune (sonda marrone nella parte inferiore della seconda immagine). Ho anche usato due sonde (una rossa e una blu) per "alimentare" 3,3 V dal mio chip USB / TTL (un PL2303HX collegato al mio laptop) alla punta MIC (rossa).

Al riavvio del tablet, ho effettivamente visto ciò che è inequivocabilmente un segnale seriale a 115200 (picco-picco da 8 a 9us), ma con molta capacità (video) .

Quindi, la mia domanda - prima di andare online e ordinare una spina TRRS, cavi e un saldatore - è la capacità che sto vedendo a causa di ...

  • il cavo da 1 m di lunghezza da TRRS a TV, o l'uso di sonde invece di cavi saldati

O

  • le sonde e il cavo in effetti non possono rendere conto di questa capacità, e il motivo per cui lo vedo è che il jack per cuffie del tablet semplicemente non è stato progettato per emettere questo segnale (cioè ciò che vedo è effettivamente ciò che viene fuori dal jack) .

Come puoi immaginare, sono molto nuovo in questo genere di cose; Sono un tipo di software, ho acquistato BitScope una settimana fa e mi piacerebbe accedere al seriale del mio tablet per "divertimento e profitto" (hacking di roba bootloader, compilazione di Cyanogenmod per esso, ecc.).

Gradirei un'ipotesi stimata se questa sia una causa persa (cioè i cavi non possono spiegare così tanta capacità) o no.

Grazie in anticipo per qualsiasi aiuto / suggerimento.


1
Il segnale mi sembra abbastanza normale. Cosa non ti piace? Il cavo RCA probabilmente ha una capacità di massa di circa 1000 pF, quindi non dovrebbe sorprendere avere bordi lenti.
Ale..chenski,

"Cosa non ti piace" - i bordi sono troppo lenti, penso (il mio PL2303HX - ovvero il mio USB / TTL - non ha decodificato nulla).
ttsiodras,

(1) assicurarsi che il cavo sia inferiore a 3 metri (10 piedi); (2) se è possibile ottenere solo jack come parte senza cavo, collegarlo al tablet e misurare su di esso senza cavo per vedere la "qualità" del segnale; (3) solo baud rate inferiore.
Anonimo l'

@Anonimo - Ho provato; pubblicato i miei risultati qui sotto.
ttsiodras,

1
@AliChen: Avevi ragione, amico - ho usato un BSS138 e ho decodificato il segnale (vedi addendum alla mia risposta di seguito). Incredibile - non me lo aspettavo.
ttsiodras,

Risposte:


10

Quindi, ho seguito il consiglio dato dalle due persone gentili che hanno commentato ... Ecco i risultati.

  1. Ali Chen ha indicato che i bordi lenti possono essere attribuiti alla capacità del cavo RCA; e "Anonimo" consiglia di collegarsi direttamente alla scheda con un jack senza fili. Ho seguito il loro consiglio, ho tolto il tablet per esporre il PCB, ho inserito un jack nudo e l'ho provato - ma i risultati sono stati purtroppo gli stessi: bordi molto lenti e chiaramente guidati dalla capacità. Non erano i cavi RCA - invece, sembra che chiunque abbia progettato il tablet non si sia preoccupato molto del segnale seriale che esce dal jack delle cuffie (probabilmente ha usato un altro modo per interfacciarsi con la scheda). Ho provato a sondare tutto il PCB nella speranza di trovare un segnale seriale più pulito, ma non ci sono riuscito.

  2. Anonimo ha anche raccomandato di ridurre il baud rate; sfortunatamente, non esiste un modo documentato per influenzare il processo di avvio del mio tablet in modo da configurare il baud rate utilizzato durante u-boot (che è quello che mi interessava) ...

Ma è possibile farlo DOPO che l'avvio è completato, da una shell ADB, poiché sono riuscito a compilare il mio kernel e diventare root .

Quindi sono stato in grado di farlo ...

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

E infatti, il risultato è molto più bello:

Molto meglio a 9600

Sono abbastanza sicuro che questo segnale possa essere decodificato bene, se uso un cambio (è a 1.8V, quindi il mio USB-TTL 3.3V non riesce ancora a decodificarlo).

Quindi, per concludere: la "porta seriale all'interno del jack per le cuffie" del mio tablet può davvero essere utilizzata solo dopo che l'avvio è stato completato e l'UART ha rallentato a 9600 baud; il che è sfortunato, poiché l'output seriale è più necessario durante il processo di avvio (se qualcosa non funziona, cioè) - e durante quel periodo, la velocità UART è codificata nel codice di avvio del mio tablet a 115200 baud.

PS Ho anche provato un suggerimento di un amico di utilizzare un pull-up da 3,3 K verso la guida da 3,3 V nel segnale seriale inviato dal jack per cuffie - senza risultato.

AGGIORNAMENTO, 3 giorni dopo

Ho perseverato :-)

Seguendo il consiglio di Chris Stratton - che un buon cambio può far fronte anche a questo tipo di segnale - ho comprato un saldatore, un BSS138, una breadboard e un mucchio di cavi. Dopo quello che è probabilmente il peggior lavoro di saldatura MAI, sono riuscito a saldare le intestazioni dei pin sul BSS138, quindi ho proceduto ad attaccarlo alla breadboard e creare questo pasticcio aggrovigliato:

La breadboard e il mio BSS138

Quello che non mi aspettavo, era che dopo aver generato il minicom e aver emesso un "riavvio rapido", con mio grande stupore, ho visto questo:

Segnale seriale decodificato!

Incredibile - dopo che BSS138 "alza" il segnale da 1,8 a 3,3 V, quel segnale miserabile, pieno di capacità, può effettivamente essere decodificato! Posso finalmente capire perché il mio tablet non si sta avviando.

Ciao, piccolo tablet - TI PROPRIO adesso :-)


1
Mentre è abbastanza probabile che il segnale originale possa essere decodificato con un cambio di livello ben progettato, è anche possibile che la larghezza di banda del circuito di uscita audio come spedito sia un po 'meno di quanto sarebbe l'ideale per questo segnale digitale. Un prodotto di consumo deve superare i test di interferenza emessi e l'amplificatore per cuffie stesso è probabilmente un progetto di commutazione, quindi probabilmente ci saranno filtri LC sul bordo della scheda per sopprimere le emissioni, che sarebbero progettate principalmente per passare l'audio, non questo.
Chris Stratton,

Ma considera anche se il tuo ambito di prestazioni relativamente basso o le impostazioni che stai utilizzando potrebbero rappresentare in modo errato il segnale: sarebbe utile per un confronto guardare l'uscita del tuo pi o un convertitore seriale USB alla stessa velocità di trasmissione e vedere quanto sia quadrato lo scopo.
Chris Stratton,

@ChrisStratton Informazioni sui filtri di interferenza: nessuna idea, ma sembra plausibile, se la funzione che ho scoperto (seriale tramite jack per cuffie) non fosse pensata per essere utilizzata. Inizialmente ho scoperto questo mentre leggevo sui dispositivi Nexus - ed essendo curioso di come il mio tablet avrebbe risposto, ho deciso di provarlo. Informazioni sul controllo del mio ambito di applicazione: ovviamente, questa è stata la prima cosa che ho fatto quando l'ho acquistato: mostra impulsi quadrati cristallini a 115200 inviati dal pin GPIO TX del mio Raspberry PI2. Sono abbastanza sicuro a questo punto che non sono io né il mio ambito: è l'HW del tablet.
ttsiodras,

@ChrisStratton: "... potrebbe essere decodificato con un cambio di livello ben progettato" - hai in mente qualche chip specifico?
ttsiodras,

@ChrisStratton: Victory! BSS138 ha decodificato il segnale: ho aumentato la mia risposta e incluso la prova :-) Grazie per avermi indicato nella giusta direzione.
ttsiodras,

0

Il tuo DSO ha abbastanza larghezza di banda @ 524ksps per mostrare anche un'onda quadra a una velocità di dati di 115.2kbps? Penso di si. solo FYI. Potrei sbagliarmi.

Forse hai usato una risoluzione più lenta.


Wow, nessun amore per il piccoletto! Povero BitScope :-) Scherzi a parte, però - BitScope analizza bene il baud 115200 che esce dal mio Raspberry PI, mostrando impulsi quadrati chiari e belli ... niente come quello che mostra per il segnale che esce dal jack per le cuffie del mio tablet ( i.stack .imgur.com / WAw6J.png ). Sono in procinto di ottenere un cambio (per passare da 1,8 a 3,3) e un analizzatore logico, quindi forse il cambio pulirà questo. Vedremo!
ttsiodras,

Fatto! BSS138 ha decodificato il segnale.
ttsiodras,

BSS138 ha una soglia Vgs più bassa di 1,3 V {0,8 min, 1,5 mAx} anziché Vcc / 2 +/-? o 2,5 V +/-? così ha fatto la soglia inferiore. Questo è il modo in cui 74HCTxx funziona anche accettando segnali 3.3V su logica 5V
Tony Stewart Sunnyskyguy EE75,

che diamine è un overflow di Jiffies? una scatola Linux buggy? o solo la normale latenza di avvio
Tony Stewart Sunnyskyguy EE75
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.