реклама на сайте
подробности

 
 
> FIFO UART-а, Принимает не все входящие байты
elusive
сообщение Jun 18 2013, 07:53
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 26-05-10
Пользователь №: 57 544



Для передачи использую интерфейс UART. Есть входной FIFO глубиной 32.
Ставлю уровень заполнения FIFO и прерывание по этому событию. В прерывании считываю всю FIFO и провожу необходимый мне анализ данных. Обработчик по времени очень короткий.

Так вот при передаче пакетов размером примерно до 60 байт все нормально принимается и читается.
При передаче пакетов больше 60 байт в буфер FIFO почему-то попадают только первые 60 байт! То есть я их считываю как обычно, а после этого FIFO остается пустой, а куда делись остальные байты???

При чем возможно два сценария: установился флажок OVERRUN либо НЕ установился. В случае OVERRUN я еще могу понять - настолько быстро приходят байты, что даже с коротким обработчиком и глубоким буфером мы их не успеваем забрать.
Но что происходит если никаких ошибок не возникало? Как UART "прозевал" последущие байты, почему не появилось новое прерывание по уровню FIFO?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Палыч
сообщение Jun 18 2013, 09:21
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(elusive @ Jun 18 2013, 11:53) *
Есть входной FIFO глубиной 32.
...
Так вот при передаче пакетов размером примерно до 60 байт все нормально принимается и читается.
При передаче пакетов больше 60 байт в буфер FIFO почему-то попадают только первые 60 байт!
Что-то я не въехал: так какая же глубина FIFO ? 32 байта? Шестьдесят? Или ещё больше?
Go to the top of the page
 
+Quote Post
elusive
сообщение Jun 18 2013, 10:06
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 26-05-10
Пользователь №: 57 544



Цитата(Палыч @ Jun 18 2013, 15:21) *
Что-то я не въехал: так какая же глубина FIFO ? 32 байта? Шестьдесят? Или ещё больше?


Входной аппаратный FIFO на 32.
Когда я по прерыванию начинаю считывать оттуда байты он постепенно очищается и параллельно туда валятся новые байты. В сумме у меня выходит принять только 60 байт, потом наступает переполнение, как правило. Иногда даже переполнение не устанавливается, но FIFO почему-то пуст, хотя входной пакет более 100 байтов.

По мере чтения из аппаратного FIFO я пишу в свой программный буфер размером с максимальный пакет, который вообще может прийти - 64кбайта.
Go to the top of the page
 
+Quote Post
andrey74
сообщение Jun 18 2013, 10:11
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 184
Регистрация: 14-02-11
Пользователь №: 62 953



у меня тоже были проблемы из-за FIFO UARTа, просто его отключил и считывал все символы по прерыванию в отдельный массив, мне так проще
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 14:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01392 секунд с 7
ELECTRONIX ©2004-2016