Полная версия этой страницы:
SIM900&MSP430
SidAlex
Nov 25 2010, 13:35
Добрый день всем.
У меня большая проблема и я пришел сюда за квалифицированной помощью. Она заключается вот в чем. У меня модем SIM900 и кристалл MSP4301611. МК управляет модемом, т.е. посылает ему AT команды и по идее модем должен присылать ответы на них. Но вот тут то меня ждало фиаско. Когда я включаю модем и смотрю, что у МК в RXD, то там лежит информация от модема в начальный момент его включения. После того, как модем мне полностью прислал ответ, я начинаю ему передавать AT команды, но в буфер TX МК они уходят причем все символы уходят я проверял, но ответа при этом никакого не приходит. Ждал я долго, прерывание на RX нет. В чем может быть проблема? Подскажите пожалуйста.
Заранее спасибо.
CADiLO
Nov 25 2010, 14:13
А передаете большими символами или маленькими?
по "АТ" засинхронизируется, а по "at" - нет
SidAlex
Nov 25 2010, 14:36
Я пробовал по всякому и с большой буквы и с маленькой. А по поводу синхронизации, если я правильно понял, она нужна только если бодрайт на авто настроен. Я настроил на 115200, и сохранил настройки. И потом, если тоже самое делать, но через терминал Винды, то там вообще не имеет разницы с какими буквами писать, если установить скорость обмена, а не оставлять ее на авто. Может я чего не правильно понял. Скажу еще раз, ответ от модема при первом его включении я получаю, значит UART модема и МК настроены правильно, так? Потом ожидание, я пока для отладки поставил 10 сек, затем команда AT большими буквами, как написано в мануале, но результата ноль.
Цитата(SidAlex @ Nov 25 2010, 18:36)

Я пробовал по всякому и с большой буквы и с маленькой. А по поводу синхронизации, если я правильно понял, она нужна только если бодрайт на авто настроен. Я настроил на 115200, и сохранил настройки. И потом, если тоже самое делать, но через терминал Винды, то там вообще не имеет разницы с какими буквами писать, если установить скорость обмена, а не оставлять ее на авто. Может я чего не правильно понял. Скажу еще раз, ответ от модема при первом его включении я получаю, значит UART модема и МК настроены правильно, так? Потом ожидание, я пока для отладки поставил 10 сек, затем команда AT большими буквами, как написано в мануале, но результата ноль.
с питанием модуля все нормально? при подключении к компу с этой же обвязкой по питанию работает нормально?
еще вопрос, не может ли покаким то причинам меняться скорость обмена контроллера? попробуйте посмотреть осциллографом или компом через какую нибудь терминалку что шлет котроллер.
я пока SIM900 не использовал. но очень немло работал с SIM300 и MSP430F1611. использовал скорость 115200. никаких настроек в модуле по поводу скорости не делал, она по умолчанию 115200. проблем никогда не возникало с обменом.
CADiLO
Nov 25 2010, 14:56
Вы все правильно поняли - на фиксированой скорости разницы в символах нет.
Кроме разности в скоростях обмена еще может быть железная причина.
Как стыкуете модуль с контроллером, какое питание контроллера, держите ли порт в третьем состоянии до появления STATUS?
SidAlex
Nov 25 2010, 19:22
Цитата(CADiLO @ Nov 25 2010, 17:56)

Вы все правильно поняли - на фиксированой скорости разницы в символах нет.
Кроме разности в скоростях обмена еще может быть железная причина.
Как стыкуете модуль с контроллером, какое питание контроллера, держите ли порт в третьем состоянии до появления STATUS?
Я честно говоря не понял третий вопрос. По соединение модема и МК следующие. На демострухе установлен модем. Он питается от сети 5V. У модема есть нога VDD_EXT, через которую можно питать МК, там 2,7-2,95В. UART обвязан следующим образом: ну TX и RX, это понятно. Но там есть еще сигнальные линии: DTR, RTS, RI, CTS и еще не помню. Так вот эти выводы куда цеплять и как? А забыл про GND... Но с этим вроде понятно. В UART сигнал изменяется относительно земли - я имею ввиду 0 и 1. Не знаю, понятно написал или нет.
Ребята, если не сложно можете показать как вы сочленяли МК с модемом. Я меня МК на демонстрационной плате и модем тоже на демонстрационной плате. И с платы модема я беру питание на МК. Как? Я написал выше.
Цитата(SidAlex @ Nov 25 2010, 23:22)

