Kebisingan (terkait kapasitansi?) Dalam sinyal serial

11

Gambar "ringkasan eksekutif":

Sinyal seri tampaknya kacau

Memberi makan 3.3V ke mic, memeriksa TX tablet

Saya ingin memecahkan kode sinyal serial yang keluar dari jack headphone tablet saya. Ini adalah "retasan" agak aneh yang ada di beberapa ponsel dan tablet: pada dasarnya, jika Anda memberi makan 3.3V pada input mikrofon dari colokan TRRS Anda, saluran kiri dan kanan menjadi serial TX / RX.

Saya menggunakan kabel Raspberry PI TRRS-to-TV (seperti yang Anda lihat pada gambar 2) untuk mendapatkan akses ke 4 tempat yang saya butuhkan: GND, MIC, L, R. Kabel tidak seharusnya melakukan apa pun selain mengekspos 3 sinyal (MIC, L, R - dipasangkan dengan GND) dalam tiga kabel yang sesuai (merah, putih, kuning).

Saya menggunakan probe BitScope untuk menyelidiki antara TX (ujung kabel putih pada gambar ke-2) dan GND (probe coklat di bagian bawah gambar ke-2). Saya juga menggunakan dua probe (merah dan biru) untuk "memberi makan" 3.3V dari chip USB / TTL saya (sebuah PL2303HX dicolokkan ke laptop saya) ke ujung MIC (merah).

Setelah me-reboot tablet, saya benar-benar melihat apa yang merupakan sinyal serial di 115200 (puncak-ke-puncak 8 ke 9us), tetapi dengan banyak kapasitansi (video) .

Jadi, pertanyaan saya - sebelum saya online dan memesan colokan TRRS, kabel dan setrika - adalah kapasitansi yang saya lihat karena ...

  • kabel TRRS-ke-TV sepanjang 1 meter, atau penggunaan probe alih-alih kabel yang disolder

ATAU

  • probe dan kabel sebenarnya tidak dapat menjelaskan kapasitansi sebesar ini, dan alasan saya melihat ini adalah bahwa jack headphone tablet tidak dirancang untuk memancarkan sinyal ini (yaitu apa yang saya lihat memang apa yang keluar dari jack) .

Seperti yang bisa Anda tebak, saya sangat baru dalam hal ini; Saya seorang pria perangkat lunak, membeli BitScope saya seminggu yang lalu, dan akan senang mengakses serial tablet saya untuk "kesenangan dan keuntungan" (meretas barang-barang bootloader, mengkompilasi Cyanogenmod untuk itu, dll).

Saya menghargai perkiraan dugaan apakah ini penyebab yang hilang (yaitu kabel tidak dapat menjelaskan kapasitansi sebanyak ini) atau tidak.

Terima kasih sebelumnya atas bantuan / saran.

ttsiodras
sumber
1
Sinyal itu terlihat sangat normal bagi saya. Apa yang tidak Anda sukai di dalamnya? Kabel RCA Anda mungkin memiliki kapasitansi massal sekitar 1000pF atau lebih, jadi seharusnya tidak mengherankan jika memiliki tepi yang lambat.
Ale..chenski
"Apa yang Anda tidak suka tentang itu" - ujungnya terlalu lambat, saya pikir (PL2303HX saya - yaitu USB / TTL saya - tidak men-decode apapun).
ttsiodras
(1) memastikan kabel Anda kurang dari 3 meter (10 kaki); (2) jika Anda dapat memperoleh jack hanya sebagai bagian tanpa kabel, hubungkan ke tablet dan ukur tanpa kabel untuk melihat "kualitas" sinyal; (3) tingkat baud lebih rendah.
Anonim
@ Anonim - Saya mencoba; memposting hasil saya di bawah ini.
ttsiodras
1
@AliChen: Anda benar, sobat - Saya menggunakan BSS138 dan menerjemahkan sinyal (lihat lampiran untuk jawaban saya di bawah). Luar biasa - tidak mengharapkan ini.
ttsiodras

Jawaban:

10

Jadi, saya mengikuti saran yang diberikan oleh dua orang baik yang berkomentar ... Inilah hasilnya.

  1. Ali Chen menunjukkan ujung yang lambat dapat dikaitkan dengan kapasitansi kabel RCA; dan "Anonim" disarankan melampirkan langsung ke papan dengan jack tanpa kabel. Saya mengikuti saran mereka, menanggalkan tablet untuk mengekspos PCB, mencolokkan jack telanjang dan menyelidikinya - tetapi hasilnya sayangnya sama: tepi yang sangat lambat, yang didorong oleh kapasitansi. Bukan kabel RCA - sebaliknya, tampaknya siapa pun yang merancang tablet tidak terlalu peduli dengan sinyal serial yang keluar dari jack headphone (mungkin menggunakan cara lain untuk berinteraksi dengan papan). Saya memang mencoba menyelidik seluruh PCB dengan harapan menemukan sinyal serial yang lebih bersih, tetapi saya gagal.

  2. Anonim juga merekomendasikan untuk mengurangi baud rate; sayangnya, tidak ada cara yang terdokumentasi untuk memengaruhi proses boot tablet saya sehingga dapat mengkonfigurasi laju baud yang digunakan selama u-boot (yang merupakan hal yang saya minati) ...

Tapi itu adalah mungkin untuk melakukannya SETELAH boot selesai, dari dalam shell ADB - karena saya sudah berhasil mengkompilasi kernel saya sendiri dan menjadi akar .

Jadi saya bisa melakukan ini ...

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

Dan memang, hasilnya jauh lebih baik:

Jauh lebih baik di 9600

Saya cukup yakin sinyal ini dapat didekodekan dengan baik, jika saya menggunakan shifter (ini pada 1.8V, jadi 3.3V USB-TTL saya masih tidak dapat mendekodekannya).

