Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SIM300C
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
Ojo
У меня проблема с закрытием 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 вариант еще раз. Но второй случай тоже не нравится.

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

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

А вообще с "прозрачным" режимом и с DTR-ом у Симкома были проблемы. Может прошивку нужно обновить?
Ojo
Тихо сам с собой веду беседу…
Все разрешилось, если кому-то интересно, то привожу результаты моих изысканий.

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

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

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

При пассивном DTR ("в единице") модем вообще мог заваливаться в sleep
Ojo
Так, немного запутался я в уровнях.

В 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, скопировать цитату не могу, китайцы зачем-то поставили защиту от копирования в буфер)
Baser
Цитата(Ojo @ Jul 3 2008, 14:22) *
Я правильно понял, что на DTR pin должна быть ”земля” и это соответствует логической ”1”?

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


Про sleep я, действительно, был не прав, плохо прочел документацию.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.