• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Power Profiler

Обновил репозиторий...
добрый вечер. на досуге, если не затруднит, посмотрите, может увидите что не так. В общем прошил RV-Debugger-BL702
Windows PowerShell
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

Установите последнюю версию PowerShell для новых функций и улучшения! https://aka.ms/PSWindows

PS C:\Users\koltinov\Downloads\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\tools\bflb_flash_tool> .\bflb_mcu_tool.exe --chipname=bl702 --port=COM3 --xtal=32M --firmware=1.bin
[20:06:37.874] - ==================================================
[20:06:37.874] - Chip name is bl702
[20:06:37.874] - Serial port is COM3
[20:06:37.874] - Baudrate is 115200
[20:06:37.874] - Firmware is 1.bin
[20:06:37.874] - Default flash clock is 72M
[20:06:37.874] - Default pll clock is 144M
[20:06:37.874] - ==================================================
[20:06:37.902] - Update flash cfg finished
[20:06:37.908] - EFUSE_CFG
[20:06:37.908] - BOOTHEADER_CFG
[20:06:37.918] - Create bootheader using C:\Users\koltinov\Downloads\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\tools\bflb_flash_tool\chips\bl702\img_create_mcu/bootheader_cfg.ini
[20:06:37.918] - Updating data according to <C:\Users\koltinov\Downloads\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\tools\bflb_flash_tool\chips\bl702\img_create_mcu/bootheader_cfg.ini[BOOTHEADER_CFG]>
[20:06:37.920] - Created file len:176
[20:06:37.923] - Image create path: C:\Users\koltinov\Downloads\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\tools\bflb_flash_tool\chips\bl702\img_create_mcu
[20:06:37.923] - Config file: C:\Users\koltinov\Downloads\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\tools\bflb_flash_tool\chips\bl702\img_create_mcu/img_create_cfg.ini
[20:06:37.936] - Image hash is b'd8e760091ccb2e3c78c1674266f19dc0aa2eeeab20c515e718c833fea61dae36'
[20:06:37.936] - Header crc: b'ab85c9c9'
[20:06:37.936] - Write flash img
[20:06:37.937] - ========= eflash loader config =========
[20:06:37.962] - Version: bflb_eflash_loader_v2.1.2
[20:06:37.962] - Program Start
[20:06:37.962] - ========= eflash loader cmd arguments =========
[20:06:37.963] - Config file: C:\Users\koltinov\Downloads\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\tools\bflb_flash_tool\chips\bl702\eflash_loader\eflash_loader_cfg.ini
[20:06:37.963] - serial port is COM3
[20:06:37.963] - chiptype: bl702
[20:06:37.963] - ========= Interface is uart =========
[20:06:37.963] - com speed: 115200
[20:06:37.964] - Eflash load helper file: C:\Users\koltinov\Downloads\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\tools\bflb_flash_tool\chips\bl702\eflash_loader/eflash_loader_32m.bin
[20:06:37.964] - Eflash load helper file: C:\Users\koltinov\Downloads\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\tools\bflb_flash_tool\chips\bl702\eflash_loader/eflash_loader_32m.bin
[20:06:37.964] - ========= load eflash_loader.bin =========
[20:06:37.964] - Load eflash_loader.bin via uart
[20:06:37.964] - ========= image load =========
[20:06:38.053] - usb serial port
[20:06:38.114] - clean buf
[20:06:38.118] - send sync
[20:06:38.221] - ack is b''
[20:06:38.221] - retry
[20:06:38.221] - usb serial port
[20:06:38.283] - clean buf
[20:06:38.287] - send sync
[20:06:38.503] - ack is b'4f4b'
[20:06:38.550] - shake hand success
[20:06:38.565] - get_boot_info
[20:06:38.567] - data read is b'0100020700000000931d0400250004040000b6495f4cb97c'
[20:06:38.567] - ========= ChipID: 0000b6495f4cb97c =========
[20:06:38.567] - sign is 0 encrypt is 0
[20:06:38.573] - segcnt is 1
[20:06:38.578] - segdata_len is 64784
[20:06:38.592] - 4080/64784
[20:06:38.605] - 8160/64784
[20:06:38.619] - 12240/64784
[20:06:38.632] - 16320/64784
[20:06:38.646] - 20400/64784
[20:06:38.659] - 24480/64784
[20:06:38.673] - 28560/64784
[20:06:38.686] - 32640/64784
[20:06:38.700] - 36720/64784
[20:06:38.713] - 40800/64784
[20:06:38.727] - 44880/64784
[20:06:38.741] - 48960/64784
[20:06:38.754] - 53040/64784
[20:06:38.767] - 57120/64784
[20:06:38.781] - 61200/64784
[20:06:38.794] - 64784/64784
[20:06:38.796] - Run img
[20:06:38.909] - Load helper bin time cost(ms): 944.58740234375
[20:06:39.015] - ========= flash read jedec ID =========
[20:06:39.015] - Flash load shake hand
COM3 115200 bl702
[20:06:39.107] - clean buf
[20:06:39.111] - send sync
[20:06:39.320] - ack is b'4f4b'
[20:06:39.367] - Read flash jedec ID
[20:06:39.367] - readdata:
[20:06:39.367] - b'c2201380'
[20:06:39.367] - Finished
[20:06:39.367] - Program operation
[20:06:39.367] - Dealing Index 0
[20:06:39.367] - ========= programming chips\bl702\img_create_mcu\bootinfo.bin to 0x0
[20:06:39.369] - ========= flash load =========
[20:06:39.369] - ========= flash erase =========
[20:06:39.369] - Erase flash from 0x0 to 0xaf
[20:06:39.426] - Erase time cost(ms): 56.771484375
[20:06:39.430] - Load 176/176 {"progress":100}
[20:06:39.430] - Load 176/176 {"progress":100}
[20:06:39.430] - Write check
[20:06:39.430] - Flash load time cost(ms): 1.395263671875
[20:06:39.430] - Finished
[20:06:39.430] - Sha caled by host: e05cd5451c600e9976aa69e556e6992bcccf59fc9e000e839b85662feb038725
[20:06:39.430] - xip mode Verify
[20:06:39.431] - Read Sha256/176
[20:06:39.431] - Flash xip readsha time cost(ms): 0.521484375
[20:06:39.431] - Finished
[20:06:39.432] - Sha caled by dev: e05cd5451c600e9976aa69e556e6992bcccf59fc9e000e839b85662feb038725
[20:06:39.432] - Verify success
[20:06:39.432] - Dealing Index 1
[20:06:39.432] - ========= programming chips\bl702\img_create_mcu\img.bin to 0x2000
[20:06:39.434] - ========= flash load =========
[20:06:39.434] - ========= flash erase =========
[20:06:39.434] - Erase flash from 0x2000 to 0xbcff
[20:06:39.974] - Erase time cost(ms): 539.272216796875
[20:06:39.984] - Load 2048/40192 {"progress":5}
[20:06:39.994] - Load 4096/40192 {"progress":10}
[20:06:40.003] - Load 6144/40192 {"progress":15}
[20:06:40.012] - Load 8192/40192 {"progress":20}
[20:06:40.022] - Load 10240/40192 {"progress":25}
[20:06:40.030] - Load 12288/40192 {"progress":30}
[20:06:40.039] - Load 14336/40192 {"progress":35}
[20:06:40.049] - Load 16384/40192 {"progress":40}
[20:06:40.058] - Load 18432/40192 {"progress":45}
[20:06:40.067] - Load 20480/40192 {"progress":50}
[20:06:40.076] - Load 22528/40192 {"progress":56}
[20:06:40.086] - Load 24576/40192 {"progress":61}
[20:06:40.095] - Load 26624/40192 {"progress":66}
[20:06:40.103] - Load 28672/40192 {"progress":71}
[20:06:40.113] - Load 30720/40192 {"progress":76}
[20:06:40.122] - Load 32768/40192 {"progress":81}
[20:06:40.131] - Load 34816/40192 {"progress":86}
[20:06:40.140] - Load 36864/40192 {"progress":91}
[20:06:40.149] - Load 38912/40192 {"progress":96}
[20:06:40.156] - Load 40192/40192 {"progress":100}
[20:06:40.156] - Load 40192/40192 {"progress":100}
[20:06:40.156] - Write check
[20:06:40.156] - Flash load time cost(ms): 180.606201171875
[20:06:40.156] - Finished
[20:06:40.156] - Sha caled by host: d8e760091ccb2e3c78c1674266f19dc0aa2eeeab20c515e718c833fea61dae36
[20:06:40.156] - xip mode Verify
[20:06:40.166] - Read Sha256/40192
[20:06:40.166] - Flash xip readsha time cost(ms): 8.902587890625
[20:06:40.166] - Finished
[20:06:40.167] - Sha caled by dev: d8e760091ccb2e3c78c1674266f19dc0aa2eeeab20c515e718c833fea61dae36
[20:06:40.167] - Verify success
[20:06:40.167] - Program Finished
[20:06:40.167] - All time cost(ms): 2204.489990234375
[20:06:40.277] - [All Success]
PS C:\Users\koltinov\Downloads\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\bl_mcu_sdk-1cf3d1455b3baf66a9e3237365fcdfd69d821487\tools\bflb_flash_tool>

