TPM3






1. TUGAS PENDAHULUAN[Kembali]

1. Penjelasan Protokol Komunikasi UART, SPI, dan I2C

a. UART (Universal Asynchronous Receiver Transmitter)

  • Komunikasi serial asinkron, hanya butuh dua jalur: TX (transmit) dan RX (receive).

  • Tidak membutuhkan clock eksternal; sinkronisasi data dilakukan lewat start dan stop bit.

  • Cocok untuk komunikasi jarak pendek antar dua perangkat.

b. SPI (Serial Peripheral Interface)

  • Komunikasi serial sinkron full-duplex.

  • Membutuhkan 4 jalur utama:

    • MOSI (Master Out Slave In)

    • MISO (Master In Slave Out)

    • SCK (Serial Clock)

    • SS/CS (Slave Select/Chip Select)

  • Cocok untuk komunikasi cepat dengan banyak slave (menggunakan banyak pin SS).

c. I2C (Inter-Integrated Circuit)

  • Komunikasi serial sinkron half-duplex.

  • Hanya butuh dua jalur: SDA (data) dan SCL (clock).

  • Menggunakan alamat untuk memilih device di bus.

  • Cocok untuk komunikasi dengan banyak perangkat menggunakan hanya dua kabel.

2. Konfigurasi UART pada STM32 dan Raspberry Pi Pico

a. Hardware (Rangkaian)

STM32F103C8 (misalnya Blue Pill):

  • TX (PA9), RX (PA10)

  • Hubungkan TX STM32 ke RX Pico dan sebaliknya. Gunakan level shifter jika Pico 3.3V dan STM32 5V.

Raspberry Pi Pico:

  • UART0: TX = GP0, RX = GP1 (default)

  • UART1: TX = GP4, RX = GP5 (opsional)

b. Software (Program)

STM32 (dengan STM32CubeMX + HAL):

  1. Enable USART1.

  2. Konfigurasi baudrate, parity, stop bits.

  3. Gunakan HAL_UART_Transmit() dan HAL_UART_Receive().

char msg[] = "Hello UART"; HAL_UART_Transmit(&huart1, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY);

Raspberry Pi Pico (MicroPython):

from machine import UART, Pin uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1)) uart.write('Hello STM32')

3. Konfigurasi SPI pada STM32 dan Raspberry Pi Pico

a. Hardware (Rangkaian)

STM32:

  • MOSI = PA7, MISO = PA6, SCK = PA5, CS = PA4 (SPI1 default)

Pico:

  • SPI0: SCK = GP2, MOSI = GP3, MISO = GP4, CS = GP5

Hubungkan sesuai peran Master/Slave.

b. Software

STM32 (HAL):

uint8_t data[] = {0xAA}; HAL_SPI_Transmit(&hspi1, data, 1, HAL_MAX_DELAY);

Raspberry Pi Pico (MicroPython):

from machine import SPI, Pin spi = SPI(0, baudrate=1000000, sck=Pin(2), mosi=Pin(3), miso=Pin(4)) cs = Pin(5, Pin.OUT) cs.value(0) spi.write(b'\xAA') cs.value(1)

4. Konfigurasi I2C pada STM32 dan Raspberry Pi Pico

a. Hardware

STM32:

  • SDA = PB7, SCL = PB6 (I2C1 default)

Pico:

  • I2C0: SDA = GP0, SCL = GP1

  • Gunakan pull-up resistor 4.7kΩ – 10kΩ pada SDA dan SCL.

b. Software

STM32 (HAL):

uint8_t data = 0x55; HAL_I2C_Master_Transmit(&hi2c1, (0x3C << 1), &data, 1, 1000);

Raspberry Pi Pico (MicroPython):

from machine import I2C, Pin i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=100000) i2c.writeto(0x3C, b'\x55')

Komentar

Postingan populer dari blog ini

Modul 1 Prak SIsDIg

Tugas Besarr

Modul 2 PrakSisdig