TUGAS PENDAHULUAN



1. Soal Tugas Pendahuluan[Kembali]

SOAl TUGAS PENDAHULUAN

  1. Jelaskan apa itu protokol komunikasi UART, SPI, dan I2C 
  2. Bagaimana konfigurasi komunikasi UART pada STM32 dan Raspberry Pipico secara hardware (rangkaian) maupun software (program)
  3. Bagaimana konfigurasi komunikasi SPI pada STM32 dan Raspberry Pipico secara hardware (rangkaian) maupun software (program)
  4. Bagaimana konfigurasi komunikasi I2C pada STM32 dan Raspberry Pipico secara hardware (rangkaian) maupun software (program)

2. Jawaban Tugas Pendahuluan[Kembali]

1. Jelaskan apa itu protokol komunikasi UART, SPI, dan I2C 

Jawab :

  1. UART (Universal Asynchronous Receiver-Transmitter)
    UART adalah protokol komunikasi serial asynchronous yang menggunakan dua kabel (TX dan RX) tanpa sinyal clock. Data dikirim dalam bentuk frame yang terdiri dari start bit (1 bit), data (5–9 bit), parity bit (opsional), dan stop bit (1–2 bit). Karena tidak memerlukan clock, UART bergantung pada kesepakatan baud rate antara pengirim dan penerima untuk sinkronisasi. Protokol ini bersifat point-to-point, artinya hanya menghubungkan dua perangkat, dan mendukung full-duplex (pengiriman dan penerimaan data secara bersamaan).

  2. SPI (Serial Peripheral Interface)
    SPI adalah protokol komunikasi serial sinkron yang menggunakan sinyal clock untuk menyinkronkan pengiriman data antara master dan slave. SPI memanfaatkan empat jalur utama: SCLK (clock), MOSI (Master Out Slave In), MISO (Master In Slave Out), dan SS/CS (Slave Select/Chip Select). Keunggulan SPI terletak pada kecepatannya yang tinggi (hingga beberapa Mbps) dan fleksibilitasnya dalam mendukung multiple slave dengan penambahan jalur CS. 

  3. I2C (Inter-Integrated Circuit)
    I2C adalah protokol komunikasi serial sinkron yang menggunakan dua jalur: SCL (Serial Clock) untuk sinkronisasi dan SDA (Serial Data) untuk transfer data. I2C mendukung komunikasi multi-master dan multi-slave dengan sistem addressing (setiap slave memiliki alamat unik 7-bit atau 10-bit).

2. Bagaimana konfigurasi komunikasi UART pada STM32 dan Raspberry Pipico secara hardware (rangkaian) maupun software (program)

Jawab :

1. Konfigurasi Hardware (Rangkaian)

Komunikasi UART antara STM32 dan Raspberry Pi Pico memerlukan sambungan silang (cross-connection) antara pin TX dan RX kedua perangkat. Pin TX pada STM32 harus dihubungkan ke pin RX pada Raspberry Pi Pico, dan sebaliknya. Sebagai contoh, pin PA9 (TX) pada STM32 dihubungkan ke GP0 (RX) pada Raspberry Pi Pico, sedangkan pin PA10 (RX) pada STM32 dihubungkan ke GP1 (TX) pada Raspberry Pi Pico. Selain itu, kedua board harus memiliki referensi tegangan yang sama, sehingga perlu menghubungkan pin GND dari STM32 ke pin GND Raspberry Pi Pico.

2. Konfigurasi Software (program)

Pada sisi STM32 yang menggunakan HAL Library, komunikasi UART dapat dilakukan dengan menggunakan fungsi-fungsi penting seperti HAL_UART_Transmit() dan HAL_UART_Receive(). Fungsi HAL_UART_Transmit() digunakan untuk mengirim data melalui UART, dengan parameter berupa handler UART (misalnya huart1), pointer ke data yang akan dikirim (pData), ukuran data (Size), dan waktu timeout (Timeout). Sementara itu, HAL_UART_Receive() digunakan untuk menerima data. Sebelumnya, UART harus dikonfigurasi terlebih dahulu menggunakan fungsi HAL_UART_Init() untuk menentukan parameter komunikasi seperti baud rate, parity.

3. Bagaimana konfigurasi komunikasi SPI pada STM32 dan Raspberry Pipico secara hardware (rangkaian) maupun software (program)

Jawab :

1. Konfigurasi Hardware (Rangkaian)