соединил всё как у вас на гитхабе указано.
photo_2025-04-04_20-47-03.jpg
photo_2025-04-04_20-47-01.jpg
photo_2025-04-04_20-46-57.jpg

в итоге получаю:
Screenshot 2025-04-04 204130.png
 

pvvx

Активный участник сообщества
Там сброка из исходников на два варианта модулей:
C:
#if USE_BOARD == bl702rd
#define GPIO_I2S_POW  GPIO_PIN_26    // (RX) POW Power-Down Control PCM1802
#define GPIO_I2S_BCLK GPIO_PIN_24    // (RTS) BCK 3.0724 MHz
#define GPIO_I2S_RCLK GPIO_PIN_27    // (TX)  SCK 24.5792 MHz
#define GPIO_I2S_DI   GPIO_PIN_2    // (TMS) DIO/DO
#define GPIO_I2S_FS   GPIO_PIN_1    // (TDO) LRCK 48.0062 kHz
#elif USE_BOARD == bl702zb
#define GPIO_I2S_POW  GPIO_PIN_9    // POW Power-Down Control PCM1802
#define GPIO_I2S_BCLK GPIO_PIN_0    // BCLK 3.0724 MHz
#define GPIO_I2S_RCLK GPIO_PIN_23    // RCLK_O/DI 24.5792 MHz
#define GPIO_I2S_DI   GPIO_PIN_2    // DIO/DO
#define GPIO_I2S_FS   GPIO_PIN_1    // FS 48.0062 kHz
#endif
 

