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

MC52i STM32Discover не дружат

Здравствуйте ,прошу помощи . Суть проблемы такова есть GSM модем PC и STM32VL DISCOVER подключаю по RX TX и GND модем CINTERION MC52i к компьютеру, шлю АТ команды ответ получаю. Компьютер подключаю к STM32 (stm шлет команды "ATE0\r" через функцию Send_Str(port,*data); ) обмен происходит пк получает посылку, а контролер прерывается на приход байта . Ну , а когда соединяю модем с stm то ответ я не получаю. Подскажите в чем проблема?

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


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

В описании интерфейса ASC0 указано

 

MC52i is designed for use as a DCE. Based on the conventions for DCE-DTE connections it

communicates with the customer application (DTE) using the following signals:

Port TXD @ application sends data to the module’s TXD0 signal line

Port RXD @ application receives data from the module’s RXD0 signal line

или в картинках

post-53136-1362645495_thumb.png

Указаны направления подключения сигнальных линий.

post-53136-1362645482_thumb.png

Буквенное обозначение I/O вход выход данных.

 

Также всегда можно проверить тестером или осциллографом вход это или выход.

 

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


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

Я все прекрасно понимаю поменяй rx tx местами да и по мануалу как подключить rs232 я видел , но остается загадочное явление (шнур я использую один и тот же три повода RX TX GND) PC-CINTERION эта связь работает, PC-STM32 работает, а эта CINTERION-STM32 не работает. RX TX я менял местами не оно.

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


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

Я все прекрасно понимаю поменяй rx tx местами да и по мануалу как подключить rs232 я видел , но остается загадочное явление (шнур я использую один и тот же три повода RX TX GND) PC-CINTERION эта связь работает, PC-STM32 работает, а эта CINTERION-STM32 не работает. RX TX я менял местами не оно.

 

 

Ответьте на один вопрос, Вы прямо с STM32VL DISCOVER подключаете шнурок (3 провода RX TX GND) к разьёму D-sub RS-232 MC52i?

Изменено пользователем alexdos

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


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

ST232CN имеет "SUPPLY VOLTAGE RANGE: 4.5 TO 5.5V", возможно Вы запитали его автоматом от 3.3 вольт (а реально там 3 вольта), при этом получилось что для PC хватает уровня сигналов, а для MC52i не хватает. Нужно или применять 3-х вольтовый преобразователь (MAX3232) или согласовать уровни при 5-ти вольтовой запитке ST232CN.

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


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

Спасибо за подсказку но я сделал эксперемент у меня есть вторая отладочная плата (STM32F103VET6(development board ) ) у нее на борту стоит два USART разьема с готовым преобразователем , но проблема осталась та же что и с дискавери.

Изменено пользователем drapoz

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


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

Есть еще 2 варианта.

1. Если модем стоит на автоопределении скорости, то вроде для "синхронизации" модему нужно послать изначально "AT\r"

2. Функция Send_Str(port,*data); предназначена для передачи строк, а значит она передаёт "конец строки" (символ \0) а модему это может и не понравится. Проверьте на наличие в конце строки (комманды) символа '\0'.

Изменено пользователем alexdos

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


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

Модему я через PC задал 9600 baudrate, контролер 9600, яшлю команду "AT\r" но ответа нет . По отладчику шлются три символа

А отправляю я через свою функцию , вот она:

 

 

USART2_SendString((u8*)"AT\r",sizeof ("AT\r"));

void USART2_SendString(u8* data,u16 len)

{

u16 i;

 

for (i=0; i<len; i++){

USART2_SendByte(data);

}

}

 

void USART2_SendByte(u16 Data)

{

while (!(USART2->SR & USART_FLAG_TXE));

USART2->DR = (Data & (uint16_t)0x01FF);

 

}

 

Авот и оно ,не хочет вызываться.

void USART2_IRQHandler(void)

{

GPIO_SetBits(GPIOD,GPIO_Pin_8);//led for debug

if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)

{

in_bufer_2[counter_2]=USART2->DR;

 

if(in_bufer_2[counter_2]==0)

{

counter_2=0;

GPIO_SetBits(GPIOD,GPIO_Pin_9);//led for debug

}

counter_2++;

}

// Îáðàáîòêà ñîáûòèÿ TXE

if ( USART_GetITStatus(USART2, USART_IT_TXE) )

{

USART_ClearITPendingBit(USART2, USART_IT_TXE);

 

 

}

 

}

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


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

По отладчику байты уходят, а физически проверяли есть ли ответ от модема ? Или ориентируетесь исключительно на прерывание ?

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


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

Когда с PC через терминалку шлю команды то модем отвечает на все команды которые шлеш, а вот с контролера я пока ориентируюсь только по отладчику, ну и без бряков по светодиодах.

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


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

может иметь место как "не отвечает модем", так и на работает прерывание. Проверте физически, есть ли ответ от модема. Ну это по крайней мере сузит область поиска.

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


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

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

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

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

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

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

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

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

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

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