Komunikasi SPI antara STM32 dan Raspberry Pi Pico melibatkan empat jalur utama, yaitu MOSI (Master Out Slave In), MISO (Master In Slave Out), SCK (Serial Clock), dan SS atau CS (Slave Select/Chip Select). Jalur-jalur ini berfungsi untuk mengatur arus data dari master ke slave, slave ke master, serta sinkronisasi menggunakan sinyal clock dari master. Dalam pengaturan umum, STM32 sering digunakan sebagai master dan Raspberry Pi Pico sebagai slave. Oleh karena itu, pin MOSI dari STM32 (misalnya PA7) dihubungkan ke pin SPI0 RX pada Pico (GP4), pin MISO STM32 (PA6) ke SPI0 TX Pico (GP3), pin SCK STM32 (PA5) ke SCK Pico (GP2), dan pin SS STM32 (PA4) ke pin GPIO biasa pada Pico (misalnya GP5). Dan hubungkan ground STM32 dan Pico untuk menyamakan referensi tegangan logika, yang idealnya di 3.3V.

2. Konfigurasi Software (Program)

Pada STM32, konfigurasi perangkat lunak menggunakan HAL Library dari STM32CubeMX. SPI diatur dalam mode master dengan pengaturan seperti arah data dua jalur, ukuran data 8 bit, polaritas clock, fase clock, prescaler, serta opsi lain yang menyesuaikan kebutuhan aplikasi. Fungsi penting seperti HAL_SPI_Transmit() digunakan untuk mengirim data ke slave, HAL_SPI_Receive() untuk menerima data dari slave, dan HAL_SPI_TransmitReceive() untuk komunikasi dua arah secara bersamaan. Semua fungsi tersebut bekerja setelah inisialisasi SPI berhasil dilakukan dengan HAL_SPI_Init(), yang juga menyimpan konfigurasi penting terkait komunikasi SPI.

Pada Raspberry Pi Pico, komunikasi SPI dapat dikonfigurasi menggunakan MicroPython. Namun perlu dicatat bahwa MicroPython hanya mendukung Pico sebagai SPI master, bukan sebagai slave. Jika Pico digunakan sebagai master, maka Pico akan mengatur clock dan mengirimkan data ke STM32 yang bertindak sebagai slave. SPI diaktifkan dengan menentukan parameter seperti baudrate, polaritas, fase, serta penentuan pin MOSI, MISO, dan SCK. Pengiriman data dilakukan menggunakan metode spi.write(), sedangkan pembacaan menggunakan spi.read() atau spi.readinto(). Chip select (CS) diatur secara manual melalui GPIO output.

4. Bagaimana konfigurasi komunikasi I2C pada STM32 dan Raspberry Pipico secara hardware (rangkaian) maupun software (program)

Jawab :


1. Konfigurasi Hardware (Rangkaian)

Komunikasi I2C antara STM32 dan Raspberry Pi Pico melibatkan dua jalur utama: SDA (Serial Data) dan SCL (Serial Clock). I2C adalah protokol komunikasi serial yang menggunakan pendekatan master-slave, di mana STM32 umumnya dikonfigurasi sebagai master, dan Raspberry Pi Pico sebagai slave. Jalur SDA dan SCL harus dihubungkan secara paralel antara kedua perangkat. Sebagai contoh, pin SDA STM32 (misalnya PB9) dihubungkan ke SDA Pico (misalnya GP0), dan pin SCL STM32 (misalnya PB8) dihubungkan ke SCL Pico (misalnya GP1). Selain itu, kedua perangkat harus berbagi ground (GND) yang sama sebagai referensi tegangan. Karena I2C membutuhkan pull-up resistor untuk bekerja dengan baik, maka resistor (biasanya 4.7kΩ hingga 10kΩ) perlu dipasang antara SDA/SCL ke VCC (3.3V), kecuali jika sudah terdapat pull-up internal atau dari modul breakout.

2. Konfigurasi Software (Program)

Pada STM32, konfigurasi I2C dilakukan menggunakan HAL Library melalui STM32. Fungsi penting dalam kode adalah HAL_I2C_Master_Transmit() untuk mengirim data ke slave, dan HAL_I2C_Master_Receive() untuk menerima data dari slave. Semua fungsi ini bekerja setelah inisialisasi berhasil dengan HAL_I2C_Init(), yang dilakukan pada saat program dimulai. Alamat slave yang digunakan dalam komunikasi harus sesuai dengan yang dikonfigurasi di sisi Raspberry Pi Pico.

Pada Raspberry Pi Pico, komunikasi I2C dikonfigurasi menggunakan MicroPython. Dalam mode master (MicroPython), komunikasi dilakukan dengan I2C(0) atau I2C(1) tergantung pada pin yang digunakan (misalnya GP0 sebagai SDA dan GP1 sebagai SCL untuk I2C0). Parameter yang dikonfigurasi termasuk freq, sda, dan scl. Fungsi i2c.readfrom(addr, nbytes) digunakan untuk membaca data, dan i2c.writeto(addr, buf) untuk mengirim data ke alamat slave tertentu. Alamat ini harus cocok dengan yang dikonfigurasi pada STM32.


Komentar

Postingan populer dari blog ini

SISTEM DIGITAL

ELEKTRONIKA

MIKROPROSESOR DAN MIKROKONTROLER