Я честно говоря не понял третий вопрос. По соединение модема и МК следующие. На демострухе установлен модем. Он питается от сети 5V.
не многовато ли 5В ?
SidAlex
Nov 26 2010, 03:45
Цитата(M_Z @ Nov 25 2010, 23:01)

не многовато ли 5В ?
Так там все нормально, там потом через стабилизатор.
CADiLO
Nov 26 2010, 08:10
Первое условие которое должно выполняться - на цифровых ногах модуля до появления STATUS не должно быть НИКАКИХ сигналов.
SidAlex
Nov 26 2010, 09:26
Товарищи. Я тогда так перефразирую. Помогите пожалуйста советом, как соединяется UART модема с UART MSP. Не хочет он понимать команды. НО при этом показывает:
IIIIþþþþ
RDY
+CFUN: 1
+CPIN: READY
Call Ready
Что означает, если я правильно понимаю, готов работать. Так вот как только я начинаю посылать AT команду, он молчит, т.е. ответа от модема нет. Эхо выключено. Скорость выбрана 115200, об этом я уже писал. Еще момент такой: когда включаешь Power загорается индикатор и ногах TX и RX есть напряжение относительно земли. Это нормально? Т.е. PWRKEY еще не нажата и индикаторы STATUS и NETLIGTH не горят и не мигают.
CADiLO
Nov 26 2010, 10:08
Стоп.
>>>На демострухе установлен модем
Это штатный EVB kit? А буфера RS-232 которые на нем, Вы отключили перед тем как свой контроллер к ножкам модуля припаивать ?
А то у Вас вполне конфликт может быть по ножкам.
SidAlex
Nov 26 2010, 11:26
Отключил две ноги RX и TX. Результат остался неизменным. Так же я убрал RTS, DTR, CTS, RI. Теперь они просто висят в воздухе. Если вы спросите, почему я их оставил в воздухе, отвечу. Я и припаивать их пробовал к портам MSP как написано в мануале для SIM900 и закарачивал RTS-CTS, DTR-DCD. Результат всегда один и тот же. Команда до модема доходит но ответа нет.
CADiLO
Nov 26 2010, 11:30
Тогда смотрим насколько ваша команда доходящая до модема отличается от скорости 115200.
SidAlex
Nov 30 2010, 07:12
Ребята, я вам одно а вы мне совсем другое. Можно просто ответить на вопрос. Как соединить МК с SIM900 так чтобы SIM воспринимал AT команды. По поводу скорости рассогласований нет. Потому что ответ от модема я принимаю нормальный в момент его инициализации. Мерил осциллографом команда доходит до модема. Она просто не выполняется. Пробывал AT+CPOWD=1(выключение). Не отключается. Сейчас полностью откинул com, просто отпаял нужные ноги. Результат остался неизменным.
CADiLO
Nov 30 2010, 07:53
Закольцуйте свой прием и передачу и посмотрите для начала принимаете ли Вы то что сами передаете .
Если принимаете - ищите ошибку в соединении. Если нет - то в скорости или логике передачи.
Трудно быть телепатом.....
SidAlex
Nov 30 2010, 12:26
Цитата(CADiLO @ Nov 30 2010, 10:53)

Закольцуйте свой прием и передачу и посмотрите для начала принимаете ли Вы то что сами передаете .
Если принимаете - ищите ошибку в соединении. Если нет - то в скорости или логике передачи.
Трудно быть телепатом.....
Может я ничего не понимаю, но пожалуйста, поясните, что значит логика передачи???
Мой алгоритм таков:
1. Включили модем. По TxD модема на MSP пришел сигнал, что модем включился.
2. После того как пришел последний символ я жду какое-то время (сейчас оно достаточно большое 10 сек.).
3. Формирую простую команду "AT\r\n\0" и по символьно записываю ее в TxD MSP.
Потом молчек... ответа от модема никакого нет.
Какие настройки я выполнял. Убрал эхо. ATE0. Настроил фиксированную скорость AT+IPR=115200. Выполнил сохранение настроек AT&W. Может я что-то упустил??? Просто я работал до этого но с другим модемом и никаких проблем при этом не возникало. Может здесь есть какие-то тонкости?

