Задание 1: Работа с UART
Настроить UART на скорость 9600 бод.
Реализовать передачу строки "Hello, UART!" в последовательный порт.
Организовать эхо-ответ (возврат принятых символов).
Пример кода для STM32 (HAL):
#include "stm32f1xx_hal.h"
UART_HandleTypeDef huart1;
int main() {
HAL_Init();
__HAL_RCC_USART1_CLK_ENABLE();
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;
HAL_UART_Init(&huart1);
char msg[] = "Hello, UART!\r\n";
HAL_UART_Transmit(&huart1, (uint8_t*)msg, strlen(msg), 100);
while (1) {
uint8_t byte;
if (HAL_UART_Receive(&huart1, &byte, 1, 100) == HAL_OK) {
HAL_UART_Transmit(&huart1, &byte, 1, 100); // Эхо
}
}
}
3. Задание 2: Работа с SPI (обмен с EEPROM)
Настроить SPI в режиме Master.
Записать и прочитать данные из микросхемы 25LCxxx.
Пример кода для AVR (Arduino):
#include <SPI.h>
void setup() {
SPI.begin();
digitalWrite(SS, HIGH); // Деактивация Slave
}
void writeEEPROM(uint16_t addr, uint8_t data) {
digitalWrite(SS, LOW);
SPI.transfer(0x02); // Команда записи
SPI.transfer(addr >> 8);
SPI.transfer(addr & 0xFF);
SPI.transfer(data);
digitalWrite(SS, HIGH);
delay(10); // Ожидание завершения записи
}
uint8_t readEEPROM(uint16_t addr) {
digitalWrite(SS, LOW);
SPI.transfer(0x03); // Команда чтения
SPI.transfer(addr >> 8);
SPI.transfer(addr & 0xFF);
uint8_t data = SPI.transfer(0x00);
digitalWrite(SS, HIGH);
return data;
}
4. Задание 3: Работа с I²C (подключение датчика температуры)
Настроить I²C на работу с датчиком (например, BMP280).
Считать температуру и вывести значение в UART.
Пример кода для ESP32 (Arduino):
#include <Wire.h>
#include <BMP280.h>
BMP280 bmp;
void setup() {
Serial.begin(9600);
Wire.begin();
bmp.begin(0x76);
}
void loop() {
float temp = bmp.readTemperature();
Serial.print("Temperature: ");
Serial.println(temp);
delay(1000);
}