Sistem Media untuk Toyota Prius (Bagian 2)

Kelanjutan proyek untuk menggantikan sistem media Toyota Prius.

Dalam artikel ini - PHY, Transport, dan pengiriman paket ke perangkat host, yang akhirnya berhasil diverifikasi pada kepala asli asli Prius.

Dengan cepat dongeng memengaruhi, tetapi tidak dengan cepat hal itu dilakukan. Hari ini saya melanjutkan proyek berlarut-larut untuk mendesain ulang sistem media di Prius, yang dimulai 2 tahun lalu.

Offtopik Historis
— USB-AVC , . , , .. ++ — , .

, , , , .

, , , PHY- .

Jadi, sejak awal. Menggali di Internet untuk adapter ke AVC-LAN, saya sangat sering melihat solusi yang mirip dengan ini . Dan dalam diskusi, komentar seperti itu sering kali menyelinap:
Jujur, itu tidak bekerja dengan baik, atau lebih tepatnya itu tidak bekerja dengan baik dengan semua kepala.

Sementara ban dapat dibaca dengan sempurna di beberapa radio tua dengan Spacio yang berusia 99 tahun.
Saya pada dasarnya menentang melakukan sesuatu, dan solusi dengan ketidakstabilan struktural tidak cocok untuk saya.
Kami akan mengulangi jalur rekayasa balik ban. Pergilah.

Pertama-tama, kami terhubung ke bus dengan mobil langsung, dan menghapus bentuk gelombang:


Awal paket.


Bit ada di suatu tempat di tengah, lebih besar.


Sesuatu yang sangat mirip dengan ACK.

Sedikit lagi tentang langkah aneh ini - di bawah ini.

Saya sudah membuat tangkapan layar bentuk gelombang dari data yang disimpan, saat mengambilnya, saya tidak segera memperhatikan rentang tegangan tempat saya mengambil data. Dan ketika dia menggambarnya, dia harus turun ke mobil lagi untuk memastikan bahwa dia tidak selamat dari pikiran. Ya, rentang bus diferensial hanya 200mV (!!!).

Selanjutnya kita pergi ke lembar data yang digunakan oleh rekan ST485, dan kita lihat yang berikut di sana:



Di sini, sebenarnya, akar dari semua masalah ditemukan, karena itu kita harus bermain dengan resistor, dan berdoa kepada para dewa rosin sehingga konverter bekerja pada mesin tertentu. Bekerja di dekat ambang adalah jahat. Tetapi yang lebih menarik adalah bahwa untuk AVC-LAN, yang dalam fisika adalah klon dari beberapa IE-Bus dari NEC, sesuai dengan spesifikasinya (tautannya akan sedikit lebih jauh), keadaan aktif adalah tegangan di atas 120mV, walaupun pada kenyataannya ST485 memiliki hak untuk mempertimbangkan apapun yang kurang dari 200mV adalah nol. Nah, itu adalah, jika, karena penyimpangan produksi, ST485 memiliki level ambang sedikit lebih rendah, dan muncul di bus untuk margin sedikit di atas norma (hingga 6 volt diperbolehkan), maka, tentu saja, ST485 akan dapat menerima sinyal seperti itu. Dan ketidakakuratan pembuatan ini adalah satu-satunya hal yang memaksa perangkat dengan ST485 dalam komposisi terkadangkerja. Tentu saja, kita tidak akan meletakkan kebahagiaan seperti itu dalam pembangunan.

Solusi kedua yang tersedia berdasarkan ST485 yang sama dan penguat operasional, saya tidak suka banyak komponen. Ya, pada abad ke-21 kita hidup.

Solusi:
Ada konverter khusus untuk AVC-LAN. Tapi saya tidak bisa mendapatkannya dengan harga yang terjangkau untuk perangkat ini. Brotherly China kembali datang untuk menyelamatkan, di mana HA12240FP ditemukan , yang memiliki perbedaan tegangan untuk menerima kayu. "1" menurut datasheet adalah 80..110 mV. Ini akan memungkinkan ban kami untuk mengatur level aktif dengan margin hampir dua kali lipat. Mengatur.

Kami melahirkan skema pada STM32F103 yang disebutkan di bagian pertama:


UPD: Skema ini lahir dengan tergesa-gesa, mengandung kesalahan. Pengemudi bus harus diberdayakan dari 5V. Jika demikian, seperti pada diagram, diferensialnya naik. ambang batas, dan tidak semua paket diterima.

Semuanya sederhana untuk primitivisme, saya pikir, tidak perlu deskripsi. Kecuali, mungkin, fakta bahwa pilihan kaki untuk RX1 / 2 tidak disengaja, dan versi pertama dari rangkaian memerlukan "perbaikan file" untuk mendapatkan sinyal ke input tangkapan / perbandingan, karena saya ingin menggunakannya untuk mengukur panjang pulsa. Solusi alternatif - jajak pendapat dan interupsi pada perubahan status kehilangan akurasi dan kompleksitas implementasi perangkat lunak. Plus - Saya ingin menerima setidaknya dua garis secara paralel (ada tiga di kepala), dan jika bagian depan bertepatan dengan dua, Anda dapat mengucapkan selamat tinggal pada gagasan keakuratan yang dapat diterima jika Anda tidak menggunakan tangkapan / perbandingan.

Analisis lebih lanjut dari data dalam paket ditulis dengan baik di sini . Tetapi, mengingat tautan tidak konsisten, saya akan mengulangi secara singkat di sini:

  • Bus diferensial, di sini mereka menulis tentang interpretasi tingkat log. "1" pada <20mV, masuk. "0" -> 110mV.
  • Panjang bit adalah 40 µs, 20 µs pertama selalu "0", 7 µs terakhir selalu "1", di tengah adalah nilai bit.


    Nah, lampu lalu lintas:


  • Mulai bit - lebih panjang dari 180 μs
  • (ACK). «», - :



    ACK- , Dallas 1-wire, , , , . , . 1 , «0» ( , ), .2 , , , . .3 , (1), , , 7 , . «1».

Ya ... kami sudah tahu level fisiknya, menggambar sirkuit, dan memisahkan papannya. Ternyata kira-kira seperti ini:





Papan sirkuit yang dicetak agak tidak berhasil, dan bukan karena kode QR tidak bekerja dalam pencetakan layar sutra. Ada kesalahan di sirkuit di dalamnya (dalam diagram di atas saya sudah memperbaikinya) mengenai pemilihan kaki untuk RX, dan tiga driver garis diceraikan. Dalam proses penulisan dan debugging program, saya menyadari bahwa itu baik jika Anda dapat menjalankan setidaknya dua dengan mantap. Ya, dan lebih banyak tidak perlu.

Yah ... perangkatnya ternyata sederhana dan efektif, sementara masalah konstruktif dengan ketidakcocokan tingkat telah diselesaikan.

Lebih lanjut dalam program ini:

  1. . , . : * USB — , , «» . . * , 8, 6- , 4.4 . , , .
  2. Monitor Android untuk membalikkan logika bus sepenuhnya. Jika seseorang kuat di Android dan Kotlin, saya akan berterima kasih atas kesempatan untuk berkonsultasi. Ini adalah upaya malu-malu untuk menguasai semuanya sekaligus, oleh karena itu jangan masukkan repositori dengan referensi tanpa pass baru :)


UPD: sementara tetap s data e bukan mikrodetik adalah ms.

All Articles