Jadi, untuk menyimpulkan: "port serial di dalam jack headphone" tablet saya hanya benar-benar dapat digunakan SETELAH boot selesai, dan UART melambat menjadi 9600 baud; yang sangat disayangkan, karena keluaran serial paling dibutuhkan selama proses boot (jika ada yang gagal, itu adalah) - dan selama waktu itu, kecepatan UART di-hardcode dalam kode boot tablet saya di 115200 baud.

PS Saya juga mencoba saran dari seorang teman, untuk menggunakan 3.3K pull-up menuju rel 3.3V dalam sinyal serial yang dikirim oleh jack headphone - tidak berhasil.

UPDATE, 3 hari kemudian

Saya bertahan :-)

Mengikuti saran dari Chris Stratton - bahwa shifter yang bagus dapat mengatasi bahkan dengan sinyal semacam ini - saya membeli besi solder, BSS138, papan tempat memotong roti dan banyak kabel. Setelah apa yang mungkin merupakan pekerjaan penyolderan terburuk yang pernah ada, saya berhasil menyolder pin header di BSS138, dan kemudian melanjutkan untuk memasangnya ke papan tempat memotong roti, dan membuat kekacauan kusut ini:

Papan tempat memotong roti dan BSS138 saya

Apa yang tidak saya duga adalah setelah menelurkan minicom dan mengeluarkan "fastboot reboot", yang membuat saya takjub, saya melihat ini:

Sinyal serial diterjemahkan!

Luar biasa - setelah BSS138 "mengangkat" sinyal dari 1,8 hingga 3,3V, sinyal kapasitansi yang penuh teka-teki itu benar-benar dapat didekodekan! Saya akhirnya bisa melihat mengapa tablet saya tidak bisa boot.

Halo, tablet kecil - SAYA SENDIRI sekarang :-)

ttsiodras
sumber
1
Walaupun sangat mungkin bahwa sinyal asli dapat didekodekan dengan level shifter yang dirancang dengan baik, juga dimungkinkan bahwa bandwidth dari rangkaian output audio yang dikirimkan sedikit lebih sedikit daripada yang ideal untuk sinyal digital ini. Produk konsumen perlu lulus uji interferensi yang dipancarkan, dan penguat headphone itu sendiri mungkin merupakan desain switching, sehingga kemungkinan akan ada filter LC di ujung papan untuk menekan emisi, yang akan dirancang terutama untuk melewati audio, bukan ini.
Chris Stratton
Tetapi juga pertimbangkan apakah ruang lingkup kinerja Anda yang relatif rendah atau pengaturan yang Anda gunakan dengannya mungkin salah merepresentasikan sinyal - akan lebih baik untuk perbandingan untuk melihat output pi Anda atau konverter serial USB pada kecepatan baud yang sama, dan lihat seberapa persegi ruang lingkup membuat tampilan itu.
Chris Stratton
@ ChrisStratton Tentang filter gangguan: tidak tahu, tapi terdengar masuk akal, jika fitur yang saya temukan (serial via headphone jack) tidak dimaksudkan untuk digunakan. Saya awalnya mengetahui hal ini ketika membaca tentang perangkat Nexus - dan penasaran tentang bagaimana tablet saya akan merespons, memutuskan untuk mencobanya. Tentang memeriksa lingkup saya: tentu saja, itu adalah hal pertama yang saya lakukan ketika saya membelinya - menunjukkan pulsa persegi jernih pada 115200 yang dikirim dari pin GPIO TX GPIO Raspberry PI2 saya. Saya cukup yakin pada titik ini bahwa itu bukan saya, atau ruang lingkup saya - ini adalah tablet HW.
ttsiodras
@ ChrisStratton: "... dapat diterjemahkan dengan level shifter yang dirancang dengan baik" - apakah Anda memiliki chip tertentu dalam pikiran?
ttsiodras
@ChrisStratton: Kemenangan! BSS138 mendekodekan sinyal - Saya menambah jawaban saya dan menyertakan bukti :-) Terima kasih telah menunjukkan saya ke arah yang benar.
ttsiodras
0

Apakah DSO Anda memiliki bandwidth yang cukup @ 524ksps untuk menunjukkan gelombang persegi pada kecepatan data 115.2kbps? Saya kira begitu. hanya FYI. Saya bisa saja salah.

Mungkin Anda menggunakan resolusi lebih lambat.

Tony Stewart Sunnyskyguy EE75
sumber
Wow, tidak ada cinta untuk si kecil! BitScope yang buruk :-) Serius, meskipun - BitScope menyelidiki dengan baik baud 115200 yang keluar dari Raspberry PI saya, menampilkan pulsa persegi yang bagus dan jernih ... tidak seperti yang terlihat pada sinyal yang keluar dari jack headphone tablet saya ( i.stack .imgur.com / WAw6J.png ). Saya sedang dalam proses mendapatkan shifter (untuk beralih dari 1,8 ke 3,3) dan penganalisa logika, jadi mungkin shifter akan membersihkan ini. Akan melihat!
ttsiodras
Berhasil! BSS138 menerjemahkan sinyal.
ttsiodras
BSS138 memiliki ambang Vgs lebih rendah dari 1.3V {0.8min, 1.5max} daripada Vcc / 2 +/-? atau 2.5V +/-? jadi ambang bawah melakukannya. Ini adalah cara 74HCTxx bekerja dengan baik menerima sinyal 3.3V pada logika 5V
Tony Stewart Sunnyskyguy EE75
sekarang apa sih yang meluap Jiffies? sebuah kotak Linux buggy? atau latensi boot normal
Tony Stewart Sunnyskyguy EE75