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