pvvx

Активный участник сообщества
Всё это было уже давно и я уже забыл некоторые изменения, которые вошли в кинутые новые файлы...
Скинул 2 бинарника - на разные модули. Вроде собрались как-то :)

Нормальная программа для работы с ними так и не была дописана, т.к. есть перешел к нормальным ADC...
 
т.к. есть перешел к нормальным ADC...
чем сейчас сами пользуетесь?
Ныне на али появились более-менее дешевые INA228 - для простых PowerProfiler их достаточно
у меня есть ваш PowerProfiler на INA3221, шумный такой, но очень помогает иногда, спасибо. вот думал что-то по лучше попробовать. заказал RV-Debugger-BL702 и опять оказывается отстал))
 

pvvx

Активный участник сообщества
PCM1802 имеет аудюшную импульсную характеристику и для наглядности не очень катит (хотя измерения всё равно будут правильные). Плюс температурный уход нуля - надо каждый раз калибровать.
Т.е. использовать можно только по бедности... В итоге распаял на макете, докинул разных ОУ и закинул, т.к. я не собираюсь выпускать что-то на продажу как самый дешман вариант...

> INA3221, шумный такой,

Немного шумнее INA226. На 1 бит при одинаковой частоте максимальной оцифровки :)
INA228/229 аналогично выдает не больше на 11кГц, а на 20кГц итоговых бит ещё меньше.
 