По поводу остальных ног, то в PDF на SIM900 написано, что если не используется, то они могут просто висеть в воздухе. Поэтому у меня подключено только RxD(sim)-TxD(msp), TxD(sim)-RxD(msp), GND, VDD_EXT(питает msp, чтобы не делать согласование по уровням.) Также там написано, DTR уже притянуто к VDD_EXT внутри через резистор и его подтягивать к плюсу не нужно. Тогда возникает у меня вопрос, если не используемые ноги висят в воздухе, то это может как-то повлиять на работу и взаимодействие?
CADiLO
Nov 30 2010, 14:28
Трудно с Вами, но попробуем.
Шаг первый - соедините на своем контроллере передачу и прием.
Принимаете ли Вы то что передаете ?
Если да, то разсоединив подайте передачу на комп.
Принимает ли комп то что Вы передаете ?
Если да, то програмную часть исключили будем смотреть аппаратную.
Если нет - проверяйте работу программы на передачу.
Reccer
Nov 30 2010, 15:20
Цитата(SidAlex @ Nov 30 2010, 16:26)

3. Формирую простую команду "AT\r\n\0" и по символьно записываю ее в TxD MSP.
Попробуйте команду "AT\r"
SidAlex
Dec 1 2010, 06:31
Цитата(CADiLO @ Nov 30 2010, 17:28)

Трудно с Вами, но попробуем.
Шаг первый - соедините на своем контроллере передачу и прием.
Принимаете ли Вы то что передаете ?
Если да, то разсоединив подайте передачу на комп.
Принимает ли комп то что Вы передаете ?
Если да, то програмную часть исключили будем смотреть аппаратную.
Если нет - проверяйте работу программы на передачу.
Соединял RxD и TxD MSP посылаю команду AT и ее же принимаю. На осциллографе все четко видно. К компу я не подключаю, но на ноге RxD модема при просмотре через осцилограф, то картинка такая же как и при соединении RxD TxD MSP. Теперь осталась аппаратная часть. В принципе именно на аппаратную часть я и грешил с самого начала.
av-master
Dec 1 2010, 07:09
Подключи на комп. советуют же.... то что сам ты ее принял еще не означает что ее обязаны принимать все....
SidAlex
Dec 1 2010, 07:40
Цитата(av-master @ Dec 1 2010, 10:09)

Подключи на комп. советуют же.... то что сам ты ее принял еще не означает что ее обязаны принимать все....
К компу нет возможности подключить. Просто нет переходника с UART на COM. Вы меня, конечно извините, но в чем тут разница, я не совсем понимаю. Символы отправляются в ASCII и принимаются тоже в ASCII (может криво написал), где может быть непонимание. Тем более я уже писал, что при инициализации от модема я принимаю то что должен принять. Какая то однобокое непонимание, Вам не кажется???
схему можно показать?
возможно тогда чтото можно будет подсказать.
av-master
Dec 1 2010, 09:10
Возьмите шнурок от кагонить страго мобильника. копейки стоит. и сразу 3Вольта на выходе.
SidAlex
Dec 1 2010, 09:34
Цитата(M_Z @ Dec 1 2010, 10:46)

схему можно показать?
возможно тогда чтото можно будет подсказать.
Вот схема соединения MSP с SIM. Питание MSP от VDD_EXT SIM, который, в свою очередь, питается через отладочную плату.
Нажмите для просмотра прикрепленного файлаЗемля общая. Используемые сигналы RxD, TxD. Остальные висят в воздухе.
av-master
Dec 1 2010, 11:35
CTS / RTS - попробуйте замкнуть. на модулке
SidAlex
Dec 1 2010, 11:42
Цитата(av-master @ Dec 1 2010, 14:35)

