TUGAS PENDAHULUAN






1. Soal dan jawaban 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. 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.
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. 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 :
a. 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




        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);
}

 

 b. 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 :
a. 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


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

 

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


    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 ke Pin PB9
          - SCL ke Pin PB8
          - GND ke GND
    • Raspberry Pi Pico
          - SDA ke Pin GPIO 0
          - SCL ke 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     MATA KULIAH ELEKTRONIKA 2022 Oleh Mutia Azzahra 2210953018 DOSEN PENGAMPU DR. DARWISON, M.T. Referensi  1. Darwiso...