Перейти к основному содержимому

Serial (UART)

к сведению
  • Контроллер UART0 подключен к контактам TX: PA4 и RX: PA5, и доступен на всех вариантах распиновки GPIO-разъема (по умолчанию используется для вывода отладочной информации).

  • Контроллер UART2 подключен к контактам TX: PA0 и RX: PA1, и доступен на 3 и 6 вариантах распиновки GPIO-разъема.

  • Контроллер S_UART подключен к контактам TX: PL2 и RX: PL3, и доступен на 3 варианте распиновки GPIO-разъема.

serialSetup()

Инициализирует функцию передачи данных с использованием интерфейса UART.

Синтаксис

int serialSetup(const int serialHub, const int baud)

Параметры

serialHub - номер UART контроллера, доступные значения:

  • UART0_BUS - контроллер UART0.
  • UART2_BUS - контроллер UART2.
  • S_UART_BUS - контроллер S_UART.

baud - скорость передачи данных, доступные значения:

  • BAUD_50 - 50 бод (бит/сек).
  • BAUD_75 - 75 бод (бит/сек).
  • BAUD_110 - 110 бод (бит/сек).
  • BAUD_134 - 134 бод (бит/сек).
  • BAUD_150 - 150 бод (бит/сек).
  • BAUD_200 - 200 бод (бит/сек).
  • BAUD_300 - 300 бод (бит/сек).
  • BAUD_600 - 600 бод (бит/сек).
  • BAUD_1200 - 1200 бод (бит/сек).
  • BAUD_1800 - 1800 бод (бит/сек).
  • BAUD_2400 - 2400 бод (бит/сек).
  • BAUD_4800 - 4800 бод (бит/сек).
  • BAUD_9600 - 9600 бод (бит/сек).
  • BAUD_19200 - 19200 бод (бит/сек).
  • BAUD_38400 - 38400 бод (бит/сек).
  • BAUD_57600 - 57600 бод (бит/сек).
  • BAUD_115200 - 115200 бод (бит/сек).
  • BAUD_230400 - 230400 бод (бит/сек).
  • BAUD_460800 - 460800 бод (бит/сек).
  • BAUD_500000 - 500000 бод (бит/сек).
  • BAUD_576000 - 576000 бод (бит/сек).
  • BAUD_921600 - 921600 бод (бит/сек).
  • BAUD_1000000 - 1000000 бод (бит/сек).
  • BAUD_1152000 - 1152000 бод (бит/сек).
  • BAUD_1500000 - 1500000 бод (бит/сек).
  • BAUD_2000000 - 2000000 бод (бит/сек).
  • BAUD_2500000 - 2500000 бод (бит/сек).
  • BAUD_3000000 - 3000000 бод (бит/сек).
  • BAUD_3500000 - 3500000 бод (бит/сек).
  • BAUD_4000000 - 4000000 бод (бит/сек).

Возврат

Файловый дескриптор инициализированного последовательного порта, или отрицательное значение в случае ошибки.

serialRelease()

Высвобождает ресурсы задействованные функцией передачи данных с использованием UART интерфейса.

Синтаксис

void serialRelease(const int fd)

Параметры

fd - файловый дескриптор последовательного порта UART.

Возврат

Ничего.

serialFlush()

Очищает буферы приема и передачи данных последовательного порта UART.

Синтаксис

void serialFlush(const int fd)

Параметры

fd - файловый дескриптор последовательного порта UART.

Возврат

Ничего.

serialPutchar()

Записывает символ в буфер передачи данных последовательного порта UART.

Синтаксис

void serialPutchar(const int fd, const unsigned char ch)

Параметры

fd - файловый дескриптор последовательного порта UART.

ch - значение передаваемого символа.

Возврат

Ничего.

serialPuts()

Записывает строку символов в буфер передачи данных последовательного порта UART.

Синтаксис

void serialPuts(const int fd, const char *str)

Параметры

fd - файловый дескриптор последовательного порта UART.

str - значение передаваемого символа (байта).

Возврат

Ничего.

serialPrintf()

Записывает форматированную строку символов в буфер передачи данных последовательного порта UART.

Синтаксис

void serialPrintf(const int fd, const char *message, ...)

Параметры

fd - файловый дескриптор последовательного порта UART.

message - указатель на строку форматирования.

... - список параметров для строки форматирования.

Возврат

Ничего.

serialDataAvail()

Получает число байтов в приемном буфере последовательного порта UART.

Синтаксис

int serialDataAvail(const int fd)

Параметры

fd - файловый дескриптор последовательного порта UART.

Возврат

Количество байт данных, находящихся в приемном буфере последовательного порта UART.

serialGetchar()

Считывает символ из приемного буфера последовательного порта UART.

Синтаксис

int serialGetchar(const int fd)

Параметры

fd - файловый дескриптор последовательного порта UART.

Возврат

Полученный символ из приемного буфера последовательного порта UART.

Пример использования функций Serial (UART)

Код управляет обменом данными между портами UART0 и S_UART, подключенными в кросс-режиме RX->TX и TX->RX.

#include <stdio.h>
#include <stdlib.h>
#include "wiringRP.h"
#include "serial.h"

// Глобальные переменные и константы
int uart0_fd, uart2_fd, s_uart_fd;

void setup() {
// Инициализация библиотек wiringRP
if (setupWiringRP(WRP_MODE_SUNXI) < 0)
exit(EXIT_FAILURE);

// Инициализация пользовательских объектов
uart0_fd = serialSetup(UART0_BUS, BAUD_9600);
uart2_fd = serialSetup(UART2_BUS, BAUD_9600);
s_uart_fd = serialSetup(S_UART_BUS, BAUD_9600);
}

void loop() {
// Основной цикл программы
serialPrintf(uart0_fd, "Hello world!");
delay(500);
while (serialDataAvail(s_uart_fd) > 0) {
putchar(serialGetchar(s_uart_fd));
fflush(stdout);
}
putchar('\n');
delay(500);
}


ONDESTROY() {
// Освобождение занятых ресурсов, выключение напряжения на пинах
serialRelease(uart0_fd);
serialRelease(uart2_fd);
serialRelease(s_uart_fd);
// Завершение работы библиотек
releaseWiringRP();

exit(0); // выход из программы
}

MAIN_WIRINGRP();