Mikrokontroler/mikroprosesor berbasis ESP32 mempunyai fitur on-chip-debugging dengan protokol JTAG. Supaya ESP32 ini dapat didebug, maka perlu ada komponen JTAG Adapter. Petunjuk pemilihan JTAG adapter terdapat di artikel “Selecting JTAG Adapter“. Cara termudah adalah menggunakan board ESP32-WROVER-KIT yang sudah mempunyai JTAG adapter di dalamnya. Cara lain adalah menambahkan JTAG adapter pada board ESP32 yang belum dilengkapi dengan JTAG Adapter. Daftar JTAG Adapter yang dapat dipakai dapat dilihat antara lain di artikel “Debug Adapter Hardware“.
Pada tulisan ini diuraikan cara menyambungkan ESP32 ke JTAG Adapter berbasis FT2232HL.
Cara termudah melakukan debugging pada ESP32 adalah menggunakan board ESP32-WROVER-KIT yang sudah ada JTAG Adapter built-in di dalamnya. Sayangnya harga board ini agak mahal (sekitar USD 50). Jika Espressif sendiri menggunakan FT2232 untuk JTAG Adapter, nampaknya kemampuan FT2232 cukup bagus sebagai debugger.
Harga board ESP32 yang murah sekitar USD 7, sedangkan breakout board untuk FT2232 harganya sekitar USD 7, jadi dengan USD 14 sudah memperoleh ESP32 lengkap dengan JTAG debugger. Hanya saja perlu merangkai sendiri ESP32 dengan FT2232.
Hardware
Berikut ini teknik penyambungan ESP32 ke FT2232 menurut beberapa sumber.
#1 Analisis Skematik ESP32 WROVER KIT
Contoh cara menyambungkan antara ESP32 dengan FT2232 dapat dilihat dari skematik ESP32 WROVER KIT di situs Espressif. Berikut ini adalah pin JTAG pada ESP32, yaitu:
MTCK
MTDI
MTDO
MTMS
EN
Pin JTAG pada ESP32
Berikut ini adalah bagian dari skematik ESP32 WROVER KIT, khususnya yang tersambung ke JTAG. Pin yang dipakai adalah ADBUS0, ADBUS1, ADBUS2, ADBUS3, ACBUS1, yang tersambung ke sinyal TCK, TDI, TDO, TMS dan R_RST
Pin JTAG pada FT2232HL
Tabel berikut berisi hasil analisis daftar pin dan sinyal JTAG pada skematik ESP32 WROVER KIT tersebut:
Pin FT2232HL
Sinyal
Sinyal
Pin ESP32
ADBUS0
TCK
MTCK
R_IO13
ADBUS1
TDI
MTDI
R_IO12
ADBUS2
TDO
MTDO
R_IO15
ADBUS3
TMS
MTMS
R_IO14
ACBUS2
RST
EN
R_nTRST
#2 Situs PlatformIO
Penyambungan JTAG juga dijelaskan di situs PlatformIO sebagai berikut:
FT2232H Mini-Module Pin
Board JTAG Pin
Description
GND [CN2-2]
GND
Digital ground
AD0 [CN2-7]
TCK
JTAG Return Test Clock
AD1 [CN2-10]
TDI
Test Data In
AD2 [CN2-9]
TDO
Test Data Out
AD3 [CN2-12]
TMS
Test Mode State
AC2 [CN2-20]
RESET
Connect this pin to the (active low) reset input of the target CPU (EN for ESP32)
Modul FT2232 yang dipakai pada artikel tersebut adalah “FT2232H Mini Module” yang diproduksi oleh FTDI.
FT2232H Mini Modul
Produk breakout board serupa juga dibuat oleh CJMCU seperti pada foto berikut:
CJMCU-2232HL
#3 Forum Platformio
Sebagai perbandingan, berikut ini daftar koneksi JTAG ke ESP32 menurut artikel forum PlatformIO (Debugging ESP32 – How), modul FT2232 yang digunakan adalah “FTDI2232 minimodule”:
To debug ESP32 using FTDI2232 minimodule, here is the required connection: FTDI AD0 -> ESP32 GPIO13 (TCK) FTDI AD1 -> ESP32 GPIO12 (TDI) FTDI AD2 -> ESP32 GPIO15 (TDO) FTDI AD3 -> ESP32 GPIO14 (TMS) FTDI AC2 -> ESP32 EN (RST) FTDI GND -> ESP32 GND
Penggunaan FT2232H sebagai JTAG juga dijelaskan secara ringkas di datasheet FT2232H sebagai berikut:
Konfigurasi pin FT2232H
Software
Setelah mendapatkan kepastian cara menyambungkan hardware JTAG debugger, selanjutnya adalah setting software untuk melakukan debugging.
Status saat ini baru melakukan studi software apa saja yang perlu disiapkan. Beriktu ini penjelasan software untuk debugging ESP32:
Penggunaan software debugger Eclipse/Command Line: https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/jtag-debugging/using-debugger.html https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/jtag-debugging/configure-other-jtag.html
Penggunaan Debugger dengan PlatformIO: http://docs.platformio.org/en/latest/plus/debug-tools/minimodule.html
Debugging ESP32 secara umum: https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/jtag-debugging/
Hasil debugging menyusul.
Kesimpulan
Kesimpulan sementara ini:
Menurut studi literatur, ESP32 dapat didebug dengan hardware FT2232HL, dengan biaya total USD 14, lebih murah daripada harus memakai ESP WROVER KIT seharga USD 50.
Penyambungan antara ESP32 dan FT2232 dijelaskan di beberapa situs, dengan isi konsisten.
Proses debugging belum dilakukan, namun dari pengalaman selama ini, isi artikel di situs Espressif cukup lengkap dan mudah diikuti. Nampak bahwa Espressif cukup serius mengusahakan agar produk ESP32nya mudah dipakai oleh ‘orang biasa’.
Berikut ini beberapa percobaan pemrograman untuk mengakses input/output periferal pada mikroprosesor ESP32. Percobaan dilakukan pada board Lolin32 Lite, namun dapat dilakukan juga pada board ESP32 tipe lain.
Jenis percobaan yang umum pada mikroprosesor di antaranya sebagai berikut:
Input digital
Output digital
Input analog (dengan Analog to Digital Converter / ADC)
Output analog (dengan Digital to Analog converter / DAC)
Port serial (input output)
Interupsi timer
Interupsi eksternal / pin
Percobaan Port Digital
under construction
Percobaan Port Serial
Pada ESP32 terdapat 3 buah port serial: UART0, UART1 dan UART2. UART0 sudah tersambung melalui chip USB Serial CH340 pada board Lolin32 Lite, sehingga jika ingin menggunakan UART0 cukup dengan menyambungkan kabel USB dari PC ke konektor mikro USB pada ESP32. Port UART0 ini dipakai untuk melakukan upload program dan juga sebagai input/output default dari ESP32. Output ke port UART0 dari program di ESP32 dapat dilakukan dengan fungsi input/output standar seperti printf().
Pin-pin untuk UART0 pada ESP32 adalah U0TXD sebagai TX dan U0RXD sebagai RX. Level tegangan TX dan RX di sini adalah 3.3 volt.
Pin TX dan RX UART0 terhubung ke ESP32
Pin TX dan RX ini terhubung ke IC CH340C yang kemudian terhubung ke port USB (pin D+ dan D-)
Konverter TX/RX (TTL 3.3 volt) ke USBSkema port USB pada Lolin32 Lite
Port UART2 dan UART3 dapat diaktifkan jika perlu. Pin yang dipakai dapat dipilih dan diatur menggunakan software. Jika UART2 dan UART3 tidak digunakan, pin-pin nya dapat dipakai sebagai fungsi lain, misalkan sebagai GPIO input/output digital.
Pin UART2 dan UART3 menggunakan level TTL, sehingga jika ingin dihubungkan ke PC dapat menggunakan konverter USB ke Serial. Perlu dipilih komponen USB to Serial yang dapat menggunakan level tegangan 3.3 volt. Skema pemasangan konverter adalah sebagai berikut:
interkoneksi port serial UART2 dan UART3
Pin TX dihubungkan dengan RX , pin RX dihubungkan dengan TX, kedua pin GND dihubungkan. Pin 5 volt / 3,3 volt jangan dihubungkan , kecuali memang ESP32 mau diberi daya dari modul USB-Serial.
Perhatikan bahwa mesti menggunakan modul USB-Serial dengan tegangan kerja 3m3 volt. Ada modul USB-Serial yang dapat bekerja pada tegangan 5 volt maupun 3,3 volt, dan dapat diatur menggunakan jumper.
Chip USB to Serial yang umum di pasaran antara lain:
FTDI based, misal FT232. Biasanya paling mahal, namun enaknya adalah drivernya sudah built in di Windows maupun Mac OSX
CH340 based, ini biasanya lebih murah dibandingkan FTDI
Prolific based
Berikut ini modul USB to Serial berbasis CH340. Modul ini tidak ada setting tegangan.
Konverter USB to Serial berbasis CH340
Berikut ini modul USB to Serial berbasis FTDI (FT232RL). Modul ini ada setting tegangan kerja antara 3,3 volt dan 5 volt.
Konverter USB to Serial berbasis FTDI FT232RL
Pin pada modul USB-Serial cukup banyak, namun yang umum dihubungkan cukup GND, TX dan RX.