Наблюдаю такой эффект: в режиме TCP при посылке через AT+CIPSEND=size модем иногда наглухо бросает CTS, прекращает принимать команды (даже если игнорировать CTS) и лечится только перезапуском по питанию.
Эффект вероятностный и зависит от длины пакета данных, причем даже не в байтах, а от времени его передачи из контроллера. Например, на 57600 "критический" размер порядка 320 байт, а на 115200 - около 700. На 57600 пакет в 512 байт уже не передается практически никогда, 256 - не удалось поймать на зависании (вероятность маленькая?), а 320-384 раз на раз не приходится.
Вижу на осциллографе, что после команды CIPSEND модем опускает CTS примерно через 100 мс после начала передачи данных, и это время, похоже, не зависит от размера данных. Собственно, пересылка через UART к этому времени уже закончена. Потом в норме через несколько десятков мс (после передачи в GSM?) CTS возвращается обратно. А если зависло - не возвращается.
Это баг в прошивке или я что-то делаю не так?
1008B14SIM300D32_SST34HF3284
|