Добрый день!
Возникла такая проблема - достаточно давно не делали никаких устройств с GSM/GPRS-модулями, а тут понадобилось снова. Решили взять SIM800C, как дешевый и экономичный. В статьях писали о приемственности с более ранними SIM900, так что, решили использовать старую обвзязку, проверенную еще во времена Quectel M10 (тем более, что было указано напряжение питания модуля примерно такое же)
Собрали схему. Написал программу инициализации:
Код
GPIOA->ODR |=0x0802; //Power on for GSM and set POWERKEY
os_dly_wait(500);
GPIOA->ODR &=~0x1000; //Reset RTS
GPIOB->ODR &=~0x0080; //Reset DTR
GPIOA->ODR &=~(1<<11); //Reset POWERKEY
os_dly_wait(1000);
GPIOA->ODR |=(1<<11); //Set POWERKEY
while (GPIOB->IDR &0x20);
send_string_buff3("AT\r");
Реализуется такой алгоритм:
1. Включаем питание модема и устанавливаем на входе PowerKey логическую единицу
2. Ждем 500 мс
3. Сбрасываем PowerKey, DTR и RTS в нуль
4. Ждем 1с
5. Устанавливаем PowerKey в единицу
6. Ждем установку логической единицы на линии Status (на схеме стоит буферный инвертор на транзисторе, поэтому ждем, когда на нужном входе будет нуль)
7. Отправляем команду "AT"
Модем устанавливает на выходе Status логическую единицу, но не откликается на команду AT - от модуля не поступает никаких сигналов и UART не принимает никаких байтов - даже мусора.
Пробовал различные скорости - более-менее стандартные 115200 и 9600, так 19200 - до кучи - ответа нет.
Может ли это быть связано с тем, что на модуль подаются сигналы без делителей - 3,3В? Может быть, UART модуля пожгли?
Манипуляции с RTS и DTR, доставшиеся в наследство со времен SIM300 убирал, но разницы не было.
Для управления используется микроконтроллер STM32F151C6
Модем: SIM800C S2-10688-Z1L1J
Заранее спасибо за ответы.