TUGAS PENDAHULUAN




1. Soal dan Tugas Pendahuluan[Kembali]

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

Jawab :

  • Komunikasi UART
          UART (Universal Asynchronous Receiver - Transmitter) adalah bagian perangkat keras komputer yang menerjemahkan antara bit - bit paralel data dan bit - bit serial. UART biasanya berupa sirkuit terintegrasi yang digunakan untuk komunikasi serial pada komputer atau port serial perangkat periperal.
Ciri - ciri UART :
- tidak Memerlukan sinyal clock (asynchronous)
- umumnya hanya menggunakan dua kabel (Tx dan Rx)
- menggunakan start bit, parity bit, dan stop bit untuk pengiriman data

  • SPI (Serial Peripheral Interface)
          SPI adalah salah satu mode komunikasi serial asynchronous berkecapatan tinggi yang di miliki oleh STM32F407V6T6 dan Raspberry pi pico. Komunikasi spi membutuhkan 3 jalur utama yaitu MOSI, MISO, dan SCK serta jalur tambahan SS/CS. melalui komunikasi ini, data dapat saling dikirimkan baik antara mikrokontroller maupun antara mikrokontroller dengan perangkat periferal lainnya.
Ciri-ciri SPI :
- menggunakan 4 jalur utama yaitu MOSI, MISO,SCLK, dan SS
- komunikasi terjadi secara sinkron dengan sinyal clock yang dibagikan oleh master
- cocok untuk komunikasi berkecepatan tinggi antar perangkat EEPROM, sensor, ADC, DAC.
  • I2C (Inter Integrated Circuit)
          I2C adalah standar komunikasi serial dua arah menggunakan dua saluran yang di desain untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL(Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya.
Ciri-ciri I2C :
- mendukung komunikasi dua arah baik antara satu master ke banyak slave maupun antara beberapa master ke slave

2. Bagaimana Konfigurasi komunikasi UART pada STM32 dan Raspberry Pi Pico secara hardware (rangkaian) maupun Software (Program)

Jawab :
  • STM 32
            - Tx (transmite) : pin PA9
            - Rx (receiver)   : pin PA 10

Rangkaian dasar UART STM32 ke USB-TTL (ex:CH340/FTO1)
    STM32 PA9 (Tx) : Rx USB-TTL
    STM32 PA10 (Rx) : Tx USB-TTL 
    GND STM32 : GND USB-TTL

Contoh Rangkaiannya :


        Program nya :

#include "main.h"
#include "stm32f1xx_hal.h"
#include <string.h>

UART_HandleTypeDef huart1;

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);

int main(void)
{
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_USART1_UART_Init();

    char msg[] = "Hello from STM32 via UART!\r\n";

    while (1)
    {
        HAL_UART_Transmit(&huart1, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY);
        HAL_Delay(1000);
    }
}

void MX_USART1_UART_Init(void)
{
    huart1.Instance = USART1;
    huart1.Init.BaudRate = 9600;
    huart1.Init.WordLength = UART_WORDLENGTH_8B;
    huart1.Init.StopBits = UART_STOPBITS_1;
    huart1.Init.Parity = UART_PARITY_NONE;
    huart1.Init.Mode = UART_MODE_TX_RX;
    huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
    huart1.Init.OverSampling = UART_OVERSAMPLING_16;
    HAL_UART_Init(&huart1);
}

  • Raspberry Pi Pico
            - Tx (Transmit) : GPIO 0 (UART0 Tx)
            - Rx (receiver) : GPIO 1 (UART0 Rx)

            Rangkaian dasar UART Pico ke USB-TTL :
            - Pico GPIO 0 (Tx) : Rx USB-TTL
            - Pico GPIO 1 (Rx) : Tx USB-TTL
            - Pico GND : GND USB-TTL
Program dengan kode Micropython :

from machine import UART, Pin
import time

uart0 = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))

while True:
    uart0.write('Hello from Raspberry Pi Pico!\r\n')
    time.sleep(1)

    3. Bagaimana konfigurasi komunikasi SPI pada STM32 dan Raspberry Pi Pico secara hardware (rangkaian) maupun software (program)
