Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подключение к AT91SAM GSM-модема в режиме full-modem
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Aurochs
Очень нужна помощь специалиста. Помогите пожалуйста!

Подключаю GSM модем на USART1 AT91SAM7X256 в режиме full-modem (прописываю 3 в поле USART_MODE регистра US_MR). Все работает прекрасно до того момента, когда устанавливается CSD-соединение (соединение с другим модемом через GSM-сеть). С этого момента AT91SAM начинает игнорировать все поступающие с модема данные и так продолжается до тех пор, пока связь не будет прервана.

Схема подключения:
Модем ARM
RX <--> TX
TX <--> RX
DTR <--> DTR
DCD <--> DCD
DCD <--> DSR (у модема нет выхода DSR)
RTS <--> RTS
CTS <--> CTS
RI <--> RI

Выходные для ARM сигналы DTR и RTS все время установлены в активное состояние (0).
Если же запрограммировать USART1 на нормальный режим (прописать 0 в поле USART_MODE регистра US_MR), вышеописанный эффект исчезает. Но обязательно нужна аппаратная поддержка управления потоком, поэтому такой режим не подходит...

Заранее благодарен за любую помощь.
_dem
Уточните, какой именно модем и что происходит при установке соединения на линиях USART (в частности, CTS) ?
Aurochs
Цитата(_dem @ Oct 31 2007, 14:36) *
Уточните, какой именно модем и что происходит при установке соединения на линиях USART (в частности, CTS) ?

Модем - SIM300C
CTS=0 DCD=0 DTR=0 RTS=0
Из ARMa в модем при этом данные идут нормально и тот их передает в эфир.
С другого конца модем тоже принимает данные и передает их в ARM, но тот их почему-то игнорирует...
_dem
т.е. на RXD АРМ-а данные есть, а он их не видит ?
Aurochs
Цитата(_dem @ Oct 31 2007, 15:06) *
т.е. на RXD АРМ-а данные есть, а он их не видит ?

Да, именно так. Я только прописываю режим NORMAL в US_MR и ARM начинает читать данные.
MALLOY2
Незнаю что за модем может я и ошибаюсь но схема подключения
Код
Схема подключения:
Модем ARM
RX <--> TX
TX <--> RX
DTR <--> DTR
DCD <--> DCD
DCD <--> DSR (у модема нет выхода DSR)
RTS <--> RTS
CTS <--> CTS
RI <--> RI
неправельня должно быть

Схема подключения:
Код
Модем       ARM
RX    <--> TX
TX    <--> RX

DTR  <--> DSR

RTS  <--> CTS
CTS  <--> RTS

С остальными надо доку на модем
amw
Цитата(MALLOY2 @ Nov 1 2007, 08:51) *
Незнаю что за модем может я и ошибаюсь но схема подключения
Код
Схема подключения:
Модем ARM
RX <--> TX
TX <--> RX
DTR <--> DTR
DCD <--> DCD
DCD <--> DSR (у модема нет выхода DSR)
RTS <--> RTS
CTS <--> CTS
RI <--> RI
неправельня должно быть

Схема подключения:
Код
Модем       ARM
RX    <--> TX
TX    <--> RX

DTR  <--> DSR

RTS  <--> CTS
CTS  <--> RTS

С остальными надо доку на модем

Ну теоретически может быть и так. Надо доку на модем читать.
Однако я не встречал модемов у которых RTS выход, а CTS вход.
Обычно пины управления последовательного интерфейса напрямую подключаются к хост машине.
И, как я понимаю, у SAM эти пины такие-же как и в компьютере.
Так?
_dem
1. какие-то сигналы UART меняются при переходе в дата-режим ?
2. про схему MALLOY2 правильно подметил

скорее всего, при переходе в режим данных модем как-то меняет режим работы (сам переходит в режим "полного" уарта и сбрасывает какую-то из линий)
Aurochs
Цитата(_dem @ Nov 1 2007, 11:30) *
1. какие-то сигналы UART меняются при переходе в дата-режим ?


Из зафиксированных изменений - переход DCD из 1 в 0. Но парадокс в том, что даже если просто посадить DCD на землю без установки коннекта, то идет нормальный обмен в обе стороны wacko.gif

Цитата(_dem @ Nov 1 2007, 11:30) *
скорее всего, при переходе в режим данных модем как-то меняет режим работы (сам переходит в режим "полного" уарта и сбрасывает какую-то из линий)


Не исключено, что при установке связи имеют место какие-то аналоговые эффекты, т.к. для платы в этот момент существенно меняется режим работы - модем жрет по полной программе. Но в таком случае все равно непонятно, почему это проявляется только в режиме full modem.
_dem
попробуйте после установления соединения переинициализировать USART в "полном" режиме
Aurochs
Цитата(_dem @ Nov 2 2007, 16:10) *
попробуйте после установления соединения переинициализировать USART в "полном" режиме

Прошу меня извинить за длительную паузу, не было возможности проверить...
К сожалению результат тот же: как только перепрограммирую US_MR, данные перестают читаься.
Мистика какая-то. В документации про режим full-modem всего пол-страницы, которые я уже до дыр зачитал...
_dem
ну тогда код в студию - будем смотреть
Master
Цитата(amw @ Nov 1 2007, 12:19) *
Ну теоретически может быть и так. Надо доку на модем читать.
Однако я не встречал модемов у которых RTS выход, а CTS вход.
Обычно пины управления последовательного интерфейса напрямую подключаются к хост машине.
И, как я понимаю, у SAM эти пины такие-же как и в компьютере.
Так?
Теоретически?? Почитайте про RS-232, внимательно проверьте направление на пинах модема, а потом уже пробуйте настраивать разные режимы.
И нет здесь никакой мистики biggrin.gif Вы не первый, вы не последний, кто подключает модем к последовательному порту.
А ещё почитайте соответствующий форум здесь. Там по SIMCOM полно инфы.
Удачи!
Aurochs
Уважаемые!
Хочу хоть как-то вразумительно закончить эту ветку по пошествии полугода.
Для тех, кто ее еще будет смотреть, имею честь сообщить следующее.
Мистики здесь действительно никакой нет. А дело все в том, что м/к семейств AT91SAM7S и AT91SAM7X очень проблематично использовать в режимах full-modem и hardware handshake. Если же вам все-таки придется когда-либо это делать, то внимательно изучите Errata для этих семейств! Причем самой последней версии. На данный момент это можно сделать здесь http://www.atmel.com/dyn/resources/prod_do...nts/doc6120.pdf
Мне удалось добиться относительно безошибочной работы только путем понижения скорости обмена между м/к и модемом до значения скорости эфирной передачи.
Всем удачи!
etoja
Переход сигнала DCD в ноль говорит о том, что модем обнаружил несущую.
При работе в эфире модем может потреблять до 8 Ватт в импульсе.
Посмотрите осциллографом на сигнал CTS (выход модема), который используется модемом для притормаживания процессора в смысле выдачи байт в RS232.
Проверьте число стоповых бит в настройках RS232. Обычно модем хочет 1 стоповый бит, а процессор может быть настроен на 2, тогда обмен будет зависать при большом потоке байт в режиме CSD, а при обмене AT-командами - нет.

PS: используйте процессоры Philips/NXP и компилятор GreenHills.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.