بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم

SISTEM RESET

Mikrokontroler harus me-reset setiap kali catu daya dinyalakan, tujuannya agar register-register periperal berada di kondisi yang diketahui (nilai default) sebelum menjalankan program yang sebenarnya. Pabrikan mikrokontroler telah menentukan nilai default untuk setiap register. Reset juga diperlukan ketika saat menjalankan program, mikrokontroler mengalami hang. Pada saat ini watchdog sebagai salah satu sumber reset, akan melakukan reset sehingga mikrokontroler bisa bekerja kembali.

Reset tidak akan menginisialisasi RAM internal, tapi untungnya compiler umumnya akan secara otomatis memberikan nilai 0 kepada variabel yang disimpan di RAM.

Ada beberapa sumber reset yang dimiliki oleh STM32:

  1. Reset eksternal melaui pin NRST (aktif low)
  2. Dari timer watchdog, WWDG (Windowed Watchdog) dan IWDG (Independent Watchdog)
  3. Reset saat power on
  4. Reset secara software
  5. Reset manajemen low power
Sumber Reset STM32

STM32 pada dasarnya tidak membutuhkan komponen reset eksternal di pin NRST, reset power on sendiri dilakukan melalui pemonitor catu daya internal. Walaupun demikian, pin NRST disarankan untuk dihubungkan dengan pulldown kapasitor untuk menghindari CPU ter-reset akibat adanya sinyal parasitik di pin NRST. Nilai kapasitor yang disarankan adalah 100 nF. Proses pengisian dan pengosongan kapasitor ini, melalui resistor RPU, tentu saja akan menambah penggunaaan daya STM32. Untuk menguranginya nilai kapasitor bisa dikurangi sampai 10 nF. Sebuah switch bisa juga ditambahkan untuk menambah fitur reset manual.

Pemonitor tegangan internal memastikan bahwa tegangan catu daya sesuai dengan tegangan minimal yang dibutuhkan oleh STM32. Apabila tegangan catu daya dibawah tegangan ambang minimal, maka pemonitor tegangan ini akan memberikan sinyal reset ke CPU, sehingga STM32 tidak masuk ke keadaan yang tidak terduga (brown out).

Pemonitor Tegangan

STM32 dengan kemasan 144 pin atau lebih mempunyai fitur untuk mematikan fungsi pemonitor tegangan ini melalui pin PDR_ON. Jika pin PDR_ON dihubungkan dengan VDD maka fungsi pemonitor tegangan akan aktif, sedangkan jika dihubungkan ke VSS/GND maka fungsi pemonitor tegangan akan mati. Di kemasan yang lain fungsi monitor tegangan akan selalu aktif.

Reset Eksternal

Apa akibatnya kalau fungsi monitor tegangan dimatikan? Pada aplikasi tertentu STM32 mungkin akan di-catu melalui batere yang tegangannya akan turun seiring dengan waktu pemakaian, suatur waktu mungkin akan mencapai tegangan di bawah 1.7V. Hal ini tentu saja akan membuat STM32 ke kondisi brown out. Jika monitor tegangan aktif, maka secara otomatis monitor tegangan akan memberikan sinyal reset sampai tegangannya pulih kembali. Pemonitor tegangan juga bisa digunakan untuk menggantikan monitor internal. Tetapi mengaktifkan pemonitor tegangan lebih direkomendasikan.

CLOCK

Kalau catu daya diibaratkan dengan bahan bakar, maka clock merupakan mesinnya, yang akan menggerakan CPU dan periperal internal yang dimiliki oleh mikrokontroler. Clock terutama menyediakan pewaktuan (time base) bagi CPU dan periperal, terutama Timer. UART mebutuhkan clock untuk menentukan baud rate, SPI dan I2C membutuhkan clock untuk sinkronisasi data. ADC pun memerlukan clock untuk menentukan frekuensi sampling dari konversi analog ke digital.

Mikrokontroler biasanya sudah dilengkapi osilator sebagai sumber clocknya, osilator dengan kristal/resonator eksternal dan osilator RC internal. Mikrokontroler juga bisa menerima clock dari osilator eksternal

STM32 membutuhkan 2 sumber clock, clock primer dan clock sekunder. Sumber clock bisa berasal dari:

  1. HSI (High-speed internal), merupakan osilator RC internal (8 MHz atau 16 MHz).
  2. HSE (High-speed external), osilator dengan kristal eksternal atau sumber clock eksternal.
  3. MSI (Multispeed internal), osilator RC internal dengan frekuensi bisa diatur. Hanya ada di STM32 low power (STM32L).
  4. PLL (Phase Locked Loop), untuk menaikan frekuensi clock (sampai 400 MHz di STM32H7).

Sedangkan sumber clock sekunder, yang digunakan terutama untuk RTC mempunyai sumber clock yang bisa berasal dari:

  1. LSI (Low speed internal), osilator RC internal (32 KHz)
  2. LSE (Low speed eksternal) dengan kristal eksternal

HSI

Dengan HSI maka tidak dibutuhkan komponen eksternal (kristal atau resonator eksternal), sehingga HSI sangat cocok untuk desain-desain low cost. Kelemahan dari osilator RC adalah akurasinya yang kurang bila dibandingkan dengan kristal, walapun dengan kalibrasi. Namun waktu start upnya lebih cepat dari pada osilator kristal atau resonator keramik.

HSI di beberapa seri STM32 mempunyai frekuensi 8 MHz (misal STM32F1) atau 16 MHz (misal STM32F4). Lihat datasheet untuk lebih detilnya. Saat power on reset (start up), STM32 akan bekerja dengan HSI terlebih dahulu. Untuk beralih ke HSE harus dilakukan melalui software.

