Sunting : Pertanyaan ini salah. Stm325105 hanya memiliki satu pin bangun. Tetapi bagian-ST lainnya memiliki lebih dari satu pin bangun, jadi jawaban yang diberikan berlaku untuk mereka.
Saya memiliki stm32f105 yang memiliki dua tombol sesaat yang terhubung ke input wakeup. Prosesor dimasukkan ke dalam MODE STANDBY. Ketika salah satu tombol ditekan, atau timer RTC menyala, cpu terbangun.
Masalahnya adalah saya ingin CPU melakukan hal yang berbeda tergantung pada input wakeup yang dipicu. Menurut 5.3.5 dari manual referensi stm32f105xx ST , tidak ada register yang disimpan kecuali untuk register status yang menunjukkan bahwa kami telah dibangunkan (tetapi tidak oleh siapa) dan 42 register cadangan.
Mode Siaga memungkinkan untuk mencapai konsumsi daya terendah. Ini didasarkan pada mode deepsleep Cortex ® -M3, dengan regulator tegangan dinonaktifkan. Akibatnya, domain 1,8 V dimatikan. PLL, osilator HSI, dan osilator HSE juga dimatikan. Konten SRAM dan register hilang kecuali untuk register di domain Cadangan dan sirkuit Siaga.
Setelah bangun dari mode Standby, eksekusi program restart dengan cara yang sama seperti setelah Reset (pengambilan sampel pin, reset vektor diambil, dll.). Bendera status SBF dalam daftar Kontrol daya / status (PWR_CSR) menunjukkan bahwa MCU dalam mode Siaga.
Posting forum ST ini, Bagaimana menentukan asal dari Wakeup dari Siaga? , menyarankan agar saya tidak dapat mendeteksi wakeup yang dipicu oleh perangkat lunak. Saya tidak menemukan tulisan lain di sana yang memberikan pencerahan lagi.
Bagaimana saya bisa menggunakan perangkat lunak atau perangkat keras untuk menentukan, setelah bangun, input wakeup yang dipicu?
Jawaban:
Saya tidak tahu detail bagian ST ini, jadi saya akan menganggap deskripsi Anda tentang hal itu benar.
Prosesor harus bangun segera setelah salah satu tombol ditekan. Ini harus benar terutama jika ia memiliki osilator RC internal. Bahkan jika Anda harus lari dari kristal pada akhirnya untuk alasan akurasi, mungkin Anda dapat memiliki bagian mulai dari RC internal, kemudian beralih ke kristal nanti. Ada micros yang dapat melakukan hal-hal seperti itu, meskipun saya tidak tahu apakah Anda adalah salah satunya.
Bagaimanapun, Anda membaca kedua input sesegera mungkin setelah bangun. Kecuali ada sesuatu yang tidak biasa pada mikro ST ini, yang seharusnya dari ms hingga 10s ms dari tombol tekan.
Untuk menjamin saluran masih rendah, gunakan kapasitor untuk menjaga saluran tetap rendah hingga 100 ms setelah tombol dilepaskan.
Sebagai contoh, katakanlah tingkat input rendah logika dijamin adalah 20% dari tegangan suplai. Saluran ditarik dengan resistor, dan memiliki kapasitor ke ground. Tombol memendekkan garis ke tanah. Oleh karena itu, garis melayang tinggi, dan secara aktif dipaksa ke tanah ketika tombol ditekan. Ketika tombol dilepaskan, tegangan secara eksponensial berkurang ke arah suplai.
Pembusukan hingga 20% dari nilai akhir terjadi dalam konstanta waktu 0,22. Katakanlah Anda ingin menjamin saluran terlihat rendah untuk 100 ms setelah tombol ditekan. Itu berarti konstanta waktu RC harus 450 ms. Dengan penarikan 100 kΩ, kapasitansi harus 4,5 μF. Jadi 4,7 μF 10 V tutup akan melakukannya dengan baik.
Singkatnya, inilah sirkuitnya:
sumber