Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SIM900. Проблемы со стартом
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
Johnny_G
Хело.

Модуль после дергания поверкея стартует, отсылает парочку байт, что-то вроде 0х49 0хFF, на скорости (померянной по стартовому биту осцилографом) ~470 кбод.
На комманды не отвечает. Светодиод сети подмигивает.

Питание 3,5В, интерфейс развязан ключами, фантомного питания нет.

Бьюсь целый день, понять не могу, в чем беда... help.gif
CADiLO
1. не верьте осциллографу - просто прочтите документацию

The AT Command set implemented by SIM900 is a combination of GSM07.05, GSM07.07 and ITU-T recommendation V.25ter and the AT commands developed by SIMCom.
Note: A HEX string such as "00 49 49 49 49 FF FF FF FF" will be sent out through serial port at the baud rate of 115200 immediately after SIM900 is powered on. The string shall be ignored since it is used for synchronization with PC tool. Only enter AT Command through serial port after SIM900 is powered on and Unsolicited Result Code "RDY" is received from serial port. If auto-bauding is enabled, the Unsolicited Result Codes "RDY" and so on are not indicated when you start up the ME, and the "AT" prefix, not "at" prefix must be set at the beginning of each command line.

2. первую команду подавать только большими символами
3. если разбег скорости общения с модулем более 2% - обмена не будет.

Как только на AT ответит - сразу переводите его на фиксированную скорость и будет Вам счастье.

Ну и про вот это не забывайте - мало ли что терминал выдает в конце - проверьте.

The "AT" or "at" prefix must be set at the beginning of each Command line. To terminate a Command line enter <CR>.
Commands are usually followed by a response that includes. "<CR><LF><response><CR><LF>"
Johnny_G
Ну осциллографу не верить, кому ж тогда веритьsm.gif Там точно не 115200.
Но все таки. Первую комманду "АТ" в таком случае на 115200 передавать? Но нет же, вроде, он должен по этой комманде сам подстраиваться.
Пробовал по всякому - упрямо не работает. Терминалка в порядке. Отладочный кит работает нормально. Плата - нет. Может ли быть проблема в модуле?
Peps
Есть мнение, что AT для автодетекта скорости желательно передавать не более 57600 (на 115200 для SIM900 автоопределение скорости не гарантировано). Мнение авторитетное, даташитное. sm.gif
Johnny_G
Собрал еще одну плату, на другом модуле - с тем же результатом. Где-то я ошибаюсь, но где?
Модуль должен отвечать
RDY

+CFUN: 1

+CPIN

и так дальше только после настройки бодрейта? Если этого не посылает, значит еще настроен, я так понимаю?
ArtemKAD
А че означает "питание 3,5В"?
Johnny_G
Цитата(ArtemKAD @ Jun 29 2012, 00:46) *
А че означает "питание 3,5В"?

Ну... то и означает.... laughing.gif
alexdos
Цитата(Johnny_G @ Jun 30 2012, 03:57) *
Ну... то и означает.... laughing.gif



Если у Вас это напряжение питания SIM900 ("питание 3,5В") , то весьма странный выбор уровня напряжения питания, при напряжении 3,5В, очень маленький запас на "провалы", после которых модуль может посчитать что напряжение низкое и выключится.
А по вопросу почему Вам модуль не отвечает, Вам ответил CADiLO. Я скажу то же самое, но другими словами.
Чтоб модуль ответил тем что Вы ожидаете, он должен быть включен на один из фиксированных борейтов. Для того чтоб переключить на фиксированный бодрейт, сначала нужно подать комманду AT а затем комманду установки скорости. Скорость этой манипуляции должна быть не выше 57600. По AT он определит бодрейт. Вот строки которые нужно посылать. "AT\r" а затем "AT+IPR=19200\r" (настройка на скорость 19200). Затем модуль перегружаете.
ArtemKAD
Цитата
Ну... то и означает...


Значит велика вероятность того, что модуль пытается включиться, видит хреновый источник (провал под нагрузкой ниже 3,3В) и тут-же отключается.
Johnny_G
Цитата(ArtemKAD @ Jun 30 2012, 10:26) *
Значит велика вероятность того, что модуль пытается включиться, видит хреновый источник (провал под нагрузкой ниже 3,3В) и тут-же отключается.


