1 (21-05-2017 15:25:26 отредактировано TzX)

Тема: Canny 5.2 duo, uart прием пакета больше. чем буфер

Здравствуйте.
Есть необходимость обработать UART сообщение длиннее 24 байт.
В wiki не нашел информации о том, как чистить приемный буфер. В итоге удается получить только первые 24 байта. При этом фиксируется переполнение буфера. Набросал простую эхо-диаграмму. Подскажите, в какую сторону смотреть, или это невозможно и необходим какой-то "мост", который будет дробить данные на меньшие посылки?

Вложений в сообщении

Иконка вложения echo.png 86.48 кб, скачивался 176 раз, последний раз 2017-05-21 

2

Re: Canny 5.2 duo, uart прием пакета больше. чем буфер

Драйвер UART сам нарезает входящие данные кусками по 24 байта. При этом единица в Регистре наличия данных UART появляется либо по заполнению буфера либо по таймауту, когда принят последний кусок. Таким образом можно например складывать принимаемые данные через коммутаторы в большее чем длина буфера число D-триггеров. Очищается буфер автоматически. В вашей диаграмме скорее всего происходит переполнение передающего буфера.
Вам известна максимальная длина принимаемого сообщения? Вам нужно реагировать на сообщение определенной длины или на сообщения разной длины? Необходимо ли как же передавать данные по UART или нужно лишь принимать?

3 (21-05-2017 16:28:05 отредактировано TzX)

Re: Canny 5.2 duo, uart прием пакета больше. чем буфер

Передавать тоже необходимо. Взаимодействие диалоговое.

Да, максимальная длина известна. В моем случае 31 байт

Длина и принимаемых и передаваемых данных - переменна, но первым байтом принимаемого сообщения идет маркер, по которому я знаю, какой длинны будет сообщение, и сообщение ответ. Они фиксированы в зависимости от этого маркера.

Можно простой пример приема-передачи длинного сообщения?

4

Re: Canny 5.2 duo, uart прием пакета больше. чем буфер

Пример диаграммы приема по UART сообщений различной длины, в том числе и длинных сообщений, более длины 1 буфера контроллера, и отправки длинных сообщений обратно в UART (длина принимаемого и передаваемого сообщения сообщения задаются маркером, первым байтом в принятом сообщении).
В следующем релизе среды разработки CannyLab буферы UART всех контроллеров будут унифицированы, т.е. приведены к одинаковому размеру - 32 байта. Через пару дней можем предложить новое системное ПО для CANNY 5.2 duo на тестирование.

Вложений в сообщении

Иконка вложения c52duouart_long.cfd 13.41 кб, скачивался 351 раз, последний раз 2017-05-22 

5

Re: Canny 5.2 duo, uart прием пакета больше. чем буфер

Спасибо за пример. Буду изучать.
32 байтный буфер - это хорошо, готов поучаствовать в тесте.

6

Re: Canny 5.2 duo, uart прием пакета больше. чем буфер

Ответили почтой.