SOAl TUGAS PENDAHULUAN
1. Jelaskan apa itu protokol komunikasi UART, SPI, dan I2C
1. UART (Universal Asynchronous Receiver Transmitter)
Definisi:
UART adalah protokol komunikasi serial asinkron yang digunakan untuk pertukaran data antar dua perangkat elektronik. Asinkron berarti tidak menggunakan sinyal clock terpisah; kedua perangkat harus menyepakati kecepatan (baud rate) sebelumnya.
Cara kerja:
-
Data dikirim dalam bentuk bit serial (satu per satu).
-
Umumnya menggunakan 2 pin: TX (transmit) dan RX (receive).
-
Protokol ini mengatur sendiri pengiriman dan penerimaan data melalui bit awal (start bit), data bit, dan bit akhir (stop bit).
2. I2C (Inter-Integrated Circuit)
Definisi:
I2C adalah protokol komunikasi serial sinkron yang memungkinkan banyak perangkat (multi-master/multi-slave) berkomunikasi melalui hanya dua kabel. Diciptakan oleh Philips untuk komunikasi antar chip pada papan sirkuit.
Cara kerja:
-
Menggunakan dua jalur: SDA (Serial Data Line) dan SCL (Serial Clock Line).
-
Master mengontrol clock (SCL) dan mengatur komunikasi ke perangkat slave berdasarkan alamat unik.
-
Bisa menghubungkan banyak perangkat hanya dengan dua kabel.
3. SPI (Serial Peripheral Interface)
Cara kerja:
-
Menggunakan empat sinyal utama: MOSI (Master Out Slave In), MISO (Master In Slave Out), SCK (Serial Clock), dan SS/CS (Slave Select/Chip Select).
-
Master mengontrol clock dan memilih slave yang ingin diajak komunikasi.
-
Data ditransmisikan secara full-duplex (kirim dan terima bersamaan).
2. Bagaimana konfigurasi komunikasi UART pada STM32 dan Raspberry Pipico secara hardware (rangkaian) maupun software (program)
jawab :
STM32 – Konfigurasi UART
a. Hardware (Rangkaian):
-
STM32 memiliki beberapa pin USART/UART (misal: PA9 (TX) dan PA10 (RX) untuk USART1).
-
Hubungkan:
-
PA9 (TX STM32) → RX perangkat lain
-
PA10 (RX STM32) ← TX perangkat lain
-
-
Tambahkan resistor pull-up jika diperlukan (tergantung board).
-
Level logika umumnya 3.3V.
Contoh koneksi STM32 ke USB-TTL converter:
-
STM32 TX (PA9) → RX USB-TTL
-
STM32 RX (PA10) ← TX USB-TTL
-
GND STM32 ↔ GND USB-TTL
b. Software (Program):
Menggunakan STM32CubeIDE:
// Inisialisasi UART (USART1 contoh)
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);
}
// Contoh mengirim data
HAL_UART_Transmit(&huart1, (uint8_t *)"Halo STM32\r\n", strlen("Halo STM32\r\n"), HAL_MAX_DELAY);
Raspberry Pi Pico – Konfigurasi UART
a. Hardware (Rangkaian):
-
Pico punya 2 UART: UART0 dan UART1.
-
Default pin UART0:
-
GPIO0 (TX)
-
GPIO1 (RX)
-
-
Hubungkan Pico TX ke RX perangkat lain, dan sebaliknya. Gunakan level logika 3.3V juga.
Contoh koneksi ke USB-TTL:
-
GPIO0 (TX) → RX USB-TTL
-
GPIO1 (RX) ← TX USB-TTL
-
GND Pico ↔ GND USB-TTL
b. Software (Program):
Dengan C/C++ SDK:
3. Bagaimana konfigurasi komunikasi SPI pada STM32 dan Raspberry Pipico secara hardware (rangkaian) maupun software (program)
jawab :
STM32 – Konfigurasi SPI
a. Hardware (Rangkaian):
SPI pada STM32 (misal: SPI1) umumnya memakai pin:
Fungsi | Pin STM32 (SPI1, contoh) |
---|---|
SCK | PA5 |
MISO | PA6 |
MOSI | PA7 |
NSS/SS | PA4 (opsional, bisa software) |
Koneksi ke perangkat SPI lainnya (misal sensor/memori):
-
SCK (PA5) → SCK slave
-
MOSI (PA7) → MOSI slave
-
MISO (PA6) ← MISO slave
-
SS (PA4) → CS slave
-
GND → GND slave
-
Semua level logika umumnya 3.3V
b. Software (Program) – STM32CubeIDE (HAL)
Inisialisasi SPI:
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;
HAL_SPI_Init(&hspi1);
}
Raspberry Pi Pico – Konfigurasi SPI
a. Hardware (Rangkaian):
Default pin untuk SPI0:
Fungsi | Pin GPIO |
---|---|
SCK | GPIO2 |
MOSI | GPIO3 |
MISO | GPIO4 |
CS/SS | GPIO5 (bebas ditentukan manual) |
Koneksi ke perangkat SPI slave:
-
SCK (GPIO2) → SCK slave
-
MOSI (GPIO3) → MOSI slave
-
MISO (GPIO4) ← MISO slave
-
CS (GPIO5) → CS slave
-
GND → GND slave
b. Software (Program)
Dengan C SDK:
4. Bagaimana konfigurasi komunikasi I2C pada STM32 dan Raspberry Pipico secara hardware (rangkaian) maupun software (program)
jawab :
STM32 – Konfigurasi I2C
a. Hardware (Rangkaian):
-
STM32 (misalnya I2C1) memiliki pin default seperti:
-
SCL: PB6
-
SDA: PB7
-
-
Komponen I2C dihubungkan secara paralel pada bus SCL dan SDA.
-
Butuh resistor pull-up (biasanya 4.7kΩ) ke 3.3V di kedua jalur:
-
SCL → resistor → 3.3V
-
SDA → resistor → 3.3V
-
-
Semua perangkat harus level logika sama (umumnya 3.3V pada STM32)
Contoh koneksi ke OLED I2C:
-
STM32 PB6 (SCL) → SCL OLED
-
STM32 PB7 (SDA) → SDA OLED
-
GND STM32 ↔ GND OLED
-
VCC OLED ↔ 3.3V STM32
b. Software (Program) – STM32CubeIDE (HAL)
Inisialisasi I2C:
void MX_I2C1_Init(void)
{
hi2c1.Instance = I2C1;
hi2c1.Init.ClockSpeed = 100000;
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
hi2c1.Init.OwnAddress1 = 0;
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
hi2c1.Init.OwnAddress2 = 0;
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
HAL_I2C_Init(&hi2c1);
}
Raspberry Pi Pico – Konfigurasi I2C
a. Hardware (Rangkaian):
Default I2C0 menggunakan pin:
Fungsi | GPIO |
---|---|
SDA | GPIO0 |
SCL | GPIO1 |
-
Sama seperti STM32, gunakan resistor pull-up 4.7kΩ ke 3.3V.
-
Bisa menggunakan banyak device I2C asalkan alamatnya berbeda.
Contoh koneksi ke sensor I2C atau OLED:
-
GPIO0 (SDA) → SDA device
-
GPIO1 (SCL) → SCL device
-
GND ↔ GND
-
VCC device ↔ 3.3V
b. Software (Program)
0 komentar:
Posting Komentar