• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

BLE модули TB-04/TB-03F (TLSR8253F512)

pvvx

Активный участник сообщества
Причина отвержения таких контроллеров у Ардино поколения примерно понятна. Всех их учили стилю последовательного выполнения и прочим ненужным стилям оформления кода. А тут типа у у каждого контроллера конвеер – запихиваем всё задание что нужно сделать в FIFO контроллера и можем работать над другой задачей, а не тупить, ожидания флагов поэтапного выполнения каждого шага тупого контроллера, типа от STM :p А в головной мозг Ардуинщика это не укладывается...
 

_eugene_

New member
И в статье указано, что CPU CortexM0. Это говорит о том, что его периферия (API модели) примерно аналогичный первым STM. Если это европейская "разработка", то это есть беда.
Так как там всё убогое - I2C, UART, SPI и т.д. только с постоянным участием CPU и на низкие скорости. Большинство I2С датчиков давно требуют частоту шины к 3МГц, что сильно сокращает время работы с ними и на столько-же потребление, что сверх важно для BLE.
Если это так, то TLSR чипы выигрывают на 1000% из-за правильно разработанной периферии.
На фото их модуля вполне читабельно название чипа:

15_IoT_03.jpg

Да и название конфигуратора засветилось «Current consumption estimation tool», а в описании к нему:

Current supported devices are: BlueNRG-MS, BlueNRG-2N Bluetooth® Low Energy wireless network processors as well as the BlueNRG-1, BlueNRG-2, BlueNRG-LP, BlueNRG-LPS Bluetooth® Low Energy systems-on-chip.
 

_eugene_

New member
Странно… TB-03F даже после передачи команды AT-SLEEP=1, потребляет более сотни микроампер при интервале рассылки рекламы 2 секунды.

Уже и ШИМ на выводах пытался отключать, при этом для некоторых выводов отвечает OK, для других ERROR, а при отключении на третьих вообще ответа нет.

Однако в DEEP SLEEP (AT-SLEEP=2) потребление нормальное – на уровне нескольких микроампер.

Кто-нибудь сталкивался с подобным?
 

pvvx

Активный участник сообщества
Ещё раз - никто с "AT" командами не работает. Нет никакого здравого смысла, тем более с батарейными устройствами.
Чип может делать всё сам, как любой MCU и ставить второй чип для связи по "AT" нет нужды.
 

_eugene_

New member
Если вы имеете в виду, что перенос своего приложения на чип TLSR это неизбежный выход в виду того, что AI-Thinker не удосужился предоставить нормальную прошивку где всё ненужное по-дефолту отключено или может быть отключено командами то похоже, что это так.

Но сам по себе модульный принцип, в том числе и с обменом AT-командами это нормально для батареечных устройств, есть множество счётчиков на МК общего применения с GSM-модулями.

Отсюда вопрос – есть шанс найти BLE-модуль с потреблением до 20 мкА, пусть даже не на этом чипе? Может кто подскажет проверенные варианты? На этом же чипе смотрю продаются модули E104-BT09 как насчёт них?
 

pvvx

Активный участник сообщества
> есть шанс найти BLE-модуль с потреблением до 20 мкА
Нет. За 5 лет с "AT" командами таких не замечено. Только если пересобрать самому из исходников...
GSM, GPS и прочие модули всегда имеют SDK и на них сразу можно избавиться от "AT" сильно упростив себе жизнь.
 

pvvx

Активный участник сообщества
Самый дешевый на сегодняшний момент BLE модуль на али, удовлетворяющий ваши условия и возможностью сборки из своих исходников в него "AT"
- это модули из серии Ai-Thinker PB-03(M) (до 100 руб).
 

DuMaH

New member
Всем привет. Подскажите что делаю не так. Взял за основу исходники watermeter_ble от slacky1965, пытаюсь получить показания с датчика MPU6050, почему-то перед каждым вызовом read_i2c_buf приходится делать i2c_gpio_set(I2C_GROUP); reg_i2c_mode |= FLD_I2C_MASTER_EN;
иначе читаются нули
 

pvvx

Активный участник сообщества
Всем привет. Подскажите что делаю не так. Взял за основу исходники watermeter_ble от slacky1965, пытаюсь получить показания с датчика MPU6050, почему-то перед каждым вызовом read_i2c_buf приходится делать i2c_gpio_set(I2C_GROUP); reg_i2c_mode |= FLD_I2C_MASTER_EN;
иначе читаются нули
По тому, что чип каждый раз переходит в состояние сна и при каждом старте сбрасывает все состояния GPIO в описанные ваших файлах настройки.
И всегда выполняется gpio_default.h
Кроме того, в каждой итерации сон -> активный режим -> сон I2C не инициализирован, как и все другие устройства.
Т.е. перед каждой работой с I2C вам надо инициализировать контроллер I2C, а после отключить его. Если не отключать, то будет повышенное потребление на остаток времени активности SoС.
 

pvvx

Активный участник сообщества
Другой метод - не включать режим сна и довольствоваться постоянным потреблением работающего SoC в 4..6 мА :p
Так же режимов сна у SoC существует несколько видов. В deep-sleep с включенным питанием RAM и RC генератора самое оптимальное потребление.
 

pvvx

Активный участник сообщества
Все BLE/MESH/Zigbee имеют алгоритм работы не как в Arduino и прочих жручих системах.
Там основное - экономия энергии. SoC пробуждается по таймеру или прерыванию, как можно быстрее выполняет действие и снова уходит в сон - полное отключение всех внутренних устройств и кварцевого генератора, иногда и включая модуль GPIO.
И все такие чипы и их SDK оптимизированы именно на это - на скорость старта и отключения всего.
Иначе как достичь среднего потребления в пару мкА?
 