Jawab :
  • STM 32
        - MOSI : Pin PA7
        - MISO : Pin PA6
        - SCK : Pin PA5
        - NSS : Pin PA4

contoh koneksi ke sensor SPI (ex : nRF24L01)
STM32 PA5 (SCK) : SCK nRF4L01
STM32 PA6 (MISO) : MISO nRF4L01
STM32 PA7 (MOSI) : MOSI nRF24L01
STM32 PA4 (NSS) : CSN nRF24L01
STM32 3,3V : VCC nRF24L01
STM32 GND : GND nRF24L01

Bentuk rangkaiannya :



Program :
Inisialisasi SPI 1 :
SPI_HandleTypeDef hspi1;

void MX_SPI1_Init(void)
{
    hspi1.Instance = SPI1;
    hspi1.Init.Mode = SPI_MODE_MASTER;
    hspi1.Init.Direction = SPI_DIRECTION_2LINES;
    hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
    hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
    hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
    hspi1.Init.NSS = SPI_NSS_SOFT;
    hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
    hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
    hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
    hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
    hspi1.Init.CRCPolynomial = 10;
    HAL_SPI_Init(&hspi1);
}

contoh mengirim data via SPI 1 :

uint8_t data[] = {0xAA, 0x55};

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET); // CS LOW
HAL_SPI_Transmit(&hspi1, data, sizeof(data), HAL_MAX_DELAY);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);   // CS HIGH

  • Raspberry Pi Pico
        - SCK : Pin GPIO 2
        - MOSI : Pin GPIO 3
        - MISO : Pin GPIO 4
        - CS (NSS) : Pin GPIO 5

Rangkaian koneksi antarmuka peroferal serial :




    Koneksi ke sensor SPI ( ex : EEPROM SPI)
    Pico GPIO2 (SCK) : SCK EEPROM
    Pico GPIO3 (MOSI) : SCK EEPROM
    Pico GPIO4 (MISO) : SCK EEPROM
    Pico GPIO5 (CS) : SCK EEPROM
    Pico 3,3 V : vcc
    Pico GND : GND

Program dengan Micro python :
from machine import SPI, Pin
import time

# SPI0 dengan default pin (SCK=2, MOSI=3, MISO=4)
spi = SPI(0, baudrate=1000000, polarity=0, phase=0, bits=8, firstbit=SPI.MSB,
          sck=Pin(2), mosi=Pin(3), miso=Pin(4))
cs = Pin(5, Pin.OUT)
cs.value(1)  # CS HIGH (nonaktif)

while True:
    cs.value(0)  # CS LOW (aktif)
    spi.write(bytes([0x9F]))  # Contoh: baca JEDEC ID dari flash chip
    cs.value(1)
    time.sleep(1)

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

Jawab :
Konfigurasi :
  • STM 32
          - SDA : Pin PB9
          - SCL : Pin PB8
          - GND : GND
  • Raspberry Pi Pico
          - SDA : Pin GPIO 0
          - SCL : Pin GPIO 1

Software :
  • STM 32
        - pilih pin 12c ( Misi I2C dengan SDA pada Pin PB9, SCL pada pin PB8) Pada STM 32 CUBE                  IDE
        - atur mode ke I2C Master
        - stel parameter seperti clock speed, duty cycle, dan address nya mode sesuai kebutuhan 
        - setelah code dihasilkan oleh stm32 mx buka proyek di stm32 cube ide
        - gunakan fungsi HAL untuk mengirim dan menerima data
  • Raspberry Pi Pico
        - gunakan pustaka "pico_I2C_Slave".
        - default I2C 0 : SDA : GPIO 0, SCL : GPIO 1
        - pasang pull up resistor (417 ohm) pada SDA dan SCL C.SDK
        - gunakan fungsi dari hardware / I2C. h seperti I2C_write_bloking

Tidak ada komentar:

Posting Komentar

  Bahan Presentasi Untuk Matakuliah   Elektronika 2023 Oleh : Ardizal 2210952007 Dosen Pengampu Dr.Ir. Darwison Referensi : 1.   Darwison,20...