• Система автоматизации с открытым исходным кодом на базе 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Гц, если управлять через регистры.
 
Сверху Снизу