_eugene_

New member
Чтение/программирование TB-03F-KIT.

1. Скачиваем TlsrComProg.py и floader.bin.
2. Замыкаем проводом с коннектором папа-мама
Посмотреть вложение 11339
ногу с номером 2 CH340C и SWS:
Посмотреть вложение 11337
3. Запускаем:
TlsrComProg.py -p COM5 rf 0 0x80000 xx1.bin
4. Получаем:
Посмотреть вложение 11338
В первый раз TB-03F KIT зашился нормально, а в последующие разы при нормальных отчётах продолжает работать первая прошивка.
Полное стирание не помогает.
Из-за чего такое может быть?

Код:
python.exe D:\_TMP\TlsrComProg825x-main\TlsrComProg.py -p COM7 -b 230400 --fldr D:\_TMP\TlsrComProg825x-main\floader.bin -t 2000 we 0 D:\_TMP\825x_ble_sample.bin
================================================
TLSR825x Floader version 22.12.24
------------------------------------------------
Open COM7, 230400 baud...
Reset module (RTS low)...
Activate (2000 ms)...
Warning: Wrong RX-TX connection?
Connection...
Load <D:\_TMP\TlsrComProg825x-main\floader.bin> to 0x40000...
Bin bytes writen: 1960
CPU go Start...
------------------------------------------------
ChipID: 0x5562 (TLSR8253), Floader ver: 1.1
Flash JEDEC ID: c86013, Size: 512 kbytes
------------------------------------------------
Inputfile: D:\_TMP\825x_ble_sample.bin
Write Flash data 0x00000000 to 0x0000d464...
------------------------------------------------
(1) Warning
 

_eugene_

New member
Стёр:
Код:
python.exe D:\_TMP\TlsrComProg825x-main\TlsrComProg.py -p COM7 -t 5000 --fldr D:\_TMP\TlsrComProg825x-main\floader.bin ea
================================================
TLSR825x Floader version 22.12.24
------------------------------------------------
Open COM7, 230400 baud...
Reset module (RTS low)...
Activate (5000 ms)...
Warning: Wrong RX-TX connection?
Connection...
Load <D:\_TMP\TlsrComProg825x-main\floader.bin> to 0x40000...
Bin bytes writen: 1960
CPU go Start...
------------------------------------------------
ChipID: 0x5562 (TLSR8253), Floader ver: 1.1
Flash JEDEC ID: c86013, Size: 512 kbytes
------------------------------------------------
Erase All Flash ...
------------------------------------------------
(1) Warning
Прочитал:
Код:
python.exe D:\_TMP\TlsrComProg825x-main\TlsrComProg.py -p COM7  --fldr D:\_TMP\TlsrComProg825x-main\floader.bin rf 0 0x80000 D:\_TMP\READ.bin
================================================
TLSR825x Floader version 22.12.24
------------------------------------------------
Open COM7, 230400 baud...
Reset module (RTS low)...
Activate (600 ms)...
Warning: Wrong RX-TX connection?
Connection...
Load <D:\_TMP\TlsrComProg825x-main\floader.bin> to 0x40000...
Bin bytes writen: 1960
CPU go Start...
------------------------------------------------
ChipID: 0x5562 (TLSR8253), Floader ver: 1.1
Flash JEDEC ID: c86013, Size: 512 kbytes
------------------------------------------------
Read Flash from 0x000000 to 0x080000...
Outfile: D:\_TMP\READ.bin
------------------------------------------------
(1) Warning
В считанном бинарнике прошивка, которую записывал первый раз.

1746702383827.png
 

pvvx

Активный участник сообщества
Код:
usage: TlsrComProg [-h] [--port PORT] [--tact TACT] [--fldr FLDR]
                   [--baud BAUD] [--unlock] [--rst RST]
                   {rf,we,wf,es,ea,rst} ...

TLSR825x Floader version 22.12.24

positional arguments:
  {rf,we,wf,es,ea,rst}  Run TlsrComProg {command} -h for additional help
    rf                  Read Flash to binary file
    we                  Write file to Flash with sectors erases
    wf                  Write file to Flash without sectors erases
    es                  Erase Region (sectors) of Flash
    ea                  Erase All Flash
    rst                 Reset (RTS low)

options:
  -h, --help            show this help message and exit
  --port, -p PORT       Serial port device (default: COM1)
  --tact, -t TACT       Time Activation ms (0-off, default: 600 ms)
  --fldr, -f FLDR       Filename floader (default: floader.bin)
  --baud, -b BAUD       UART Baud Rate (default: 230400)
  --unlock, -u          Unlock Flash (option command Erase/Write)
  --rst, -r RST         Reset (RTS low) (post main processing)
--unlock, -u Unlock Flash (option command Erase/Write)
 

pvvx

Активный участник сообщества
Что за прошивки вы записываете, которые ставят биты защиты записи в Flash?
 

_eugene_

New member
Спасибо. Разблокировал.
Что за прошивки вы записываете, которые ставят биты защиты записи в Flash?
Вчера начал присматриваться к SDK для TLSR825X , это был пример отсюда:
https://github.com/telink-semi/tc_b...le_single_sdk/vendor/b85m_module/app_config.h
Не думал, что в примерах будут выставлены какие-то защиты, однако:
#define APP_FLASH_PROTECTION_ENABLE 1

P.S. До этого собрал из разных примеров для PHY6212 BLE_UART, на модуле PB-02 получилось около 25 мкА при рекламе раз в 4 секунды (флаги + название устройства 12 байт).
 
Сверху Снизу