December 5, 2021

Blogna Kang U-2 Man

STM32, Embedded System, Microcontroller, ARM Cortex-M, RTOS, FreeRTOS

Blue Pill + STM32CubeIDE: Kirim dan Terima UART

3 min read

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

UART (port serial) banyak digunakan sebagai sarana antarmuka komunikasi dengan komputer, modem GSM/3G, modul bluetooth, modul wifi, sensor-sensor industri dan sebagainya. Yang membedakan adalah protokol komunikasinya, misal modem, bluetooth, dan wifi menggunakan AT Command, sedangkan sensor-sensor industri menggunakan protokol Modbus.STM32F103 sendiri dilengkapi dengan 5  buah UART, yang mendukung ISO 7816, LIN, IrDA dan kendali modem (RTS/CTS). Jumlah aktual UART tergantung dari package STM32F103, di Blue Pill dengan package 48 pin, hanya tersedia 3 UART (USART1, USART2, USART3).

Di keluarga STM32 ada UART dan USART. UART itu asinkron dengan pin RX dan TX. Sedangkan USART adalah sinkron, ada tambahan pin clock (CK) selain pin RX dan TX. Pada UART, pengirim dan penerima harus mengetahui kecepatan data (baud rate), karena data dibaca melalui pendeteksian bit start dan stop, kemudian dari baud rate penerima mencuplik aliran bit data tersebut. Kalau baud rate pengirim dan penerima tidak sama, data dipastikan akan error. Pada USART, data bisa dikirim secara sinkron, artinya pengirim akan mengirimkan sinyal clock sinkronisasi agar penerima bisa menerima data dengan benar tanpa perlu mengetahui kecepatan data. Dengan adanya sinyal clock sinkronisasi ini, kecepatan data USART bisa lebih tinggi dari pada kecepatan data UART. Kecepatan data UART maksimum sampai 4 Mbps sedangkan USART bisa mencapai 7.5 Mbps.

Pada tutorial kali ini hanya akan di-demontrasikan bagaimana mengirim dan menerima data asinkron melalui USART1. Parameter penting dari komunisi asinkron adalah baud rate (kecepatan data), panjang data dalam bit, bit paritas dan bit stop. Format yang paling sering dipakai adalah panjang data 8 bit, tanpa bit paritas dan bit stop 1. Kecepatan data bisa menyesuaikan, dalam tutorial kali ini akan digunakan 115200 bps (bit per second). UART ini kemudian dihubungkan dengan PC/Laptop melalui USB to Serial. Tentu saja pin RX/TX di Blue Pill dan RX/TX di USB to serial harus menggunakan koneksi cross.

UART Pin Out
UART Parameter

Di sisi PC digunakan program terminal, misal CoolTerm dengan seting port serial disamakan dengan seting di Blue Pill.

Terminal Setting

Ketika menekan keyboard di terminal, maka PC akan mengirim karakter ASCII sesuai tombol keyboard yang ditekan. Blue Pill kemudian akan meng-echo data yang diterimanya.

Demo Terminal

Untuk mengirim dan menerima data dari UART, pustaka HAL telah menyediakan fungsi HAL_UART_Trasmit dan HAL_UART_Receive. Selain itu juga disediakan fungsi pengiriman/penerimaan dengan interupsi dan DMA, Insya Allah akan dibahas di tutorial selanjutnya.

Contoh Penggunaan fungsi pengiriman:

Fungsi transmit membutuhkan parameter handler ke UART yang digunakan (dalam hal ini USART1), pointer ke buffer data yang akan dikirim, panjang data dan timeout.

Sedangkan untuk menerima:

Parameter yang digunakan sama, jika ada data yang diterima akan disimpan di variabel aRxBuffer. variabel ini berbentuk array, ukurannya harus sama atau lebih besar dari data yang diterima. Fungsi ini menunggu data serial, jika tidak ada data maka dia akan menunggu selama waktu timeout. Dan pastinya akan mempengaruhi proses/fungsi selankutnya karena bersifat blocking. Waktu timeout harus disesuaikan dengan panjang data, lebih banyak data yang harus diterima, waktu timeout harus lebih lama. Dalam banyak hal, penerimaan serial dengan interupsi atau DMA lebih baik dari pada metode polling seperti contoh di tutorial ini.

Kode lengkap

Semoga bermanfaat

Visits: 6 Visits: 98020

Leave a Reply

Your email address will not be published. Required fields are marked *

Copyright © All rights reserved. | Newsphere by AF themes.