реклама на сайте
подробности

 
 
> SIM800l и режим энергосбережения
Bil
сообщение Aug 19 2017, 17:21
Сообщение #1





Группа: Участник
Сообщений: 7
Регистрация: 19-08-17
Пользователь №: 98 880



Добрый день.
Имеется китайская платка с обвесом sim800l.
В целом, все, что хотел получить от модуля через stm32f1x, получил.
Осталось заставить модуль уходить в сон когда ему нечего делать.
Судя по амперметру, модуль вполне уменьшает потреблние вдвойку через 5 сек неактивности в режиме "AT+CSCLK=2".
Но! Модуль непрерывно мечет байты 0x11, 0x13 на вход контроллера по USART.
Без сна все работает идеально, никакой левоты, после вывода из сна все также работает корректно.
Что за мусор идет в порт во сне? Наводки от отключенного передатчика? Пробовал подсунуть резистор 10к с RX контроллера на землю. Никого не впечатлил sm.gif
Есть ли ответ/идеи по подавлению мусора?
Спасибо.
PS. Мусор не дает перевести контроллер в сон. Работе, в принципе, не мешает.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Bil
сообщение Aug 25 2017, 18:25
Сообщение #2





Группа: Участник
Сообщений: 7
Регистрация: 19-08-17
Пользователь №: 98 880



Настройка модуля. Условно. Контроль удален. Все выполняется без ошибок
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 контроллера. С удивлением вижу, что ничего не теряю. Для этого, на всякий, максимально понизил скорость порта.
Задачу решил. От ксонов не избавился. Что-то я с портом контроллера или модулем не доделал.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Bil   SIM800l и режим энергосбережения   Aug 19 2017, 17:21
- - Bil   11h - 13h это XON - XOFF. Откуда они берутся по-пр...   Aug 20 2017, 08:39
|- - vit496   Цитата(Bil @ Aug 20 2017, 12:39) Отключит...   Aug 28 2017, 08:07
- - Mysteo   Пробуждайте МК через линию uart_RI, а от uart отв...   Aug 22 2017, 12:01
- - Bil   Можно. Но. Чтение все равно придется сделать по пр...   Aug 22 2017, 16:27
- - Bil   Подключил DTR. SIM800 стала адекватнее просыпаться...   Aug 23 2017, 18:11
|- - Цырен.   Цитата(Bil @ Aug 23 2017, 21:11) Подключи...   Aug 24 2017, 09:32
- - serglg   XON/XOFF - это ведь программное управление потоком...   Aug 26 2017, 03:52
- - Bil   Зачем он сообщает при "отключенном" по д...   Aug 26 2017, 07:46
- - CADiLO   Мыши плакали, кололись, но продолжали жрать кактус...   Aug 28 2017, 13:34
- - Mysteo   Я тоже на трех модемах 900 серии D и R проверил, ...   Aug 28 2017, 14:29
- - Bil   Цитата(vit496 @ Aug 28 2017, 11:07) Не по...   Aug 28 2017, 18:57
- - CADiLO   >>>А вот sim никак на заявленный 1мА близ...   Aug 28 2017, 19:46
|- - ArtemKAD   Цитата(CADiLO @ Aug 28 2017, 22:46) UART ...   Aug 29 2017, 05:37
- - CADiLO   >>>0,5с по прерыванию? Точно со временем ...   Aug 29 2017, 06:24
- - ArtemKAD   Цитата(CADiLO @ Aug 29 2017, 09:24) Only ...   Aug 29 2017, 06:58


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 18:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016