CTS / RTS - попробуйте замкнуть. на модулке
Дополнительно ко всему, DTR посадил на GND, RTS/CTS замкнул между собой. Результат появился, но какой-то странный. Например, я ему отправляю команду AT+CPOWD=1, что значит "выключись", а он(модем) в ответ присылает какую-то хрень, извините, и не выполняет команду. Т.е. получается, что ответ то я получил, но от этого легче не стало. Но появился вопрос такой. Уровень единицы в модеме сколько должен быть (в диапазоне каком должен меняться). ПОтому что у меня на TxD MSP 3В, а на RxD MSP 2,9В. Это ничего страшного?
Попробуйте первой подавать команду ATQ0. Возможно в настройках модема установлено ATQ1, то есть не отвечать. Вот он и не отвечает Один раз встречалась такая ситуация, но с другим модемом.
av-master
Dec 1 2010, 13:52
эта хрень в нечитаемом виде ? тогда дело в скорости. проверяйте кварц. и настройки генератора. ну и тд...
Смените модуль наконец. может он уже сдох - звените ))
Напряжение 1-цы = 2.8 но если 3-ка появляется на TX после включения модуля то нестрашно. до появления сигнала статус Ваш TX должен быть в Z state / или на вход как минимум.
SidAlex
Dec 2 2010, 06:41
Цитата(av-master @ Dec 1 2010, 16:52)

эта хрень в нечитаемом виде ? тогда дело в скорости. проверяйте кварц. и настройки генератора. ну и тд...
Смените модуль наконец. может он уже сдох - звените ))
Напряжение 1-цы = 2.8 но если 3-ка появляется на TX после включения модуля то нестрашно. до появления сигнала статус Ваш TX должен быть в Z state / или на вход как минимум.
Модуль не сдох, потому что через HyperTerminal я общаюсь нормально. И потом вы пишите что дело в скорости, но на осциллографе картинки одинаковые, что при передаче модема, что при передаче в модем.
Вы на осциллографе увидите рассогласование скорости в 1-2 % ?
А вот модем уже не поймет при такой неточности.
Посчитайте свой делитель в контроллере и посмотрите точность передачи. На сколько Ваши 115200 отклоняются от номинала.
Кстати какой кварц стоит на контроллере ?
А еще лучше попробуйте общение с модемом на скорости у которой отклонение 0.5%
Раз общаетесь с модемом гипертерминалом - пообщайтесь и с контроллером - посмотрите получится ли.
Можно пробовать то что советуют и найти причину, а можно упереться и продолжать настаивать на своей правоте.
SidAlex
Dec 2 2010, 08:16
Цитата(CADiLO @ Dec 2 2010, 10:07)

Вы на осциллографе увидите рассогласование скорости в 1-2 % ?
А вот модем уже не поймет при такой неточности.
Посчитайте свой делитель в контроллере и посмотрите точность передачи. На сколько Ваши 115200 отклоняются от номинала.
Кстати какой кварц стоит на контроллере ?
А еще лучше попробуйте общение с модемом на скорости у которой отклонение 0.5%
Раз общаетесь с модемом гипертерминалом - пообщайтесь и с контроллером - посмотрите получится ли.
Можно пробовать то что советуют и найти причину, а можно упереться и продолжать настаивать на своей правоте.
На своей правоте я не особо настаиваю, потому что мало что понимаю в схемотехнике. Но проблему я решил и она оказалась не такой уж большой. Просто есть нюансы про которые не пишут в мануалах, и что самое обидное не говорят об этом на форумах, в том числе и здесь, а я скажу. Ребята, действительно достаточно трех ног: RxD, TxD, GND. Для согласования уровней логики нужно взять + c VDD_EXT модема, а не с платы EVB. Следующий момент, отключите SLEEP MODE в модеме. Это команда AT&D(параметр посмотрите в доке по командам). Сохраните изменения. Можно отключить DCD, если вы его не будете контролировать. Эхо можете не отключать. И самое главное в модем команды передавайте с задержкой. Я поставил 1ms, можно поэкспериментировать, т.е. найти оптимальный вариант. А по поводу отключения буферных микросхем на EVB.Их можно не отключать, результат от этого не меняется.
Спасибо всем, кто пытался помочь в решении моей проблемы.
Цитата(SidAlex @ Dec 2 2010, 11:16)

И самое главное в модем команды передавайте с задержкой. Я поставил 1ms, можно поэкспериментировать, т.е. найти оптимальный вариант.
А еще можно почитать форум - потому как все это давно обсуждалось. В частности, задержки нужны лишь тогда, когда используется автоопределение скорости, которое по возможности рекомендуется отключать.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.