Bil 0 19 августа, 2017 Опубликовано 19 августа, 2017 · Жалоба Добрый день. Имеется китайская платка с обвесом sim800l. В целом, все, что хотел получить от модуля через stm32f1x, получил. Осталось заставить модуль уходить в сон когда ему нечего делать. Судя по амперметру, модуль вполне уменьшает потреблние вдвойку через 5 сек неактивности в режиме "AT+CSCLK=2". Но! Модуль непрерывно мечет байты 0x11, 0x13 на вход контроллера по USART. Без сна все работает идеально, никакой левоты, после вывода из сна все также работает корректно. Что за мусор идет в порт во сне? Наводки от отключенного передатчика? Пробовал подсунуть резистор 10к с RX контроллера на землю. Никого не впечатлил :) Есть ли ответ/идеи по подавлению мусора? Спасибо. PS. Мусор не дает перевести контроллер в сон. Работе, в принципе, не мешает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bil 0 20 августа, 2017 Опубликовано 20 августа, 2017 · Жалоба 11h - 13h это XON - XOFF. Откуда они берутся по-прежнему не понятно. Флагов ошибок нет. Отключить управление потоком на stm32, насколько я понимаю, нельзя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 22 августа, 2017 Опубликовано 22 августа, 2017 · Жалоба Пробуждайте МК через линию uart_RI, а от uart отвяжите пробуждение. Или на stm это нельзя сделать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bil 0 22 августа, 2017 Опубликовано 22 августа, 2017 · Жалоба Можно. Но. Чтение все равно придется сделать по прерыванию. А это будет будить контроллер. По опросу, как оказалось, не успеваю вычитывать. Да и безобразно это по логике. Через dma буду постоянно забивать буфер этими xon'ами. Попробую уводить в сон sim800 по первому варианту - через dtr. Там прозрачнее пробуждение и, судя по описанию, другой вариант мониторинга порта для сна. Может он совсем заснет... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bil 0 23 августа, 2017 Опубликовано 23 августа, 2017 · Жалоба Подключил DTR. SIM800 стала адекватнее просыпаться. Все необходимое работает. Ксоны-ксофы так и сыпятся. Забил. При извлечении множу на ноль. Получилось не увеличить заметно потребление. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
batuev.b 0 24 августа, 2017 Опубликовано 24 августа, 2017 · Жалоба Подключил DTR. SIM800 стала адекватнее просыпаться. Все необходимое работает. Ксоны-ксофы так и сыпятся. Забил. При извлечении множу на ноль. Получилось не увеличить заметно потребление. Странно, все это. А у вас включен CMUX? И какая у вас прошивка? Можете привести весь АТ лог, чтобы я воспроизвел у себя на отладке (на SIM800H)? Я себя я этого не вижу, и это ненормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bil 0 25 августа, 2017 Опубликовано 25 августа, 2017 · Жалоба Настройка модуля. Условно. Контроль удален. Все выполняется без ошибок Put_Modem ( "AT+IFC=1,1", 0, TRUE ); Put_Modem ( "AT+IPR=4800", 0, TRUE ); Put_Modem ( "ATE0", 0, TRUE ); Put_Modem ( "ATV1", 0, TRUE ); Put_Modem ( "AT+CMEE=1", 0, TRUE ); Put_Modem ( "AT+CLIP=1", 0, TRUE ); Put_Modem ( "AT+CMGF=0", 0, TRUE ); Put_Modem ( "AT+CSCS=\"UCS2\"", 0, TRUE ); Put_Modem ( "AT+CSCB=1", 0, TRUE ); Put_Modem ( "AT+CPMS=\"ME_P\",\"ME_P\",\"ME_P\"", 0, TRUE ); Put_Modem ( "AT+CMGDA=6", 0, TRUE ); Put_Modem ( "AT+CNMI=3,2", 0, TRUE ); Put_Modem ( "AT+DDET=1,100,0,0", 0, TRUE ); Put_Modem ( "AT+CSGS=0", 0, TRUE ); Put_Modem ( "AT+CNETLIGHT=0", 0, TRUE ); Put_Modem ( "AT+CSCLK=1", 0, TRUE ); Перевод модуля в спать void Set_Modem_Low_Power ( void ) { GPIO_WriteBit ( GPIOA, GPIO_Pin_5, Bit_SET ); } Вывод модуля из спать void Set_Modem_Std_еPower ( void ) { uint32_t Time = RTC_GetCounter (); GPIO_WriteBit ( GPIOA, GPIO_Pin_5, Bit_RESET ); while ( ( RTC_GetCounter () - Time ) < 2 ); } Извлечение байта void USART1_IRQHandler ( void ) { if ( USART_GetFlagStatus ( USART1, USART_FLAG_RXNE ) != RESET ) { uint8_t Byte = USART_ReceiveData ( USART1 ); if ( ( Byte != 0x11 ) && ( Byte != 0x13 ) ) { *USART_Write_Pointer++ = Byte; if ( USART_Write_Pointer == ( USART_Buffer + USART_BUFFER_SIZE ) ) USART_Write_Pointer = USART_Buffer; } } } Настройка околомодульного железа GPIO_StructInit ( &GPIO_InitStruct ); GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init ( GPIOA, &GPIO_InitStruct ); GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10; GPIO_Init ( GPIOA, &GPIO_InitStruct ); USART_StructInit ( &USART_InitStruct ); USART_InitStruct.USART_BaudRate = 4800; USART_InitStruct.USART_WordLength = USART_WordLength_8b; USART_InitStruct.USART_StopBits = USART_StopBits_1; USART_InitStruct.USART_Parity = USART_Parity_No; USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_Init ( USART1, &USART_InitStruct ); USART_Cmd ( USART1, ENABLE ); USART_ITConfig ( USART1, USART_IT_RXNE, ENABLE ); Сейчас не могу сказать версию, забыл посмотреть. Но. Заменил позапрошлогодний модуль 800l на модуль, купленный в этом году. Никакой разницы. Сейчас подключил RI от модуля. Перед переводом в сон контроллера перевожу ноги rx и tx в вывод и верхнее состояние. Чтобы не прерываться от этих ксонов. По прерыванию от RI перенастраиваю ноги в правильный режим и включаю тактирование usart контроллера. С удивлением вижу, что ничего не теряю. Для этого, на всякий, максимально понизил скорость порта. Задачу решил. От ксонов не избавился. Что-то я с портом контроллера или модулем не доделал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serglg 0 26 августа, 2017 Опубликовано 26 августа, 2017 (изменено) · Жалоба XON/XOFF - это ведь программное управление потоком? Модуль настроен так, что регулярно сообщает - "я готов к приему". Ну так надо в настройках его порта сказать - "без контроля потока". Или таких настроек нет? Изменено 26 августа, 2017 пользователем serglg Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bil 0 26 августа, 2017 Опубликовано 26 августа, 2017 (изменено) · Жалоба Зачем он сообщает при "отключенном" по даташиту порте? Модуль кастрат. Аппаратного управления сделать не могу. Без контроля модуль может, контроллер - нет. Да и не знаю что из этого вышло бы. С другой стороны, почему контроллер не режет управляющие символы?.. Revision:1418B04SIM800L24 Изменено 26 августа, 2017 пользователем Bil Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vit496 0 28 августа, 2017 Опубликовано 28 августа, 2017 · Жалоба Отключить управление потоком на stm32, насколько я понимаю, нельзя. Не понимаю этой фразы. Как можно включить или выключить в самом контроллере программное управление потоком (software flow)? Оно же ведь в программе (пользователя)? Попробуйте AT+IFC=0,0 или 2,2 (при 2,2 нужно на RTS подать 0). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CADiLO 12 28 августа, 2017 Опубликовано 28 августа, 2017 · Жалоба Мыши плакали, кололись, но продолжали жрать кактус. Не надоело еще возиться с SIM800L который был предназначен неизвестно кому на китайском рынке и неизвестно с чем внутри. Почему у меня на SIM800H и SIM800С все нормально со сном? Ничего в порт не плюет и потребление меньше миллиампера. Специально поставил модули на отладку и перепроверил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 28 августа, 2017 Опубликовано 28 августа, 2017 · Жалоба Я тоже на трех модемах 900 серии D и R проверил, проблем таких не было ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bil 0 28 августа, 2017 Опубликовано 28 августа, 2017 · Жалоба Не понимаю этой фразы. Как можно включить или выключить в самом контроллере программное управление потоком (software flow)? Оно же ведь в программе (пользователя)? В программе оно когда от порта используется только приемо/передатчик. Попробуйте AT+IFC=0,0 или 2,2 (при 2,2 нужно на RTS подать 0). 2.2 нельзя, китайский модуль sim800l не имеет соответствующих дырок, иначе вопрос и не появился бы. А вот 0, 0 ЕЩЕ раз попробовал. И офигел, и контроллер все понимал, и ксоны кончились... С этого, от безысходности, начинал. Похоже, я настраивал поток в начальный затуп, так как из последних изменений только начальная пауза. Ибо положенных мне после старта RDY и других URC я в отладчике так и не увидел. Слишком медлеено он стартует, походу. Натолкнула на паузу странная работа с оповещением о смс. Под отладчиком приходят ожидаемые +CMT. А без отладчика (в реале) присовывал мне +CMTI. В листинге видно сколько всего надо сделать до управления форматом оповещения. Только с большой паузой на старте модем адекватно съел команды когда они ему приходили без паузы отладчика. Кстати, про сон. Общее потребление приблуды в работе 27мА. При засыпании sim потребление падает до 18мА. При засыпании контроллера - до 13мА. Питая контроллер отлельно, определил, что он жрет в работе около 8мА. То есть, засыпает до 3мА. А вот sim никак на заявленный 1мА близко не выходит. Кроме них есть два dc-dc и два делителя на пол мА в сумме. Всем спасибо, все , что хотел, получил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CADiLO 12 28 августа, 2017 Опубликовано 28 августа, 2017 · Жалоба >>>А вот sim никак на заявленный 1мА близко не выходит. прекрасно выходит, приезжайте в гости - покажу. дергаем DTR - спать! UART контроллера в третье состояние чтобы стоповый бит не висел на приеме - порт модуля должен быть в это время вообще отключен и не иметь вытекающего тока. и контролируем RI по прерыванию выжидаем положеные 50 миллисекунд, просыпаемся и начинаем общение читайте доки и используйте нормальные модули и прошивки кстати есть хитрости которые позволяют на SIM800C получить 0.8 мА без потери сети, а на SIM868 - 0.45 мА но это для тех кто не только доки на модуль прочел, а и апнотесы и даташит на чипсет проверено на штатных релизных прошивках - таки работает. проверялось на EVB KIT и потом на PIC24 и NUC472 и NUC240 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artemkad 88 29 августа, 2017 Опубликовано 29 августа, 2017 · Жалоба UART контроллера в третье состояние чтобы стоповый бит не висел на приеме - порт модуля должен быть в это время вообще отключен и не иметь вытекающего тока. Можно так не извращаться. Даже если использована подтяжка на стороне МК выход модуля по любому в единице. Т.е. токов там или нет или малозаметны на уровне единиц-десятков мкА. Больше вопросов возникает если используется 5В МК и какой нибудь веселый преобразователь уровня который может жрать на уровне модуля... и контролируем RI по прерыванию выжидаем положеные 500 миллисекунд, просыпаемся и начинаем общение 0,5с по прерыванию? Точно со временем не ошиблись? Это откуда такая величина? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться