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

 
 
 
Reply to this topicStart new topic
> SIM300C, Проблема с закрытием UDP соединения по GPRS
Ojo
сообщение Jul 1 2008, 17:54
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 16-06-05
Пользователь №: 6 070



У меня проблема с закрытием UDP соединения по GPRS. Привожу отладочные сообщения устройства с комментариями:

AT
OK

AT+CREG?
+CREG: 0,1
OK

AT+CGATT?
+CGATT: 1
OK

GSM
AT+CIPMODE=1
OK

// Последний 0, чтобы по +++ не переходил в режим команд. Вдруг, такая комбинация данных встретиться.
AT+CIPCCFG=5,3,256,0
OK

// переход в режим команд осуществляется сбросом линии DTR
AT&D1
OK

// XXX.XXX.XXX.XXX - мой статический IP
AT+CIPSTART="UDP","XXX.XXX.XXX.XXX","5000"
OK
CONNECT

Дальше идет обмен данными с XXX.XXX.XXX.XXX, все хорошо

Дальше я делаю следующие действия с сигналам DTR:
- Сбрасываю DTR
- Жду 2 секунды
- Устанавливаю DTR
- Жду 2 секунды
- Работаю дальше

А вот дальше возможны следующие варианты:
1.
AT+CIPCLOSE
CLOSE OK

2.
// Идет какой-то мусор и команда закрытия выдает ошибку, но следующая проходит нормально
xxxxxxxxxjU5
AT+CIPCLOSE
ERROR

AT+CIPCLOSE
CLOSE OK

3. Самый плохой вариант, встретился один раз. Модуль перестает реагировать на любые AT команды и, хуже всего, не перезагружается c помощью линии PWRKEY (17).

В первом и втром случае я выхожу на команду
AT+CIPSTART="UDP","XXX.XXX.XXX.XXX","5001"
OK
CONNECT

и так далее, пока не встретиться случай 3. Сейчас пытаюсь поймать 3 вариант еще раз. Но второй случай тоже не нравится.

Что я делаю не так?
Go to the top of the page
 
+Quote Post
Baser
сообщение Jul 2 2008, 15:51
Сообщение #2


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



А у вас после дерганья DTR-ом модуль выдает "ОК" или нет?

По документации вроде должен выдавать. Может иногда модулю на выход в командный режим требуется много времени?

А вообще с "прозрачным" режимом и с DTR-ом у Симкома были проблемы. Может прошивку нужно обновить?
Go to the top of the page
 
+Quote Post
Ojo
сообщение Jul 3 2008, 05:56
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 16-06-05
Пользователь №: 6 070



Тихо сам с собой веду беседу…
Все разрешилось, если кому-то интересно, то привожу результаты моих изысканий.

1.
В описании SIM300 нашел, что DTR должен быть всегда LOW. Поэтому сейчас алгоритм разрыва UDP соединения выглядит следующим образом:
- Устанавливаю DTR
- Жду 1 секунды
- Сбрасываю DTR
- Жду 1 секунды
- Работаю дальше, и теперь DTR всегда LOW.

2.
Проблема мусора при разрыве соединения решилась введение следующей команды, отключающей autobauding:
AT+IPR=9600
OK

3.
Проблема подвисания модуля и нереагирования на PWRKEY заключалась в том, что на момент дерганья PWRKEY, RTS был активный (а так делать нельзя, паразитные токи, об этом уже много написано).
Go to the top of the page
 
+Quote Post
Baser
сообщение Jul 3 2008, 09:36
Сообщение #4


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Вам нужно было корректней описывать ваши действия.
Поскольку сигналы сериального интерфейса на модеме имеют активный уровень "низкий", то я был уверен, что из вашей фразы
Цитата
- Сбрасываю DTR
следует, что вы устанавливаете его в "единицу" smile.gif

При пассивном DTR ("в единице") модем вообще мог заваливаться в sleep
Go to the top of the page
 
+Quote Post
Ojo
сообщение Jul 3 2008, 11:22
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 16-06-05
Пользователь №: 6 070



Так, немного запутался я в уровнях.

В Hardware Design SIM300C есть такая фраза:
Note: DTR pin should be held low level during communication between the module and DTE.
Я правильно понял, что на DTR pin должна быть ”земля” и это соответствует логической ”1”?


Цитата(Baser @ Jul 3 2008, 13:36) *
При пассивном DTR ("в единице") модем вообще мог заваливаться в sleep


Для этого модуль должен быть настроен на возможность в впадение в спящий режим командой AT+CSCLK=1, по умолчанию эта возможность отключена. (см. HardWare Design п 3.6.2, скопировать цитату не могу, китайцы зачем-то поставили защиту от копирования в буфер)

Сообщение отредактировал Ojo - Jul 3 2008, 11:25
Go to the top of the page
 
+Quote Post
Baser
сообщение Jul 3 2008, 13:02
Сообщение #6


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(Ojo @ Jul 3 2008, 14:22) *
Я правильно понял, что на DTR pin должна быть ”земля” и это соответствует логической ”1”?

Не... ”земля” она является логическим ”0”. Но этот уровень является "активным". Поскольку в RS-232, преобразованном в КМОП уровни, стоповым (пассивным) является высокий уровень на линии (”1”).


Про sleep я, действительно, был не прав, плохо прочел документацию.
Go to the top of the page
 
+Quote Post

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

 


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


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