Полная версия этой страницы:
MC52i STM32Discover не дружат
Здравствуйте ,прошу помощи . Суть проблемы такова есть GSM модем PC и STM32VL DISCOVER подключаю по RX TX и GND модем CINTERION MC52i к компьютеру, шлю АТ команды ответ получаю. Компьютер подключаю к STM32 (stm шлет команды "ATE0\r" через функцию Send_Str(port,*data); ) обмен происходит пк получает посылку, а контролер прерывается на приход байта . Ну , а когда соединяю модем с stm то ответ я не получаю. Подскажите в чем проблема?
RXD и TXD в кабеле STM32 - MC52i поменяй местами
EuroMobile
Mar 7 2013, 08:46
В описании интерфейса 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
или в картинках
Нажмите для просмотра прикрепленного файлаУказаны направления подключения сигнальных линий.
Нажмите для просмотра прикрепленного файлаБуквенное обозначение I/O вход выход данных.
Также всегда можно проверить тестером или осциллографом вход это или выход.
drapoz
Mar 18 2013, 14:18
Я все прекрасно понимаю поменяй rx tx местами да и по мануалу как подключить rs232 я видел , но остается загадочное явление (шнур я использую один и тот же три повода RX TX GND) PC-CINTERION эта связь работает, PC-STM32 работает, а эта CINTERION-STM32 не работает. RX TX я менял местами не оно.
alexdos
Mar 18 2013, 14:27
Цитата(drapoz @ Mar 18 2013, 18:18)

Я все прекрасно понимаю поменяй 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?
drapoz
Mar 18 2013, 14:33
Нет я подключаю через ST232CN преобразователь уровней.
alexdos
Mar 18 2013, 14:40
ST232CN имеет "SUPPLY VOLTAGE RANGE: 4.5 TO 5.5V", возможно Вы запитали его автоматом от 3.3 вольт (а реально там 3 вольта), при этом получилось что для PC хватает уровня сигналов, а для MC52i не хватает. Нужно или применять 3-х вольтовый преобразователь (MAX3232) или согласовать уровни при 5-ти вольтовой запитке ST232CN.
drapoz
Mar 18 2013, 14:57
Спасибо за подсказку но я сделал эксперемент у меня есть вторая отладочная плата (STM32F103VET6(development board ) ) у нее на борту стоит два USART разьема с готовым преобразователем , но проблема осталась та же что и с дискавери.
alexdos
Mar 18 2013, 15:06
Есть еще 2 варианта.
1. Если модем стоит на автоопределении скорости, то вроде для "синхронизации" модему нужно послать изначально "AT\r"
2. Функция Send_Str(port,*data); предназначена для передачи строк, а значит она передаёт "конец строки" (символ \0) а модему это может и не понравится. Проверьте на наличие в конце строки (комманды) символа '\0'.
drapoz
Mar 18 2013, 15:24
Модему я через 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[i]);
}
}
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);
}
}
MALLOY2
Mar 18 2013, 15:40
А сигналы модема DSR и CTS правильные или в вуздухе висят

?
drapoz
Mar 18 2013, 15:56
RTS +CTS и DCD+DSR+DTR
alexdos
Mar 18 2013, 16:04
По отладчику байты уходят, а физически проверяли есть ли ответ от модема ? Или ориентируетесь исключительно на прерывание ?
drapoz
Mar 18 2013, 16:10
Когда с PC через терминалку шлю команды то модем отвечает на все команды которые шлеш, а вот с контролера я пока ориентируюсь только по отладчику, ну и без бряков по светодиодах.
alexdos
Mar 18 2013, 16:16
может иметь место как "не отвечает модем", так и на работает прерывание. Проверте физически, есть ли ответ от модема. Ну это по крайней мере сузит область поиска.
drapoz
Mar 18 2013, 16:22
Да в этом то и проблема у меня нет лог. анализатора и осциллографа. Или я не так понял "Проверте физически"
alexdos
Mar 18 2013, 16:36
Но у Вас есть COM порт компьютера.
drapoz
Mar 18 2013, 16:45
Контролер с PC обмениваются здесь все работает терминалка ловит в HEX 41 54 0D. Может скорсть маловата или я уже не знаю что и думать.
drapoz
Mar 18 2013, 17:57
Тема закрыта проблема решылась ,тоненький волосок от провода коротил на корпус .Сопли они и в носе мешают.
Огромное спасибо все ,а особенно alexdos.
alexdos
Mar 18 2013, 18:28
Как не крути, а существует всего 2 поломки. Отсутствие контакта в нужном месте, и наличие контакта в не нужном. Рад что все разрешилось столь неожиданым способом.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.