Провалов нет. Проверено.
А проблема-то в том что не отвечает он на комманду "AT\n"!!! В том-то и вопрос.
_Артём_
Цитата(Johnny_G @ Jun 30 2012, 23:50) *
Провалов нет. Проверено.
А проблема-то в том что не отвечает он на комманду "AT\n"!!! В том-то и вопрос.


Может скорость не та...
Можно посылать ему команду настройки скорости и ждать пока ответить, если не ответит слать следующую. Вариантов скоростей немного - все перебрать недолго.
Код
__flash unsigned char ATIPR_19200[]="AT+IPR=19200\r";

unsigned long DefineBaudrate()
{
uart_init_115200();
send_ipr_115200();
if (OkReceived()) return 115200;

delay_some_second();

uart_init_57600();
send_ipr_57600();
if (OkReceived()) return 57600;

// и так далее

return 0; // не отвечает

}
alexdos
Цитата(Johnny_G @ Jun 30 2012, 23:50) *
Провалов нет. Проверено.
А проблема-то в том что не отвечает он на комманду "AT\n"!!! В том-то и вопрос.


А с какого ему отвечать на "AT\n" ? он не обязан на неё отвечать.
А вот на "AT\r" должен отвечать (задача на тему найдите одно отличие).
P.S. выдержка с документа "To terminate a Command line enter <CR>."
CADiLO
И давайте на всякий случай схемку глянем - мало ли что......
Johnny_G
Схема.
Через терминал посылаю команду "АТ" и жму enter, что передает 0x0D, а это <CR>, так что все по правилам...
CADiLO
1. мдя - а закольцевать ключи пробовали? без модуля эхо есть? сами себя принимаете? инверсии нету? wink.gif
2. на сим карте защитные диоды ставим СО СТОРОНЫ КАРТОЧКИ.
_3m
Цитата(Johnny_G @ Jul 2 2012, 15:53) *
Схема.
Через терминал посылаю команду "АТ" и жму enter, что передает 0x0D, а это <CR>, так что все по правилам...

Не знаю может не к месту, но было замечено:
модему для автодетекта нужен одиночный символ A.
Если выплюнуть строку "AT" да еще с переводом строки - не детектит.
Некторые терминалки не передают символы по мере нажатия кнопок а выплевывают строку целиком после нажатия enter.

Еще по схеме - зачем такие мощные полевики ???
У irlml6344 в цепи затвор-сток резистор 10К. При входной емкости этого полевика 650pf задержка уже может влиять.
CADiLO
>>>модему для автодетекта нужен одиночный символ A.

точнее бывает достаточно (если нет разбега в скорости - в идеальных условиях и 115200 автодетектит)
но правильно - AT
smalcom
Цитата
а это <CR>, так что все по правилам.

не факт
Цитата
Некторые терминалки не передают символы по мере нажатия кнопок а выплевывают строку целиком после нажатия enter.

угу
например cutecom плюёт строкой. причём позволяет выставлять задержку между символами, но это не всё. можно выбрать чем закрывать строку \r, \n, \r\n, ничем или отправить всё в хексе. я както минут пять тупил пока не догнал, что перед этим убрал конец строки. такчто лучше смотреть лог. анализатором или снифером порта.
ArtemKAD
Цитата
Схема.

Попробуйте выкинуть полевики заменив их биполярниками. Т.к. 650pF на 10к это как раз впритык к 115200. А когда впритык, работает принцип падающего бутерброда wink.gif .
Johnny_G
Ну что ж - проблема решена.

В изначальном варианте схемы в ключах у меня были биполярники, с резисторами в базах 4,7к, между базой и эмиттером - 47к. Поскольку на выходных доступа к осцилографу я не имел, гадал на кофейной гуще, и подумал, что, возможно, не хватает току базового, чтоб до конца открыть транзистор, потому уменьшил резисторы до тех номиналов, что приведены на схеме, и поставил полевики. Что только ухудшило ситуацию (только что смотрел осциллографом). Если же при этих номиналах резисторов (1к/10к) поставить биполярники - все чудесно sm.gif

В качестве терминалки испульзую putty + отдельно сниффер Free Serial Port Monitor

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