Perlu diperhatikan, ada beberapa STM32, misal STM32F103 yang apabila menggunakan HSI, maka fitur USBnya tidak bisa diaktifkan. Karena USB memerlukan frekuensi clock yang akurat (48 MHz). Namun ada juga STM32 yang bisa mengaktifkan fitur USBnya dengan osilator internal, misal STM32L4 dengan MSI.

MSI

MSI hampir sama dengan HSI, MSI juga merupakan osilator RC internal. MSI ini ada di STM32 jenis low power (STM32L). Sesuai dengan namanya (multispeed) frekuensi MSI ini bisa diatur. Ada 12 frekuensi yang dapat dipilih: 100 kHz, 200 kHz, 400 kHz, 800 kHz, 1 MHz, 2 MHz, 4 MHz (default), 8 MHz, 16 MHz, 24 MHz, 32 MHz dan 48 MHz. Dengan frekuensi MSI 48 MHz, maka fitur USB tidak memerlukan kristal eksternal.

STM32 yang mempunyai MSI, maka saat start-up osilator yang aktif adalah MSI, kemudian apabila ingin menggunakan HSI atau HSE maka harus diatur melalui software. MSI juga sangat berguna ketika STM32 bekerja dengan sistem batere maka untuk lebih mengurangi pemakaian daya, STM32 bisa dipilih clock dengan frekuensi lebih rendah.

HSE

Selain osilator RC (HSI), sebenarnya STM32 juga mempunyai osilator internal lain namun membutuhkan kristal atau resonator keramik eksternal agar bisa berfungsi. Kristal ini bisa dihubungkan dengan pin OSC_IN dan OSC_OUT. Osilator yang biasa digunakan di mikrokontroler adalah osilator Pierce, hal ini dipilih karena osialtor ini hanya membutuhkan sedikit komponen eksternal, selain juga kestabilan frekuensinya dengan bantuan kristal.

Kristal Eksternal

Osilator Pierce membutuhkan kapasitor selain kristal (CL1 dan CL2), kapasitor ini akan menjadi Load Capacitance (CL) dan karena ini frekuensi tinggi, maka jalur PCB pun akan menjadi kapasitor (stray capaitance, Cs). Agar frekuensi osilator akurat, maka nilai CL ini harus sama dengan nilai load capacitance yang dimiliki oleh kristal. Nilai CL1, CL2 dan Cs ini harus diatur agar nilai CL nantinya mendekati atau sama dengan nilai load capacitance kristal, dengan menggunakan rumus sebagai berikut:

Perhitungan Load Capacitance

Load capacitance kristal bisa dilihat di datasheet kristal yang digunakan, sementara Cs agak susah menentukannya, karena harus melakukan pengukuran PCB, dan saya tidak tahu caranya. Tapi nilai 18 pF – 22 pF biasa digunakan.

Selain kapasitor, diperlukan juga sebuah resistor RExt. Resistor ini berfungsi untuk mengurangi disipasi daya di kristal dengan cara membatasi level (tegangan keluaran) osilator. Tegangan ini harus dibatasi agar kristal tidak rusak akibat adanya getaran mekanik yang berlebihan. Perhitungan nilai resistor RExt bisa dilihat dari dokumen ini. Saya biasanya menggunakan 390 Ohm.

Nilai kristal berkisar dari 4 – 48 MHz, namun tiap-tiap type STM32 berbeda-beda, sebagai contoh STM32F2 maksimal frekuensi kristal adalah 26 MHz. Pemilihan frekuensi kristal harus diperhatikan, karena mungkin nilai frekuensi tertentu tidak bisa digunakan untuk membangkitkan frekuensi yang diperlukan oleh USB atau Mikro SD (48 MHz).

Sumber HSE juga bisa berasal dari eksternal osilator (misal osilator jenis TCXO). Sumber clock dihubungkan ke pin OSC_IN.

Clock dari OSilator Eksternal

Jika HSE tidak digunakan, maka pin OSC_IN dan OSC_OUT bisa digunakan sebagai GPIO. Pin OSC_IN dan OSC_OUT terhubung ke port yang berbeda untuk setiap packagenya. Sebagai contoh untuk LQFP144, OSC_IN akan menjadi pin PH0 sedangkan OSC_OUT menjadi PH1. Silakan buka datasheet untuk kemasan yang lain.

PLL

PLL (Phase Locked Loop) bisa dikatakan sebagai alat sistem yang bisa menghasilkan output yang fasenya ditentukan dengan fase sinyal inputnya. Salah satu contoh aplikasi PLL adalah osilator yang frekuensinya bisa diatur. Dengan PLL ini maka STM32 bisa bekerja di frekuensi clock yang lebih tinggi dari sumber clock dengan frekuensi lebih rendah. Sebagai contoh STM32F429 bisa bekerja dengan clock 180 MHz dari kristal 8 MHz. PLL ini harus diatur secara software.

Konfigurasi Clock STM32F429

LSI DAN LSE

LSI dan LSE merupakan sumber clock sekunder yang dipakai untuk terutama RTC dan Watchdog. LSI merupakan osilator RC internal (32 kHz) sedangkan LSE berasal dari sumber eksternal. Aturan-aturan LSE hampir sama denganb aturan-aturan yang berlaku untuk HSE. Nilai LSE biasanya 32,768 kHz. Jika fitur RTC diaktifkan, disarankan untuk menggunakan LSE, mengingat akurasi LSI kurang bagus.

Semoga Bermanfaat.

Leave a Reply

Your email address will not be published.