pvvx

Активный участник сообщества
Но главное преимущество INA228/229 - малый входной ток (утечки) входов - нА. Только с ними можно снять ВАХ, к примеру у какого LDO и т.д.
А с другими INAxxx при качании напряжения с 0 по X В получите их мкА-ную загогулину тока входов...
Городить на вход высоковольтные ОУ c малыми входными токами нет желания. Им ещё питание надо +- на весь диапазон измерений... И они тоже шумят, если дешевые...
 

pvvx

Активный участник сообщества
1743791220362.png
Проверка зависимости токов от напряжения у MJWSD06MMC с впаянным кондером в цепь питания и источником с внутренним сопротивлением 60 Ом (подсевшая батарейка CR2xxx)...
Т.е. как оно будет запускаться и отключаться, если питание будет к примеру от супер-кондера и солнечной панели... Даст ли возможность заряда при просадке.
Некоторые чипы при понижении питания ниже нормы начинают жрать не в себя...
 

pvvx

Активный участник сообщества
А тут есть мелкий переходный процесс при 0.6В в несколько мкА и процесс запуска чипа на 1.6В, с просадкой на R источника... При нормальной работе выходит что авто-переход в deep-sleep с 2.0В и падение до 1.6В -всё хорошо (ток не более 1.5 мкА)
Или так - просто питание от заряженного кондера на 3.3В в 470 мкФ...
1743791668531.png
64.5 секунды работы...
 

pvvx

Активный участник сообщества
у меня есть ваш PowerProfiler на INA3221, шумный такой, но очень помогает иногда,
INA3221 шумит не более 1 бита на максимальной частоте оцифровки.
Любой электролитический кондер при подключении на вход измерения при шунте 10 Ом дает уже несколько бит шума.
Но, скорее всего у вас шумный источник питания. Типовые LDO дают шумы в несколько мВ, а измеритель у вас включается в разрыв: источник - кондер по питанию в измеряемой фигне. В итоге весь этот шум источника и выделяется на шунте (в мВ !)...
 

pvvx

Активный участник сообщества
Чтобы не наблюдать шумы источника питания уже на INA3221 вам нужен источник питания с шумом до 40 μV p-p в диапазоне 0..10 кГц. :) :)
 

pvvx

Активный участник сообщества
Вот загогулина зависимости входного тока у INA226(INA3221) от напряжения на входе при шунте в 10 Ом (макс измерения 8 мА, что актуально для BLE устройств):
1743793575310.png
Всё как в документации (перегиб на 3.3В):
1743793732041.png
В итоге таким измерителем можно пользоваться только при фиксированном напряжении в цепи измерения. Или чтобы шунт был на Амперы - доли Ом.

А у INA228/229 - ток входов менее наноАмпера и более линейный в диапазоне 0-86В:
1743793982302.png
десятки пикоАмпер... И загогулин не будет при замерах сотен пикоАмперов.
 

pvvx

Активный участник сообщества
Минимальный по цене PowerProfiler с более-менее автопереключением измеряемого диапазона это https://www.joulescope.com/.
Внутренности в видео.
И то измеряемая цепь находится на GND с опто-развязкой и источник питания только внешний... и все измерения в мкА всегда погрязшие в шуме... :)
Всё более примитивное или чуть дешевле из готового - полная фигня и не сильно отличается от INA228/229.
PPK2 от nRF - это вообще детсадовкий измеритель с дикими выбросами при авто-переключении диапазонов. Т.е. картинка тока измерения любого BLE на нем полностью искажена и имеет выплески по току в моменты переключения в 2..3 раза больше чем есть. И так-же нет никакой возможности измерить ток при использовании внутреннего сопротивления батареи или питания от слабого источника, когда в устройстве есть конденсаторы в питании - получите кошмарный график переключателя диапазона и не более.
 

