BLE модули TB-04 (TLSR8251)

pvvx

Активный участник сообщества
вчера прислали новую версию BDT.
Хотел выложить здесь, но форум пишет ,что файл слишком большой.
Оно работает со моей прошивкой к модулю E104-BT10-G/N. Проверял на днях...
Да и BDT слишком тормозная и ничего не умеет.
 

pvvx

Активный участник сообщества
Благодарю.
Вчера получил термометры TLSR8253 .
Теперь можно издеваться над ними.
Этих "термометров" Xiaomi с TLRS8251 уже пачка. Оригинальные прошивки тоже доступны, дизасм в гидре - не всем :)
 

pvvx

Активный участник сообщества
И куда это очередное дерьмо от ST девать?
1x USB 2.0 full-speed, т.е. у ST ещё сентябрь 1998 года с USB1.1 ! :) :)
Ничего нужного на камнях STM32L5 нет, а что есть - всё убогое - от ST :)
Интересно - они когда дойдут до FIFO к UART или другим контроллерам?

И вы зря смотрите на рекламу тока потребления у данных чипов - пока они загрузят RTOS и супер HAL от ST - батарейка уже сядет.
Тем более ничего вдающегося в показаниях отключенного MCU не наблюдается. Эти нормы у всех уже лет пять...
 

pvvx

Активный участник сообщества
Пересмотрел ещё раз серию L5 .
Включение любого кварца измеряется в mA :) Живите от RC :p
Ток рабочих генераторов кварцев серии STM32L5 превышает аналогичные параметры у TSL825x.
Стартовый ток выхода из любого sleep - так-же значительно выше.
STM32L5 не может хранить всю память в deep-sleep, а в простом sleep режиме жрут уже в несколько раз более чем TSL825x в аналогичной моде.

По аппаратной скорости выхода из sleep вообще давно никого не удивить - даже INA226/INA219 не может показать даже пичёк на цикле входа-выхода из таких режимов. Аналогично и у RTL872x, да и остальные параметры STM схожи.

Но не забывайте о могучем HAL у STM - через него MCU ногами шевелит до 10 MHz в лучшем случае при сильной оптимизации кода вручную, а что будет при просыпании и инициализации через HAL всех потрохов чипа?
Это всё в тысячи раз более аппаратных задержек. Что-то оптимизировать на STM32 никто уже никогда не будет.
В итоге оно не может работать от CR2032.
 

nikolz

Well-known member
Пересмотрел ещё раз серию L5 .
Включение любого кварца измеряется в mA :) Живите от RC :p
Ток рабочих генераторов кварцев серии STM32L5 превышает аналогичные параметры у TSL825x.
Стартовый ток выхода из любого sleep - так-же значительно выше.
STM32L5 не может хранить всю память в deep-sleep, а в простом sleep режиме жрут уже в несколько раз более чем TSL825x в аналогичной моде.

По аппаратной скорости выхода из sleep вообще давно никого не удивить - даже INA226/INA219 не может показать даже пичёк на цикле входа-выхода из таких режимов. Аналогично и у RTL872x, да и остальные параметры STM схожи.

Но не забывайте о могучем HAL у STM - через него MCU ногами шевелит до 10 MHz в лучшем случае при сильной оптимизации кода вручную, а что будет при просыпании и инициализации через HAL всех потрохов чипа?
Это всё в тысячи раз более аппаратных задержек. Что-то оптимизировать на STM32 никто уже никогда не будет.
В итоге оно не может работать от CR2032.
Я не оцениваю качество решений. просто принимаю к сведению кто, что и чего достиг.
К стати, TLSR сделали режим командной строки для программирования через EVK,USB и OTA.
Теперь можно вставлять его в eclipse.
 

pvvx

Активный участник сообщества
Я не оцениваю качество решений. просто принимаю к сведению кто, что и чего достиг.
Долго вы с этим разбираетесь. Более чем на пятилетку отстаете...

К стати, TLSR сделали режим командной строки для программирования через EVK,USB и OTA.
Теперь можно вставлять его в eclipse.
У Ai-Thinker это изначально и без покупки специального программатора.
Прям как у меня уже год назад.
Потихоньку адаптируются :)
Не вижу в этом никаких достижений, т.к. даже эксплорер Chrome может работать с COM-портом из HTML/jscript.
Но на практике python удобнее - кросс платформенней и гибче.

