BA-IS-XX UART-RX
Страница в процессе разработки. |
Прием данных через UART с использованием модуля ввода-вывода RITMeX BA-IS-XX.
Описание
Блок используется для приема данных через UART с использованием модуля ввода-вывода RITMeX BA-IS-XX.
Порты
Выход
RX —
массив (тип данных UInt8
), принятый по UART
вектор
Details
Размер массива фиксирован и составляет 16
(подробнее см. в разделе Замечания об использовании).
Length —
информация о количестве байт, принятых по UART за шаг расчета
скаляр
Overrun —
ненулевое значение на этом выходе означает, что данные извне приходят быстрее, чем их вычитывает блок.
скаляр
Details
Подробнее см. в разделе Замечания об использовании.
Параметры
Номер модуля —
уникальная идентификация модуля
1 (по умолчанию)
| 2
| 3
| 4
| 5
| 6
| 7
| 8
Details
Используется для уникальной идентификации модуля, когда в машине реального времени установлено больше одного модуля ввода-вывода этого же типа.
Номера модулей подписаны на корпусе КПМ «РИТМ».
Номер канала —
канал UART для приема
1 (по умолчанию)
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
| 10
| 11
| 12
| 13
| 14
| 15
| 16
| 17
| 18
| 19
| 20
| 21
| 22
| 23
| 24
| 25
| 26
| 27
| 28
| 29
| 30
| 31
| 32
Макс. количество слов —
количество слов считываемое из буфера UART за шаг расчета
1 (по умолчанию)
Шаг расчета —
шаг расчета в секундах, по которому происходит прием данных по UART в приложение реального времени
-1 (по умолчанию)
Замечания об использовании
Подробные замечания об использовании
Модуль UART на ПЛИС содержит два аппаратных буфера: на прием и отправку. Размер каждого буфера — 16
байт. В связи с этим нужно хорошо понимать характеристики конкретного протокола взаимодействия по UART, чтобы избежать переполнения этих буферов, а также гарантировать отправку предыдущего сообщения перед тем, как пытаться отправить следующее.
Первое, что надо учитывать — это скорость передачи данных. Очевидно, что данные по UART не передаются мгновенно. Пусть, например, требуется отправить массив из 16
символов (каждый символ состоит из 10
бит — это 8
бит данных, стартовый и стоповый биты) со скоростью 115200
бод. Для этого потребуется секунд. Если блок Отправка UART работает с шагом 0.001
с, то данные не успеют отправиться до следующего шага расчета блока, потому что 0.001
< 0.0014
. Поэтому следующий массив символов не может быть отправлен и в такой ситуации выполнение модели будет остановлено с ошибкой. Требуется подобрать такую комбинацию шага расчета блока, скорости передачи и размера массива, чтобы эти данные физически было возможно отправить за один шаг расчета блока.
Второе, что надо учитывать — это размер аппаратного буфера на прием. Если данные извне приходят быстрее, чем блок BA-IS-XX UART-TX считывает их из аппаратного буфера, то новые данные, не умещающиеся в буфер приема, отбрасываются. Таким образом, надо учитывать и рассчитывать ожидаемое время для заполнения буфера чтения внешним потоком данных.
Для этого можно руководствоваться значениями на выходах Length и Overrun блока BA-IS-XX UART-TX. В расчетах внутри модели следует учитывать ровно столько элементов на выходе RX блока, сколько было фактически получено (выход Length). Значения всех остальных элементов массива RX не определены.
Если на выходе Overrun блока выдается ненулевое значение, то это означает, что аппаратный буфер переполнился и данные в аппаратном буфере приема были потеряны. В этом случае можно уменьшить шаг расчета блока BA-IS-XX UART-TX, чтобы считывать данные чаще и, таким образом, избегать переполнения буфера приема. Слишком маленький шаг расчета для блока BA-IS-XX UART-TX, также не следует выставлять, а надо руководствоваться конкретным протоколом обмена. Например, если известно, что внешнее устройство отправляет команды из 8 байт, можно подобрать такой шаг расчета блока, чтобы значение выхода Length примерно равнялось 8
от шага к шагу расчета.