Обновлены шапки и по мелочи
This commit is contained in:
@@ -24,49 +24,76 @@
|
||||
##### Как использовать этот драйвер #####
|
||||
==============================================================================
|
||||
|
||||
1. Настройка периферии (periph_config.h):
|
||||
(+) Определить структуры UART_ExtInit_TypeDef для нужных UART:
|
||||
uart0_config, uart1_config
|
||||
(+) Настроить скорость, стоп-биты, четность, длину данных
|
||||
(+) Настроить FIFO и направление (Tx, Rx или оба)
|
||||
(+) Определить callback-функции (можно NULL)
|
||||
(+) Определить пины TX/RX для UART0/UART1
|
||||
(+) Включить/отключить очередь сообщений для отправки: USE_TX_QUEUE в uart.h
|
||||
1. Настройка в periph_config.h:
|
||||
(+) Определите uart0_config, uart1_config для нужных UART
|
||||
(+) Используйте макросы для направления:
|
||||
• UART_Direction_None - прием и передача отключены
|
||||
• UART_Direction_RxTx - полный дуплекс
|
||||
• UART_Direction_Tx - только передача
|
||||
• UART_Direction_Rx - только прием
|
||||
|
||||
2. Инициализация UART:
|
||||
(+) uart_init_first() — первичная настройка GPIO, тактирования и NVIC
|
||||
(+) uart_init(&huart, &config) — инициализация конкретного UART с конфигурацией
|
||||
2. Инициализация:
|
||||
(+) uart_init_first() - настройка GPIO, тактирования и прерываний
|
||||
(+) uart_init(&huart, &config) - инициализация конкретного UART
|
||||
|
||||
3. Callback-функции:
|
||||
(+) UART_Set_Callback(&huart, UART_Callback_Rx, Callback) — вызов при приёме данных
|
||||
(+) UART_Set_Callback(&huart, UART_Callback_Tx, Callback) — вызов при завершении передачи
|
||||
(+) UART_Set_Callback(&huart, UART_Callback_Idle, Callback) — вызов при событии Idle
|
||||
(+) UART_Set_Callback(&huart, UART_Callback_Error, Callback) — вызов при ошибках
|
||||
(+) UART_Set_Callback(&huart, UART_Callback_Rx, func) - при завершении приема
|
||||
(+) UART_Set_Callback(&huart, UART_Callback_Tx, func) - при завершении передачи
|
||||
(+) UART_Set_Callback(&huart, UART_Callback_Idle, func) - при обнаружении IDLE
|
||||
(+) UART_Set_Callback(&huart, UART_Callback_Error, func) - при ошибках
|
||||
|
||||
4. Запуск UART и FIFO:
|
||||
(+) UART_Start(&huart, TxFifoLevel, RxFifoLevel) — включает UART и настраивает FIFO
|
||||
4. Запуск UART:
|
||||
(+) UART_Start(&huart, TxFifoLevel, RxFifoLevel) - включение UART и настройка FIFO
|
||||
|
||||
5. Передача и приём данных:
|
||||
- Режим Polling (blocking):
|
||||
(+) UART_Transmit(&huart, buf, size, timeout) — передача данных с ожиданием
|
||||
(+) UART_Receive(&huart, buf, size, timeout) — приём данных с ожиданием
|
||||
- Режим Interrupt (non-blocking):
|
||||
(+) UART_Transmit_IT(&huart, buf, size) — передача данных через прерывания
|
||||
(+) UART_Receive_IT(&huart, buf, size) — приём данных через прерывания
|
||||
- Режим Polling:
|
||||
(+) UART_Transmit(&huart, buf, size, timeout) - блокирующая передача
|
||||
(+) UART_Receive(&huart, buf, size, timeout) - блокирующий прием
|
||||
- Режим Interrupt:
|
||||
(+) UART_Transmit_IT(&huart, buf, size) - неблокирующая передача
|
||||
(+) UART_Receive_IT(&huart, buf, size) - неблокирующий прием
|
||||
|
||||
6. Обработка прерываний UART:
|
||||
(+) uart_irq_handler(&huart) — общий обработчик ISR для RX/TX FIFO, ошибок и Idle
|
||||
- В обработчиках автоматически вызываются соответствующие callback-функции
|
||||
и сбрасываются флаги
|
||||
- Поддерживается очередь передачи для предотвращения потери данных
|
||||
6. Обработка прерываний:
|
||||
(+) Прерывания обрабатывают TX FIFO, RX FIFO, ошибки и состояние IDLE
|
||||
|
||||
7. GPIO для UART:
|
||||
(+) uart0_gpio_init()/uart0_gpio_deinit() — инициализация и деинициализация UART0
|
||||
(+) uart1_gpio_init()/uart1_gpio_deinit() — инициализация и деинициализация UART1
|
||||
(+) Пины настраиваются автоматически при вызове uart_init_first()
|
||||
(+) При необходимости можно вызвать uart0_gpio_deinit() для восстановления
|
||||
|
||||
8. Режимы работы:
|
||||
(+) Polling (blocking) — функции блокируются до завершения передачи/приёма
|
||||
(+) Interrupt (non-blocking) — передача/приём через прерывания, управление через callback
|
||||
==============================================================================
|
||||
##### Особенности работы #####
|
||||
==============================================================================
|
||||
|
||||
- Очередь передачи (USE_TX_QUEUE):
|
||||
- Циклический буфер на 32 сообщения (TX_QUEUE_SIZE)
|
||||
- Предотвращает потерю данных при частой отправке
|
||||
- Включается автоматически при USE_TX_QUEUE=1 в uart.h
|
||||
- Сообщения обрабатываются последовательно по завершении предыдущей передачи
|
||||
|
||||
- FIFO и прерывания:
|
||||
- Аппаратный FIFO 16 байт для приема и передачи
|
||||
- Уровни прерываний настраиваются через TxFifoLevel и RxFifoLevel
|
||||
- Прерывание TX FIFO генерируется когда FIFO не полон
|
||||
- Прерывание RX FIFO генерируется когда FIFO не пуст
|
||||
|
||||
- Состояние IDLE:
|
||||
- Обнаруживается по таймауту приема (32 бит-времени)
|
||||
- Генерирует прерывание RecieveTimeout
|
||||
- Полезно для определения конца пакета переменной длины
|
||||
|
||||
- Обработка ошибок:
|
||||
- Обрабатываются все типы ошибок UART: фрейм, паритет, переполнение, break
|
||||
- При ошибке вызывается ErrCallback и сбрасываются флаги ошибок
|
||||
- Ошибки не останавливают работу UART
|
||||
|
||||
- GPIO автоматическая настройка:
|
||||
- Пины TX/RX настраиваются в AltFunc режим при инициализации
|
||||
- Поддерживаются стандартные пины (PB10/PB11 для UART0, PB8/PB9 для UART1)
|
||||
|
||||
- Режимы работы:
|
||||
- Polling: простой, но блокирующий, подходит для инициализации и отладки
|
||||
- Interrupt: неблокирующий, требует прерываний и поддерживает callback-функций
|
||||
- Queue: расширенный interrupt режим с буферизацией сообщений
|
||||
|
||||
@endverbatim
|
||||
******************************************************************************
|
||||
|
||||
Reference in New Issue
Block a user