Перейти к содержанию
    

Передача данных по UART при TCP-соединении симкомовского модема Sim5360

Использую симкомовский модем Sim5360 с управлением от Atmel-овского микроконтроллера по UART.

UART работает на скорости 921600bps, установлены(активны) сигналы управления потоком CTS/RTS.

На Sim5360 организовываю TCP-сервер в Transparent mode; при соединении с другим модемом

MK по таймеру отсылает данные в UART, при этом часть данных передается, часть теряется т.к.

от модема идет сдерживающий сигнал RTS, запрещающий передачу. Поэтому возник вопрос: с каким

минимальным размером блока и с какой частотой нужно передавать данные в UART во избежание

потерь при передаче? Какой размер Rx FIFO модема Sim5360?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы на всякий случай проверьте, в самом ли деле данные теряются, или же они "зависают" в буферах модема на длительное время? Мы столкнулись у этого модема с подобными проблемами, но данные не терялись, а всегда доходили до адресата хотя и сзадержкой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Правильно ли я понимаю, что даже при прекращении передачи по сигналу RTS, какая-то часть данных может быть потеряна?

У Вас есть возможность подпаяться к USB интерфейсу модуля для снятия низкоуровневых логов? Напишите мне на chра(со6akа)mt-system.ru - пришлю инструкции.

 

Вы на всякий случай проверьте, в самом ли деле данные теряются, или же они "зависают" в буферах модема на длительное время? Мы столкнулись у этого модема с подобными проблемами, но данные не терялись, а всегда доходили до адресата хотя и сзадержкой.

Добрый день,

В Вашем случае была проблема в драйверах, а не в модуле.

Драйверы были портированны с другого проекта, в котором размер передаваемых данных, кратный 64, сигнализировал драйверу, что это - не конец посылки. Т.е. у Вас проблема была в том, что на модуль от MCU ни чего не приходило, если посылка = 64/128/192/... байта

Изменено пользователем Pavel☺

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да нет, вроде как наоборот, при передаче данных кратных 64 байтам они застревали в модеме и для того чтобы они передавались пришлось модифицировать обмен

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Одно дело, если использовать разовую посылку блока данных, при заполнении внутреннего буфера модема RTS блокирует прием данных

(по времени может длится несколько секунд), далее, после передачи, разрешает прием и отправляет остаток данных их до адресата - потерь

при передаче действительно нет, только задержка по времени. Другое дело, если нужно передавать поток данных с определенной скоростью

от МК в UART модема. К примеру, передачу двухкилобайтных блоков два раза в секунду модем успевает обрабатывать (без сигнала

сдерживания - RTS), при увеличении размера блоков (увеличения частоты посылок) не справляется - RTS блокирует прием данных

на несколько секунд, соответственно часть данных, передаваемых от МК за это время будет утеряна, т.к. размер буфера модема

ограничен. Стоит ли вообще вообще использовать UART модема для передачи потока данных?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Одно дело, если использовать разовую посылку блока данных, при заполнении внутреннего буфера модема RTS блокирует прием данных

(по времени может длится несколько секунд), далее, после передачи, разрешает прием и отправляет остаток данных их до адресата - потерь

при передаче действительно нет, только задержка по времени. Другое дело, если нужно передавать поток данных с определенной скоростью

от МК в UART модема. К примеру, передачу двухкилобайтных блоков два раза в секунду модем успевает обрабатывать (без сигнала

сдерживания - RTS), при увеличении размера блоков (увеличения частоты посылок) не справляется - RTS блокирует прием данных

на несколько секунд, соответственно часть данных, передаваемых от МК за это время будет утеряна, т.к. размер буфера модема

ограничен. Стоит ли вообще вообще использовать UART модема для передачи потока данных?

Мне кажется, Вы уже сами ответили на свой вопрос.

Вообще, размер буфера = 5КБ. При каком заполнении модуль начинает сигнализировать по RTS, мне точно не известно. Могу предположить, что 3.5К

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне кажется, Вы уже сами ответили на свой вопрос.

Вообще, размер буфера = 5КБ. При каком заполнении модуль начинает сигнализировать по RTS, мне точно не известно. Могу предположить, что 3.5К

 

Я правильно понял, что при работе черех UART, модуль обеспечивает скорость передачи данных только порядка 32 kbit/s? (средняя скорость, uplink)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...