Tidak Dapat Memprogram Papan STM32 Kustom

9

Saya telah merancang papan STM32 sederhana. Di bawah ini adalah gambar tata letak skema dan PCB:

Skema:
masukkan deskripsi gambar di sini

Tata letak PCB: masukkan deskripsi gambar di sini

Tata letak PCB dengan VDD disorot: masukkan deskripsi gambar di sini

Tata letak PCB dengan GND disorot: masukkan deskripsi gambar di sini

Hanya bagian-bagian dari desain ini yang relevan dengan pertanyaan saya yang ditunjukkan pada gambar di atas.

Masalah saya adalah: Saya mencoba menggunakan ST-Link bawaan dari STM32 Discovery Board untuk memprogram papan kustom ini, tetapi saya belum berhasil. Aplikasi ST-Link Utility pada PC dapat mengenali pemrogram, tetapi tidak dapat mendeteksi MCU target. Pesan kesalahan yang saya dapatkan adalah: "Target tidak terhubung" dan "ST-Link USB Communication Error".

Berikut adalah beberapa fakta terkait tentang masalah saya:

  • STM32 Discovery Board berfungsi dengan baik: Saya dapat menggunakan itu ST-Link bawaan untuk memprogram itu on-board STM32 MCU. Ini bagus.
  • STM32 MCU telah disolder dengan orientasi yang benar di papan kustom. Saya memeriksa ini dua kali.
  • Saya telah memeriksa jejak VDD dan SWD. Mereka terhubung dengan baik (tidak ada masalah solder). Pin Boot0 berada pada 0V. Pin NRST berada di 3.3V.
  • Kabel SWD pendek, panjangnya hanya 7-8 cm.
  • STM32 pada papan kustom saya memiliki jenis yang sama dengan yang ada di Papan Penemuan.
  • Saya telah mengikuti instruksi dalam manual STM32 Discovery Board tentang cara menggunakan Discovery Board untuk memprogram STM32 MCU eksternal. Untuk lebih spesifik, saya melepas 2 jumper CN3, dan kemudian saya menghubungkan papan seperti pada tabel ini: masukkan deskripsi gambar di sini

  • Saya juga melepas jembatan solder SB11 pada Papan Penemuan (agar pin NRST dapat bekerja dengan baik).

  • Saya telah mencoba aplikasi ST-Link Utility dan Keil. Pesan kesalahan yang saya dapatkan adalah sama.
  • Pada awalnya saya tidak menghubungkan pin 6 pada tabel di atas (SWO) karena sepengetahuan saya itu tidak perlu. Namun setelah itu saya menghubungkannya juga, tetapi hal-hal masih belum berhasil.
  • Saya juga menambahkan tutup 100nF dari pin NRST ke GND, dan kemudian resistor pull-up 100k dari pin ini ke VDD. Masalahnya masih ada.
  • Saya juga mencoba menggunakan mode "connect under reset" pada program ST-Link Utility. Tidak beruntung juga.

Saya curiga ada yang salah dengan desainnya, tapi saya tidak yakin. Tolong bantu saya untuk menyelesaikan masalah.

Terima kasih banyak :)

pengguna3286500
sumber
Sejauh yang saya ingat, Anda harus memberi daya pada st-link dan papan kustom Anda. The 3.3V di konektor SWD papan kustom Anda harus menyediakan 3.3V untuk st-link untuk dideteksi.
davidrojas
@davidrojas: Terima kasih atas jawaban Anda. Nah, saat ini saya menyalakan ST-Link dengan port USB dari PC saya. Papan STM32 khusus ditenagai oleh 3.3V eksternal yang terpisah. Namun dasar dari 2 papan ini sudah terhubung (seperti pada tabel di atas). Juga, 3.3V dari papan kustom saya terhubung ke VDD_TARGET di ST-Link juga. Apakah Anda pikir ini cukup?
user3286500
Itu sudah cukup, ya. Masalah lain bisa jadi panjang dan tata letak garis SWDIO dan SWCLK, saya punya masalah koneksi intermiten di masa lalu karena ini. Mereka harus sesingkat mungkin. Coba turunkan kecepatan SWD juga.
davidrojas
Saya telah menurunkan kecepatan SWD, dari standar 1,8 MHz ke di bawah 400 kHz, tetapi masih belum berhasil. Mengenai panjang kabel, dalam pengaturan saya, panjang total koneksi SWD (dari ST-Link ke target STM32) sekitar 12-13 cm. Apakah ini masih dalam batas?
user3286500
1
Apakah Anda memperhatikan bahwa tuangkan tanah di bawah chip secara fisik terisolasi, dan tidak benar-benar terhubung ke salah satu pin tanah? Koneksi aktual antara pin ground mengikuti jalur berliku di luar chip, dan beberapa dari mereka mungkin benar-benar terisolasi. Anda perlu menyesuaikan jarak bebas Anda agar tuangkan tanah tidak memiliki pulau yang terisolasi, dan ini akan membantu memastikan bahwa semua pin ground dari chip lebih dekat dengan potensi yang sama.
Dave Tweed

Jawaban:

5

Terima kasih atas komentar Anda yang luar biasa. Karena mereka, saya yakin desain saya bebas kesalahan. Itu sebabnya saya memusatkan perhatian saya untuk mencari kesalahan pada perangkat keras. Dan saya menemukan kesalahan! Ini adalah kesalahan solder.

Saya menemukan kesalahan ini setelah mengikuti instruksi ini: "Gunakan multimeter dan uji semua koneksi untuk celana pendek atau kurangnya koneksi. Ingatlah untuk menyentuh pin / pembalut / apa pun yang benar-benar lembut, karena jika Anda menekan probe dengan keras, Anda dapat" memperbaiki "koneksi sementara (misalnya Anda mendorong pin IC ke jejak di PCB dan tesnya OK, tapi begitu Anda melepaskan pin membungkuk lagi)." Posting asli ada di sini .

pengguna3286500
sumber