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();


62 просмотров0 комментариев

Комментарии (0)

Для участия в обсуждении Вы должны быть авторизованным пользователем
Разделы

Навигация

ВойтиРегистрация