Загрузка данных


Задание 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);
}