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
Program nya :- Tx (transmite) : pin PA9- Rx (receiver) : pin PA 10Rangkaian dasar UART STM32 ke USB-TTL (ex:CH340/FTO1)STM32 PA9 (Tx) : Rx USB-TTLSTM32 PA10 (Rx) : Tx USB-TTLGND STM32 : GND USB-TTL
#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-TTLProgram dengan kode Micropython :from machine import UART, Pinimport timeuart0 = 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 nRF4L01STM32 PA6 (MISO) : MISO nRF4L01STM32 PA7 (MOSI) : MOSI nRF24L01STM32 PA4 (NSS) : CSN nRF24L01STM32 3,3V : VCC nRF24L01STM32 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 LOWHAL_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 EEPROMPico GPIO3 (MOSI) : SCK EEPROMPico GPIO4 (MISO) : SCK EEPROMPico GPIO5 (CS) : SCK EEPROMPico 3,3 V : vccPico GND : GND
4. Bagaimana konfigurasi komunikasi I2C pada STM32 dan Raspberry Pi Pico secara hardware (rangkaian) maupun software (program)Program dengan Micro python :from machine import SPI, Pinimport 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 chipcs.value(1)time.sleep(1)
Jawab :
Konfigurasi : - 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 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
- 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
- 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
- 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