ps: Программирование "термометра" и у atc1441 в OTA производится из эксплорера через любой набортный BT или USB свисток или через USB-COM скриптом питона.
 

pvvx

Активный участник сообщества
К стати, TLSR сделали
...
Так и не сделали оптимизации размера прошивки ("firmware.bin") в скрипте линковщику к новым сериям чипов - пришлось сразу дорабатывать.
Написали кое-как Telink_IDE, исключив даже возможность менять имя скрипта линковщику :) - полный детсад.
Доработки скриптов сборки дают возможность запихать всю прошивку примера типа термометра от Xiaomi с экраном в официально объявленную SRAM TLSR8251 в 32 кило.
Программерам Telink ещё работать и работать... А их маркетингу - тем более.
 

pvvx

Активный участник сообщества
Ущё - у модулей TB-0x вроде есть вывод SWM, но чипы TLSR85x в примененных корпусах не имеют выводов USB от кристалла.
Вот полноценный программатор и отладчик через SWire с прикрученным адаптером USB-COM (TB-04-KIT):
1605829546127.png
И его ПО пишется за рабочий день (по моим наработкам), но нужды в нем нет, т.к. у меня уже есть в наличии под рукой другие варианты более скоростного одночипового решения с USB.
 

nikolz

Well-known member
Долго вы с этим разбираетесь. Более чем на пятилетку отстаете...
Я вообще всю жизнь только этим и занимаюсь - изучаю то, что мне интересно.
Например, за последние полгода разработал технологию переработки нефтешламов,
в которой пять патентов.
 

pvvx

Активный участник сообщества
Ущё - у модулей TB-0x вроде есть вывод SWM, но чипы TLSR85x в примененных корпусах не имеют выводов USB от кристалла.
Вот полноценный программатор и отладчик через SWire с прикрученным адаптером USB-COM (TB-04-KIT):
Посмотреть вложение 10165
И его ПО пишется за рабочий день (по моим наработкам), но нужды в нем нет, т.к. у меня уже есть в наличии под рукой другие варианты более скоростного одночипового решения с USB.
Программатор с доп.функциями на данную платку (или собрать самому TB-03/04 + USB-COM) уже давно накалякал и пользуюсь (у меня подключен к тестовому Xiaomi LYWSD03MMC):
Там есть и без доп. микрухи USB-COM, на TLST8269 (EBYTE E104-BT10-G/N) напрямую с USB.
 

aloika

Active member
Продолжаю потихоньку ковырять этот модуль. Выяснилось такой не очень понятный момент. Везде написано, что состояние подтягивающих резисторов у GPIO сохраняется при deep sleep with retention. Я включаю резистор 10 k pull-up, и после ухода в deep sleep и просыпания - ну да, подтяжка есть, осталась. НО: в течение где-то 3-4 мс в процессе засыпания/просыпания подтяжка пропадает (?), на это ножке появляется ноль и внешний девайс, подключенный к этой ноге, сбрасывается. Кто-нибудь что-нибудь может сказать по этому поводу?

При suspend состояние сохраняется (как и должно).
 

aloika

Active member
Продолжаю потихоньку ковырять этот модуль. Выяснилось такой не очень понятный момент. Везде написано, что состояние подтягивающих резисторов у GPIO сохраняется при deep sleep with retention. Я включаю резистор 10 k pull-up, и после ухода в deep sleep и просыпания - ну да, подтяжка есть, осталась. НО: в течение где-то 3-4 мс в процессе засыпания/просыпания подтяжка пропадает (?), на это ножке появляется ноль и внешний девайс, подключенный к этой ноге, сбрасывается. Кто-нибудь что-нибудь может сказать по этому поводу?

При suspend состояние сохраняется (как и должно).
А, нет. Это не подтяжка пропадает, это на ноге в процессе "уход в deep sleep with ret / просыпание (переинициализация)" появляется ноль. Т.е. нога притягивается к нулю на 3-4 мс. Я припаял внешнюю подтяжку 10 k на эту ножку - то же поведение, появляется там ноль. Ну я тут в своем случае выкрутился, обошел это дело, но все равно интересно бы выяснить. У кого какие идеи?
 

aloika

