Перейти к содержанию
    

Подключение к AT91SAM GSM-модема в режиме full-modem

Очень нужна помощь специалиста. Помогите пожалуйста!

 

Подключаю 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), вышеописанный эффект исчезает. Но обязательно нужна аппаратная поддержка управления потоком, поэтому такой режим не подходит...

 

Заранее благодарен за любую помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уточните, какой именно модем и что происходит при установке соединения на линиях USART (в частности, CTS) ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уточните, какой именно модем и что происходит при установке соединения на линиях USART (в частности, CTS) ?

Модем - SIM300C

CTS=0 DCD=0 DTR=0 RTS=0

Из ARMa в модем при этом данные идут нормально и тот их передает в эфир.

С другого конца модем тоже принимает данные и передает их в ARM, но тот их почему-то игнорирует...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. на 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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Незнаю что за модем может я и ошибаюсь но схема подключения

Схема подключения:
Модем 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 эти пины такие-же как и в компьютере.

Так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. какие-то сигналы UART меняются при переходе в дата-режим ?

2. про схему MALLOY2 правильно подметил

 

скорее всего, при переходе в режим данных модем как-то меняет режим работы (сам переходит в режим "полного" уарта и сбрасывает какую-то из линий)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. какие-то сигналы UART меняются при переходе в дата-режим ?

 

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

 

скорее всего, при переходе в режим данных модем как-то меняет режим работы (сам переходит в режим "полного" уарта и сбрасывает какую-то из линий)

 

Не исключено, что при установке связи имеют место какие-то аналоговые эффекты, т.к. для платы в этот момент существенно меняется режим работы - модем жрет по полной программе. Но в таком случае все равно непонятно, почему это проявляется только в режиме full modem.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробуйте после установления соединения переинициализировать USART в "полном" режиме

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробуйте после установления соединения переинициализировать USART в "полном" режиме

Прошу меня извинить за длительную паузу, не было возможности проверить...

К сожалению результат тот же: как только перепрограммирую US_MR, данные перестают читаься.

Мистика какая-то. В документации про режим full-modem всего пол-страницы, которые я уже до дыр зачитал...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну теоретически может быть и так. Надо доку на модем читать.

Однако я не встречал модемов у которых RTS выход, а CTS вход.

Обычно пины управления последовательного интерфейса напрямую подключаются к хост машине.

И, как я понимаю, у SAM эти пины такие-же как и в компьютере.

Так?

Теоретически?? Почитайте про RS-232, внимательно проверьте направление на пинах модема, а потом уже пробуйте настраивать разные режимы.

И нет здесь никакой мистики :biggrin: Вы не первый, вы не последний, кто подключает модем к последовательному порту.

А ещё почитайте соответствующий форум здесь. Там по SIMCOM полно инфы.

Удачи!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемые!

Хочу хоть как-то вразумительно закончить эту ветку по пошествии полугода.

Для тех, кто ее еще будет смотреть, имею честь сообщить следующее.

Мистики здесь действительно никакой нет. А дело все в том, что м/к семейств AT91SAM7S и AT91SAM7X очень проблематично использовать в режимах full-modem и hardware handshake. Если же вам все-таки придется когда-либо это делать, то внимательно изучите Errata для этих семейств! Причем самой последней версии. На данный момент это можно сделать здесь http://www.atmel.com/dyn/resources/prod_do...nts/doc6120.pdf

Мне удалось добиться относительно безошибочной работы только путем понижения скорости обмена между м/к и модемом до значения скорости эфирной передачи.

Всем удачи!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Переход сигнала DCD в ноль говорит о том, что модем обнаружил несущую.

При работе в эфире модем может потреблять до 8 Ватт в импульсе.

Посмотрите осциллографом на сигнал CTS (выход модема), который используется модемом для притормаживания процессора в смысле выдачи байт в RS232.

Проверьте число стоповых бит в настройках RS232. Обычно модем хочет 1 стоповый бит, а процессор может быть настроен на 2, тогда обмен будет зависать при большом потоке байт в режиме CSD, а при обмене AT-командами - нет.

 

PS: используйте процессоры Philips/NXP и компилятор GreenHills.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...