Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > приём ответа от gsm модема


Автор: supercelt 19.3.2017, 16:14
Всем привет! Столкнулся с такой проблемой. Есть модем siemens c35i, плата с stm32f100ret6b. 
Суть в том, что я посылаю команду на модем

Код

char Buffer_CSCA[] = "AT+CSCA?\r";
GSM_COMM_SEND_SMS_SERVICE();

void GSM_COMM_SEND_SMS_SERVICE(){
        DMA1_Channel4->CMAR = (uint32_t)Buffer_CSCA;
        DMA1_Channel4->CNDTR = sizeof(Buffer_CSCA);
        DMA1_Channel4->CCR |= DMA_CCR4_EN;
}


команда ушла, получаю ответ

Код

void USART1_IRQHandler(void){ //Прерывание USART1
        if(USART1->SR & USART_SR_RXNE){ //Если прерывание вызвано по приёму USART1
                USART1->SR &= ~USART_SR_RXNE; //Сбрасываем флаг приёма USART1
                Buffer_Receive[i++] = USART1->DR;
        }
}


То есть я просто набиваю массив, что бы на первом этапе пока посмотреть что приходит. В отладчике смотрю переменную Buffer_Receive приходит ответ как положено, примерно вот такой 

Код

\r\nAT+CSCA?\r\nAT+CSCA: 141, "+7911xxxxxxx", 20\r\nOK\r\n


А теперь прикол. Я не посылаю на модем команду, а жду звонок. Звоню на модем, а вместо \r\nRING\r\n в переменной оказывается вот что "Я0Еы". То есть просто четыре непонятных символа приходит при каждом ring. Одни и те же. Что это может быть?

Автор: xvr 20.3.2017, 15:30
А вы что ниюудь вообще до того, как ждать 'RING' в модем посылали? Возможно у него autobaund не сработал? (Если он конечно вообще есть)


Автор: supercelt 20.3.2017, 21:11
ничего не посылал. Но мысль хорошая, надо проверить

Автор: supercelt 20.3.2017, 21:35
xvr Вы гений!. И правда, если при инициализации модема отправить туда АТ, то это как раз настраивает autobaud

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)