Active member
А, нет. Это не подтяжка пропадает, это на ноге в процессе "уход в deep sleep with ret / просыпание (переинициализация)" появляется ноль. Т.е. нога притягивается к нулю на 3-4 мс. Я припаял внешнюю подтяжку 10 k на эту ножку - то же поведение, появляется там ноль. Ну я тут в своем случае выкрутился, обошел это дело, но все равно интересно бы выяснить. У кого какие идеи?
Продолжаю свой диалог :) С retention тоже непонятно. Ставлю 16K retention, все работает как ожидается. Добавляю в retention массив 864 байта - перестает влезать. Ага, думаю, наверное, превысили 16К (хотя вообще откуда там 16 К получается? моих данных около 2 К всего). Включаю 32K retention (все по инструкции) - компилируется, заливается. Но - часть переменных не сохраняется, как будто blc_pm_setDeepsleepRetentionType(DEEPSLEEP_MODE_RET_SRAM_LOW32K) не выполняется. По факту эта строчка вообще не влияет :(

Непонятно, как вообще подходить к отладке таких штук, куда смотреть.

Кстати, попробовал webOTA от pvvx (html-страничка), с ее помощью заливается в TB-03, но стартует старая прошивка почему-то. Надо разбираться.
 

aloika

Active member
Продолжаю свой диалог :) С retention тоже непонятно. Ставлю 16K retention, все работает как ожидается. Добавляю в retention массив 864 байта - перестает влезать. Ага, думаю, наверное, превысили 16К (хотя вообще откуда там 16 К получается? моих данных около 2 К всего). Включаю 32K retention (все по инструкции) - компилируется, заливается. Но - часть переменных не сохраняется, как будто blc_pm_setDeepsleepRetentionType(DEEPSLEEP_MODE_RET_SRAM_LOW32K) не выполняется. По факту эта строчка вообще не влияет :(

Непонятно, как вообще подходить к отладке таких штук, куда смотреть.

Кстати, попробовал webOTA от pvvx (html-страничка), с ее помощью заливается в TB-03, но стартует старая прошивка почему-то. Надо разбираться.
С ретеншеном 32 К какие-то непонятности. Добавил еще 1000 байт в ретеншн (просто массив объявил в коде) - все заработало, все используемые переменные сохраняются. Этот массив, кстати, не знаю, сохраняется или нет. Убираю этот массив - часть моих переменных не сохраняется.
 

aloika

Active member
Кстати, попробовал webOTA от pvvx (html-страничка), с ее помощью заливается в TB-03, но стартует старая прошивка почему-то. Надо разбираться.
С этим понятно. Веб-страничка файл не перечитывает при каждой записи, нужно страничку перезагружать и файл снова открывать.
 

pvvx

Активный участник сообщества
Продолжаю потихоньку ковырять этот модуль. Выяснилось такой не очень понятный момент. Везде написано, что состояние подтягивающих резисторов у GPIO сохраняется при deep sleep with retention. Я включаю резистор 10 k pull-up, и после ухода в deep sleep и просыпания - ну да, подтяжка есть, осталась. НО: в течение где-то 3-4 мс в процессе засыпания/просыпания подтяжка пропадает (?), на это ножке появляется ноль и внешний девайс, подключенный к этой ноге, сбрасывается. Кто-нибудь что-нибудь может сказать по этому поводу?

При suspend состояние сохраняется (как и должно).
Есть другой косяк, в виде наносекундного импульса в "0" на портах при "просыпании" чипа:
 

aloika

Active member
Что еще обнаружил: при изменении значения rf_set_power_level_index() даже от самых маленьких до самых больших уровней потребляемый ток не меняется - как был около 10-12 мА в момент радиосвязи, так и остается. Смотрю PowerProfiler'ом.
 

aloika

Active member
Что еще обнаружил: при изменении значения rf_set_power_level_index() даже от самых маленьких до самых больших уровней потребляемый ток не меняется - как был около 10-12 мА в момент радиосвязи, так и остается. Смотрю PowerProfiler'ом.
Уровень сигнала рекламы тоже незаметно, чтобы менялся (смотрю программкой на телефоне). Что же получается - функция ничего не делает или я ошибаюсь в наблюдениях? Кто-нибудь проверял?
 
Сверху Снизу