pvvx

Активный участник сообщества
В итоге для дома на любом измерителе получите шумы на уровне до -70Дб. Это в пределе 16 бит.
Частотный диапазон более 10 кГц так-же не требуется. У 99% измеряемых устройств в питании кондеры и там нет частот выше…

А основная причина в источниках питания. У них обратная связь в LDO обычно до -70Дб, а на измеряемом устройстве установлены кондеры… Далее идут другие проблемы…
Чтобы получить шум источника менее мВ, вам придется делать защиту от ЭМ помех и электрических наводок – железный кожух для каждой части измерителя и измеряемого устройства. И никаких соединений с электросетью, тем более USB, а только батарейки в этих же железных коробах. Все конденсаторы должны быть без пьезо-эффекта (это не простая керамика) и температурного шума, детали и контакты только золотые. :)
 

pvvx

Активный участник сообщества
Для подключения INA228 требуется чип работающий с шиной I2C от 1.5 МГц.
При 20 кГц оцифровки INA228 надо успевать считывать по I2C 24-х битный регистр 20 тысяч раз в секунду.
А процесс считывания - это: старт сигнал, передать адрес устройства на шине с битом записи + АСК и байт адреса регистра + АСК, стоп сигнал, пауза в бит, старт сигнал, адрес устройства с битом чтения + АСК, 3 байта с ACK, стоп сигнал, пауза.
Итого не менее 1+9+9+1+1+1+9+9*3+1+1 = 60 тактов шины I2C за 50 мкс. Т.е. 60*20000 = 1200000 минимальная частота тактирования I2C для чтения на максимальной частоте оцифровки. Плюс пауза для отработки прерываний или ещё чего.
Итого I2C на 1.5МГц минимум. INA228 по докам имеет до "2.94-MHz high-speed I2C".
BL702 запросто работает на 1.5МГц на I2C и выдает в USB 1Мегабайт в сек при CDC (COM-порт). Больше не ставил, т.к. если соединение с модулем на проводках в 10 см уже есть проблемы. Не активные осциллографические щупы уже глушат такую I2C, т.к. у них входная емкость более 7..15 пФ.
 

pvvx

Активный участник сообщества
Для работы с INA228 подойдут только такие MCU, у которых есть быстрый канал слива данных и I2C с частотами к 3МГц c FIFO или DMA с автоматическим управлением транзакций по I2C шине. А это значит, что всякие народные чипы не подойдут. К примеру, у ESP32 – I2C до 400кГц, требует участия CPU на каждом шаге, да сливать не успевает. Аналогично всякие STM32... Из дешевых на это способны только MCU с нормальной моделью I2C контроллера. Их мало и они не народные – BL702 и некоторые Realtek :p
TLSR82xx тянут до I2С до 1.2MHz. Т.е. в притык.
 

nikolz

Well-known member
Для работы с INA228 подойдут только такие MCU, у которых есть быстрый канал слива данных и I2C с частотами к 3МГц c FIFO или DMA с автоматическим управлением транзакций по I2C шине. А это значит, что всякие народные чипы не подойдут. К примеру, у ESP32 – I2C до 400кГц, требует участия CPU на каждом шаге, да сливать не успевает. Аналогично всякие STM32... Из дешевых на это способны только MCU с нормальной моделью I2C контроллера. Их мало и они не народные – BL702 и некоторые Realtek :p
TLSR82xx тянут до I2С до 1.2MHz. Т.е. в притык.
У ESP8266 можно сделать 4MГц, если управлять через регистры.
 
Сверху Снизу