К СВЕДЕНИЮ
- 
Контроллер 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();