Перед описанием неисправности пару слов о правильной работе моего изделия.
Итак, имеем спаянные на заводе платы с модулем SIM300DZ (1008B14SIM300D32_SST34HF3284). После прошивки микроконтроллера включаю устройство для проверки, при этом работа с модулем проходит следующим образом:
1. Включение модуля через PWRKEY (контроль STATUSа);
2. Инициализация модуля;
3. Проверка наличия сим-карты, считывание записной книжки;
4. Ожидание регистрации в сети (если нет, то по таймауту в 30с выкл. модуль, пауза 2с и в п.1.);
5. Дальнейшая работа (звонки, передача данных).
На данный момент из 30 шт. проверенных таким образом приборов с первого раза правильно заработали только 20.
Остальные 10 непонятно ведут себя с п.4:
4. Ожидание регистрации в сети. Модуль не регистрируется в сети, постоянно идет обмен командами
Код
AT+CPAS // запрос на регистрацию
+CPAS: 2 // модуль не готов отвечать на инструкции
OK
AT+CPAS
+CPAS: 2
OK
+CPAS: 2 // модуль не готов отвечать на инструкции
OK
AT+CPAS
+CPAS: 2
OK
Выходит таймаут в 30с, после чего микроконтроллер должен отключить модуль через PWRKEY, затем пауза 2с и повторить все с п.1.
НО! модуль не реагирует на операцию выключения через PWRKEY, при этом светодиод NET мигает 1 раз в 3с (найдена GSM сеть).
Фокус в том, что если снять питание в ручную и снова подать питание, то модуль начинает _правильно_ работать с этой попытки и впредь такое больше не повторяется. Пробовал включить/выключить модуль раз 10 подряд - все равно работает правильно. Если я отключаю антенну и повторяю эксперимент в надежде повторить глюк по истечению таймаута, то все равно модуль правильно отключается и затем снова правильно включается.
Т.е. этот глюк появляется в 30% устройств и только один раз при первом включении.
Железо.
SIM300D питается от 4В, МК от 3.3В, согласование сигналов TxD, DTR, RTS через резисторы 240 Ом, PWRKEY включен через транзистор с открытым коллектором, до включения и перед выключением модуля выводы МК переводятся в третье состояние.