Saya merancang perangkat di sekitar STM32L476. Perangkat saya terutama bertenaga baterai, tetapi memiliki port USB yang, ketika dicolokkan, saya ingin menggunakan sebagai sumber daya alternatif (melalui regulator 3.3V) untuk membatasi pengurasan baterai. Ada kemungkinan juga bahwa pengguna menghubungkan port USB saat tidak ada baterai.
Saya ingin dapat merasakan ketika port USB terhubung, jadi saya menggunakan PA9 sebagai OTF_FS_VBUS.
Berita baiknya : datasheet mengatakan bahwa pin PA9 5V toleran.
Berita buruknya : 5V pin tolerant tampaknya benar-benar toleran 5V hanya ketika daya diterapkan. Lembar Data §6.2 tabel 18 mengatakan:
Tegangan input maks pada pin FT_xxx: min (VDD, VDDA, VDDIO2, VDDUSB, VLCD) + 4.0V
Dalam kasus saya, jika tidak ada baterai dan pengguna menghubungkan port USB, ada waktu, sebelum regulator mulai, di mana tegangan pada PA9 akan 5V sementara tidak ada daya yang diterapkan sama sekali pada pin pasokan CPU.
Berita lebih buruk : injeksi saat ini tidak diperbolehkan: lembar data §6.2, tabel 19, mengatakan:
Diinjeksikan saat ini pada FT_xxx: -5 / + 0 (lihat catatan 4)
Catatan 4: Injeksi positif diinduksi oleh VIN> VDDIOx sementara injeksi negatif diinduksi oleh VIN <VSS. IINJ (PIN) tidak boleh terlampaui.
Jadi sepertinya saya tidak bisa menggunakan resistor sederhana untuk membatasi kelebihan arus pada PA9 selama regulator mulai. Setiap jumlah arus yang akan mengalir dari VBUS ke PA9 sebelum VDD naik tampaknya dilarang.
Apa yang orang lain lakukan?
Saya telah melihat banyak desain di sekitar chip STM32, melihat koneksi VBUS mereka, dan mereka tampaknya tidak peduli. Mereka menghubungkan VBUS langsung ke PA9, atau akhirnya melalui resistor, tapi saya tidak pernah melihat yang lebih rumit. Tetapi mereka kebanyakan adalah papan pengembangan, jadi saya kira kasarnya (apakah itu sebuah kata?) Tidak terlalu penting. Dan mereka biasanya tidak didukung melalui port USB, dan tentu saja menganggap pengguna tidak akan menghubungkan port USB sebelum menyalakan papan.
Apa rencanaku?
Menempatkan ini antara VBUS pada port USB dan pin PA9 dari MCU:
Saya benar-benar berusaha membuatnya tetap sederhana. Pada dasarnya, ini memastikan bahwa VUSB_CPU (yang merupakan pin PA9) tidak akan pernah bisa di atas VCPU + 4V (Vz + Vbe), tanpa mengkonsumsi daya apa pun jika OK.
Pertanyaan utama saya adalah : Apakah saya benar dalam analisis saya? Apakah rangkaian ini solusi yang baik? Apakah saya mengkhawatirkan hal-hal yang tidak relevan? Mengapa tidak ada orang lain yang peduli dengan masalah potensial ini?
Pertanyaan tambahan : Saya berencana menggunakan USB OTG. Apakah itu masalah jika ada resistor 4.7k antara konektor dan pin PA9? Saya kira itu akan menjadi jika saya harus menggunakan VBUS berdenyut selama SRP, tetapi metode ini tampaknya sudah usang. Jadi apakah saya baik, apa pun peran (perangkat / host) perangkat saya?
Yang terakhir : Berapa arus maks yang ditarik oleh pin pasokan VDDUSB? Datasheet menentukan, untuk perangkat USB: 16,4 μA / MHz untuk domain jam AHB + 23,2 μA / MHz untuk domain jam independen, tetapi kami tidak tahu dari mana itu diambil (VDD atau VDDUSB).
Jawaban:
Pergilah dengan pembagi resistor (430k / 620k) pada Vbus - ini akan membuat mikrokontroler tetap di spec, dan penarikan arus parasit tidak akan menjadi masalah karena akan bersumber secara eksklusif dari Vbus, bukan dari baterai (yang merupakan apa Saya berasumsi Anda ingin menghemat).
sumber
Mungkin metode yang paling sederhana, gunakan resistor highish value (10-100k) memberi makan kapasitor largish (beberapa uF atau lebih) sehingga perlu waktu untuk tegangan untuk meningkatkan, saya tidak akan khawatir tentang fraksi volt yang membangun di kapasitor saat regulator mulai, jika mikro mendapat perlindungan ESD maka input dapat menangani 5-10V untuk beberapa puluh AS
sumber