Добрый день,
Выкладываю решение данного вопроса.
1) для измерения напряжения питания ESP есть функция SDK
system_get_vdd33
однако, ее применение согласно документации требует изменения значения 107 байта:
-------------------------------
• system_get_vdd33 can only be called when TOUT pin is suspended.
• The 107th byte in esp_init_data_default.bin (0 ~ 127 bytes) is named as
vdd33_const. When TOUT pin is suspended, vdd33_const must be set as
0xFF, which is 255.
• The return value of system_get_vdd33 may be different in different Wi-Fi
modes, for example, in Modem-sleep mode or in normal Wi-Fi working mode.
-----------------------------------
2) есть еще одно решение - это свалка pvvx.
================-
3) есть еще оно решение, которое решает данную задачу без свалок и необходимости переписывая байта 107 в системной области параметров.
-------------------------
С помощью этого решения можно измерять напряжение питания ESP .
Для этого надо воспользоваться функцией int vdd33=readvdd33()
Эта функция есть в библиотеке libhy.a и используется в lua nodemcu.
функция возвращает значение напряжения питания.
===================
Например, у меня eSP-12 работает от батарейки через преобразователь.
Напряжение питания мультиметром =3.20 в
Напряжение измеренное данной функцией 3185..3170 мв
---------------------
Всем успехов.
===========================
Дополнение.
Для управления параметрами RFconfig я наприсал пару функций.
Вы можете использовать их например для включения режима АЦП изменяя содержимое ячейки 107 либо управлять опциями WIFI без создания нового файла
esp_init_data_default.bin
Для того чтобы изменения вступили в силу надо перезапустить ESP или войти и выйти из сна.
вот эти функции
Пример применения:
// включаем режим измерения питания
get_sectorRF( ) ;
sectorRF[107]=255;
set_sectorRF();
//включаем режим АЦП
get_sectorRF( ) ;
sectorRF[107]=33;
set_sectorRF();
---------------------------
Всем успехов и процветания.
Выкладываю решение данного вопроса.
1) для измерения напряжения питания ESP есть функция SDK
system_get_vdd33
однако, ее применение согласно документации требует изменения значения 107 байта:
-------------------------------
• system_get_vdd33 can only be called when TOUT pin is suspended.
• The 107th byte in esp_init_data_default.bin (0 ~ 127 bytes) is named as
vdd33_const. When TOUT pin is suspended, vdd33_const must be set as
0xFF, which is 255.
• The return value of system_get_vdd33 may be different in different Wi-Fi
modes, for example, in Modem-sleep mode or in normal Wi-Fi working mode.
-----------------------------------
2) есть еще одно решение - это свалка pvvx.
================-
3) есть еще оно решение, которое решает данную задачу без свалок и необходимости переписывая байта 107 в системной области параметров.
-------------------------
С помощью этого решения можно измерять напряжение питания ESP .
Для этого надо воспользоваться функцией int vdd33=readvdd33()
Эта функция есть в библиотеке libhy.a и используется в lua nodemcu.
функция возвращает значение напряжения питания.
===================
Например, у меня eSP-12 работает от батарейки через преобразователь.
Напряжение питания мультиметром =3.20 в
Напряжение измеренное данной функцией 3185..3170 мв
---------------------
Всем успехов.
===========================
Дополнение.
Для управления параметрами RFconfig я наприсал пару функций.
Вы можете использовать их например для включения режима АЦП изменяя содержимое ячейки 107 либо управлять опциями WIFI без создания нового файла
esp_init_data_default.bin
Для того чтобы изменения вступили в силу надо перезапустить ESP или войти и выйти из сна.
вот эти функции
Код:
char sectorRF[SPI_FLASH_SEC_SIZE] __attribute__((aligned(4)));
uint32 init_sector;
//---------------читает сектор RF в массив sectorRF
void get_sectorRF( )
{ enum flash_size_map size_map = system_get_flash_size_map();
switch (size_map) {
case FLASH_SIZE_4M_MAP_256_256:
init_sector = 128 - 4; break;
case FLASH_SIZE_8M_MAP_512_512:
init_sector = 256 - 4; break;
case FLASH_SIZE_16M_MAP_512_512:
case FLASH_SIZE_16M_MAP_1024_1024:
init_sector = 512 - 4; break;
default:
init_sector = 1024 - 4; break;
}
spi_flash_read ( init_sector * SPI_FLASH_SEC_SIZE,(uint32 *)sectorRF, sizeof(sectorRF)) ;
}
//-------------------- функция пишет сектор на свое место
void set_sectorRF(){
spi_flash_erase_sector(init_sector);
spi_flash_write ( init_sector * SPI_FLASH_SEC_SIZE,(uint32 *)sectorRF, sizeof(sectorRF));
}
// включаем режим измерения питания
get_sectorRF( ) ;
sectorRF[107]=255;
set_sectorRF();
//включаем режим АЦП
get_sectorRF( ) ;
sectorRF[107]=33;
set_sectorRF();
---------------------------
Всем успехов и процветания.
Последнее редактирование: