FIFO последовательного порта

FIFO (first-in-first-out, «первым пришёл - первым вышел») - тип аппаратной памяти, которая хранит данные в виде очереди. FIFO характеризуется «глубиной». Например, 16-байтный FIFO может поставить в очередь до 16 байт данных, то есть его глубина равна 16.

У последовательных портов обычно два независимых FIFO: один для исходящих данных (TX), другой для входящих (RX). TX FIFO позволяет системе поместить в очередь несколько байт, после чего аппаратная часть последовательного порта сама позаботится об их упорядоченной передаче. RX FIFO временно хранит входящие данные, пока система не успеет их обработать.

Чтобы узнать, есть ли у последовательных портов вашего устройства FIFO и какова их глубина, обратитесь к документации по платформе устройства (например, для EM1000 она здесь).

Когда последовательный порт находится в режиме UART/полный дуплекс/управление потоком (ser.mode = 0 - PL_SER_MODE_UART, ser.interface = 0 - PL_SER_SI_FULLDUPLEX и ser.flowcontrol = 1 - ENABLED), устройство следит за входом CTS, чтобы узнать, готово ли подключённое последовательное устройство принимать новые данные. Если состояние CTS меняется на «передавать нельзя», устройство немедленно прекращает отправку данных. Однако данные, уже попавшие в FIFO, всё равно будут отправлены. Поэтому после того, как состояние CTS стало «передавать нельзя», устройство может отправить ещё некоторое число символов, уже попавших в передающий FIFO.

Исходный материал Tibbo обновлён 14 июля 2022Оригинал на docs.tibbo.com · Сообщить об ошибке