|
|
  |
Передача данных по UART при TCP-соединении симкомовского модема Sim5360 |
|
|
|
Jun 29 2015, 10:35
|
Группа: Участник
Сообщений: 7
Регистрация: 30-11-11
Из: СПб
Пользователь №: 68 596

|
Использую симкомовский модем Sim5360 с управлением от Atmel-овского микроконтроллера по UART. UART работает на скорости 921600bps, установлены(активны) сигналы управления потоком CTS/RTS. На Sim5360 организовываю TCP-сервер в Transparent mode; при соединении с другим модемом MK по таймеру отсылает данные в UART, при этом часть данных передается, часть теряется т.к. от модема идет сдерживающий сигнал RTS, запрещающий передачу. Поэтому возник вопрос: с каким минимальным размером блока и с какой частотой нужно передавать данные в UART во избежание потерь при передаче? Какой размер Rx FIFO модема Sim5360?
|
|
|
|
|
Jun 30 2015, 06:01
|

Частый гость
 
Группа: Участник
Сообщений: 166
Регистрация: 18-03-14
Из: Санкт-Петербург
Пользователь №: 80 977

|
Правильно ли я понимаю, что даже при прекращении передачи по сигналу RTS, какая-то часть данных может быть потеряна? У Вас есть возможность подпаяться к USB интерфейсу модуля для снятия низкоуровневых логов? Напишите мне на chра(со6akа)mt-system.ru - пришлю инструкции. Цитата(vladec @ Jun 30 2015, 09:55)  Вы на всякий случай проверьте, в самом ли деле данные теряются, или же они "зависают" в буферах модема на длительное время? Мы столкнулись у этого модема с подобными проблемами, но данные не терялись, а всегда доходили до адресата хотя и сзадержкой. Добрый день, В Вашем случае была проблема в драйверах, а не в модуле. Драйверы были портированны с другого проекта, в котором размер передаваемых данных, кратный 64, сигнализировал драйверу, что это - не конец посылки. Т.е. у Вас проблема была в том, что на модуль от MCU ни чего не приходило, если посылка = 64/128/192/... байта
Сообщение отредактировал Pavel☺ - Jun 30 2015, 06:02
--------------------
|
|
|
|
|
Jul 1 2015, 14:26
|
Группа: Участник
Сообщений: 7
Регистрация: 30-11-11
Из: СПб
Пользователь №: 68 596

|
Одно дело, если использовать разовую посылку блока данных, при заполнении внутреннего буфера модема RTS блокирует прием данных (по времени может длится несколько секунд), далее, после передачи, разрешает прием и отправляет остаток данных их до адресата - потерь при передаче действительно нет, только задержка по времени. Другое дело, если нужно передавать поток данных с определенной скоростью от МК в UART модема. К примеру, передачу двухкилобайтных блоков два раза в секунду модем успевает обрабатывать (без сигнала сдерживания - RTS), при увеличении размера блоков (увеличения частоты посылок) не справляется - RTS блокирует прием данных на несколько секунд, соответственно часть данных, передаваемых от МК за это время будет утеряна, т.к. размер буфера модема ограничен. Стоит ли вообще вообще использовать UART модема для передачи потока данных?
|
|
|
|
|
Jul 2 2015, 06:29
|

Частый гость
 
Группа: Участник
Сообщений: 166
Регистрация: 18-03-14
Из: Санкт-Петербург
Пользователь №: 80 977

|
Цитата(jip @ Jul 1 2015, 17:26)  Одно дело, если использовать разовую посылку блока данных, при заполнении внутреннего буфера модема RTS блокирует прием данных (по времени может длится несколько секунд), далее, после передачи, разрешает прием и отправляет остаток данных их до адресата - потерь при передаче действительно нет, только задержка по времени. Другое дело, если нужно передавать поток данных с определенной скоростью от МК в UART модема. К примеру, передачу двухкилобайтных блоков два раза в секунду модем успевает обрабатывать (без сигнала сдерживания - RTS), при увеличении размера блоков (увеличения частоты посылок) не справляется - RTS блокирует прием данных на несколько секунд, соответственно часть данных, передаваемых от МК за это время будет утеряна, т.к. размер буфера модема ограничен. Стоит ли вообще вообще использовать UART модема для передачи потока данных? Мне кажется, Вы уже сами ответили на свой вопрос. Вообще, размер буфера = 5КБ. При каком заполнении модуль начинает сигнализировать по RTS, мне точно не известно. Могу предположить, что 3.5К
--------------------
|
|
|
|
|
May 8 2016, 21:41
|
Частый гость
 
Группа: Свой
Сообщений: 147
Регистрация: 24-01-07
Пользователь №: 24 741

|
Цитата(Pavel☺ @ Jul 2 2015, 09:29)  Мне кажется, Вы уже сами ответили на свой вопрос. Вообще, размер буфера = 5КБ. При каком заполнении модуль начинает сигнализировать по RTS, мне точно не известно. Могу предположить, что 3.5К Я правильно понял, что при работе черех UART, модуль обеспечивает скорость передачи данных только порядка 32 kbit/s? (средняя скорость, uplink)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|