LED menyala redup saat UC di reset

Aug 19 2020

Saya merancang PCB yang memiliki STM32G431CBT6 di atasnya. Ada juga dua LED, merah dan hijau, terhubung seperti yang ditunjukkan:

Saat saya pertama kali menyalakannya (jadi belum ada program di UC), LED merah menyala redup. Setelah memuat program blinker LED di UC, berfungsi dengan baik (dengan brigthness penuh), namun jika saya menekan tombol reset, LED merah menyala redup lagi dan tegangan di R1 adalah 120mV. Jadi 120uA mengalir karena suatu alasan. LED lain tidak melakukan ini, dan tegangan pada R2 adalah 0.

Melihat datasheet saya hanya menemukan catatan tentang PB4 ini (halaman 60):

"Setelah reset, pin ini dikonfigurasi sebagai fungsi alternatif debug JTAG / SW, dan pull-up internal pada pin PA15, PA13, PB4 dan pull-down internal pada pin PA14 diaktifkan."

Tetapi meskipun ada pull-up di PB4, LED tidak boleh menyala, lalu apa yang menyebabkan perilaku ini?


Edit:

Setelah mengesampingkan proyek untuk beberapa saat, sekarang tidak ada yang melakukannya, tetapi saya tidak tahu apa yang telah berubah. Saya hanya mengutak-atik pengaturan boot di byte opsi (dengan ST-Link Utility), meskipun saya tidak berpikir itu ada hubungannya dengan pull-down UCPD.

Ngomong-ngomong, saya menemukan pengaturan default untuk menonaktifkan pull-down:
(dan ya, ini disebut "pull-up" dalam pengaturan, tetapi tampaknya itu adalah kesalahan)

Ketika dicentang (default), itu menempatkan

HAL_PWREx_DisableUCPDDeadBattery();

panggilan fungsi ke dalam fungsi HAL_MspInit.

Saat tidak dicentang, LED menyala redup bahkan setelah disetel ulang, jadi ini memverifikasi jawaban yang diterima untuk pertanyaan asli. Hingga mulai tidak pernah dilakukan redup lighting lagi.

Ringkasan:

  1. Awalnya LED menyala redup hanya di reset.
  2. Ini karena UCPD pull-down, yang dinonaktifkan oleh kotak centang "hemat daya UCPD non-aktif - deaktif Baterai Mati pull-up" dicentang secara default. Saya dapat memverifikasi ini dengan menghapus centang dan tidak mengonfigurasi pin GPIO untuk LED, yang mengakibatkan pencahayaan redup bahkan setelah reset.
  3. Sesuatu terjadi dan sekarang tidak pernah terjadi, terlepas dari kotak centang atau sedang disetel ulang. Mungkin pull-down rusak karena beberapa alasan? Saya hanya tahu bahwa pin GPIO itu sendiri berfungsi, ia dapat menggerakkan LED dengan baik saat diprogram.

Jawaban

11 Justme Aug 19 2020 at 15:24

Tercantum di manual referensi bahwa seri MCU khusus ini menggunakan PB4 untuk salah satu pin CC konektor USB-C. Ini berarti pin memiliki dukungan untuk fitur pull-down internal 5.1k yang diaktifkan secara default pada waktu reset, karena jika tidak, mungkin tidak dapat menggunakan bootloader untuk mendownload firmware melalui konektor USB-C. Jadi jika JTAG perlu digunakan maka pull-down dapat dinonaktifkan. Jadi itu akan mempengaruhi LED juga.

KyleB Aug 19 2020 at 14:55

Apa yang menyebabkan perilaku tersebut adalah kesalahan di suatu tempat. Entah Anda tidak benar-benar terhubung ke pin yang Anda pikir (bahkan insinyur paling veteran pun dapat melakukan ini), atau manual salah. Kamu benar. Satu-satunya cara agar lampu remang-remang itu adalah jika ada pull-down.

Terkadang jawabannya terkubur jauh di dalam manual.

Jika itu mengganggu Anda, pasang pull-up yang kuat di atasnya.

citizen Aug 19 2020 at 15:43

Jika ini diaktifkan dengan pull-down default ke GND (dan ini harus dicatat dalam lembar data mikroprosesor jika pin ini memiliki inisialisasi pull-down) maka ya likley-nya untuk mengalirkan beberapa arus melalui led. Biasanya kode akan menginisialisasi semua pin fungsi ganda ke keadaan yang benar, dan / atau menghapus pull-down / pull-up yang tidak diperlukan. Tetapi dalam kasus Anda, Anda mengatakan tidak ada kode. Nah dengan beberapa kode inisialisasi yang ditulis dengan benar, LED akan diinisialisasi ke kondisi start-up yang benar (mungkin OFF secara default). Jika Anda kehilangan waktu tidur, sebaiknya tambahkan pull-up yang kuat atau pastikan kode berjalan segera setelah Anda menyalakan papan dan menjalankan kode.