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

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

Slacky

Member
Рано обрадовался :)) Работает без проблем на ките. А вот плату распаял и вышло недоразумение. Счетчики считают на PB6 и PB7. При замыкании PB6 в логе отражается, что счетчик увеличился. При замыкании PB7 в логе отражается, что счетчик увеличился на PB7, но и на PB6 тоже увеличился. Странно. Ладно, думаю, паял, накосячил, хотя баг такой странный, односторонний.

Пересобрал бинарник, счетчики повесил на PC0 и PC1 - и что я вижу, тоже самое. Первый отрабатывает только за себя, второй за двоих.

Проверил код, все нормально. На Ките работает правильно.

Есть мысли?
 

pecherskih

Member
Рано обрадовался :)) Работает без проблем на ките. А вот плату распаял и вышло недоразумение. Счетчики считают на PB6 и PB7. При замыкании PB6 в логе отражается, что счетчик увеличился. При замыкании PB7 в логе отражается, что счетчик увеличился на PB7, но и на PB6 тоже увеличился. Странно. Ладно, думаю, паял, накосячил, хотя баг такой странный, односторонний.

Пересобрал бинарник, счетчики повесил на PC0 и PC1 - и что я вижу, тоже самое. Первый отрабатывает только за себя, второй за двоих.

Проверил код, все нормально. На Ките работает правильно.

Есть мысли?
Увы, это надо под отладчиком смотреть. А у TeLink-а его нет. Именно поэтому я и не хочу с ним заниматься.
 

pvvx

Активный участник сообщества
Утечки по входам.
#define PULL_WAKEUP_SRC_PB7 PM_PIN_PULLUP_1M

1) PULLUP_1M - может быть мало и там не эквивалент 1МОм... На длинном проводе, в десятку см уже часто наводится 50Гц, если есть связь с сетью 230В...
2) Выводы на модуле рядом и под ними не смыт флюс
 

pvvx

Активный участник сообщества
У TLSR825x есть баг-фича на некоторых GPIO (не на всех). Проявляется как появление короткого импульса на выводе на GND при выходе чипа из сна.
Может сказываться при PULLUP_1M и наличии на входе емкости - провода или длинных дорожек и т.д.
Это не дало возможность использовать просыпание по уровню на SDA/SCL у датчиков с I2C. Импульс сбивает протокол работы с датчиком (формирует типа старт или стоп, или лишний clock).
Так-же плохо реализован последовательность инициализации GPIO в функции gpio_init(); Её пришлось переписать, т.к. она создавала уже программные импульсы на GPIO-s при выходе из sleep...
 

pvvx

Активный участник сообщества
Увы, это надо под отладчиком смотреть. А у TeLink-а его нет. Именно поэтому я и не хочу с ним заниматься.
У TeLink есть отладчик - Telink EVK.
1. Оригинальный на али по 2тр+.
2. Запрограммированный в модуль ~400р

Софт:
Burning and Debugging Tools

Так-же есть (не для всех) openocd от Telink для Linux.
Linux_tools\tc32\share\openocd\scripts\interface\tlink.cfg
Код:
#
# Telink JTAG T-Link
#
#
interface tlink
source [find target/tc32.cfg]
tlink_usb_interface 1
tlink_vid_pid 0x248a 0x8266
Linux_tools\tc32\share\openocd\scripts\cpu\tc32\tc32.tcl
Код:
set CPU_TYPE   tc32
set CPU_NAME   tc32
set CPU_ARCH   tc32
set CPU_MAX_ADDRESS 0xFFFFFFFF
set CPU_NBITS  32
и т.д.
 

pvvx

Активный участник сообщества
Linux_tools\tc32\share\openocd\scripts\interface\tc32-evk.cfg
Код:
interface tlink-evk
tlink-evk  port tlink_usb
reset_config trst_and_srst
adapter_khz 24000
кароче какой-то хлам, который я не разбирал - мне отладчики типа Jtag/SWD не нужны, т.к. они требуют больше времени на поиски ошибок, чем вписывание своей отладки в код. Тем более они не дают ни какого теста и в большинстве случаев не могут использоваться для отладки устройств использующих разнообразные sleep и другие время-зависимые аппаратные и программные фичи, кои в BLE составляют более 90%.
 

Slacky

Member
Может сказываться при PULLUP_1M и наличии на входе емкости - провода или длинных дорожек и т.д.
Вот спасибо за дельную мысль. Сделал подтяжку на 10кОм и заработало. Сделал так. При инициализации 1мОм. Перед опросом подтягиваем к 10кОм, как только опросили, опять 1мОм. Все работает!!!
 

pecherskih

Member
И что, из описанного, возможно посмотреть отладчиком?
Те проблемы которые вы описываете - вполне реальны. Однако по моему опыту 90% багов находятся именно при DEBUGGING-е. К примеру, сложный алгоритм приложения без прохождения по шагам не отладить. Тот отладчик на который вы ссылаетесь у меня имеется. Но это жалкое подобие того что есть к примеру в stm32 и ST-Link. Ваш уровень я могу оценить как очень высокий, судя по вашим работам. Но нежелание пользоваться отладчиком объясняю только тем, что полноценного его в TeLink-е просто нет. Вот и приходится вписывать свой код отладки в программу. Но это как говорится, каждому свое. Я сейчас тестирую другого китайца, камень CH582. Он в целом похож на изделия TeLink-а, но линия программирования у него SWD, что позволяет его полноценно отлаживать. Среда разработки, так же модифицированный Эклипс. На Алиэкспрессе есть и чипы и модули и киты и программаторы. И стоит он чуть больше доллара. Мне вчера только пришли киты и я пока научился только заливать софт через бутлоадер USB. В эфире прибор виден. Продолжаю осваивать. Самое главное пока не сделал - пока не настроил среду Эклипс для работы под отладчиком. Когда будут успехи - напишу сюда. А пока могу дать ссылку на небольшую ветку форума, где обсуждается этот камень. http://forum.easyelectronics.ru/viewtopic.php?f=8&t=47058
 

pvvx

Активный участник сообщества
Те проблемы которые вы описываете - вполне реальны. Однако по моему опыту 90% багов находятся именно при DEBUGGING-е. К примеру, сложный алгоритм приложения без прохождения по шагам не отладить.
Это относится исключительно к ваши знаниям, т.е. к алгоритмическим ошибкам, незнанию библиотечных функций, незнанию архитектуры и аппаратных возможностей, да и просто к неумению писать программы. Отладчик у вас выступает для реализации метода тыка и подтасовки.
Когда у вас будет "мастерство" - про отладчики забудете. Потребуются только монитор сообщений и логов.
Эта часть полностью реализована в BDT у Telink.
 

pvvx

Активный участник сообщества
Пример считывания значения регистра (адрес 0x740) таймера на ходу, не вмешиваясь в работу CPU:

Для теста и ваших дополнений скрипта в TlsrPgm представлена команда dc.
TlsrPgm dc [-h] address count
Запускаем: TlsrPgm.py -pCOM4 dc 0x0740 100000
Получаем:
1663791316270.png
SoC спит 2.5 секунды, а когда на пару mc "просыпается" считывается значение из указанного регистра.
За активное время регистр считывается несколько раз, но экране это не остается.
Код:
CPU sleep?  (2.496 sec)
CPU sleep?  (2.496 sec)
CPU sleep?  (2.496 sec)

0x7dece4f8 (0.000)
0x7ded0538 (0.000)
0x7ded2690 (0.010)
0x7ded4410 (0.010)
0x7ded6570 (0.010)
0x7ded81b8 (0.010)

CPU sleep?  (0.010 sec)
CPU sleep?  (0.000 sec)
CPU sleep?  (0.000 sec)
Таким путем, с помощью ОДНОГО провода, у TLSR есть возможность считать-записать на ходу любые регистры или память, без участия CPU или его остановки. Ограничение только в скорости шины Telink 1-wire (2 Mbits).
Это можно использовать как RTT (SEGGER’s Real Time Transfer).
Почти аналогично BDT показывает все переменные программы (с назначенными именами), регистры и память, включая массивы и т.д. если ему предоставить файл листинга от компилятора (lst).
Команды останова и пошаговое выполнение так-же возможны, но в только в области памяти.

Т.е. отладчик есть, но с преимуществом - требует всего один провод.
И то, что вы не можете это использовать говорит только о ваших личных ограничениях.
 

pecherskih

Member
И то, что вы не можете это использовать говорит только о ваших личных ограничениях.
Ну что тут сказать, ограничения у меня конечно есть. Их нет только у такого мастера как Вы :) Остальные не идеальны и поэтому большинству проще идти моим путем. Как я уже сказал - каждому своё. Божие Богу, Кесарю Кесарево.
 

pvvx

Активный участник сообщества
Я сейчас тестирую другого китайца, камень CH582. Он в целом похож на изделия TeLink-а, но линия программирования у него SWD, что позволяет его полноценно отлаживать. Среда разработки, так же модифицированный Эклипс. На Алиэкспрессе есть и чипы и модули и киты и программаторы. И стоит он чуть больше доллара. Мне вчера только пришли киты и я пока научился только заливать софт через бутлоадер USB. В эфире прибор виден. Продолжаю осваивать. Самое главное пока не сделал - пока не настроил среду Эклипс для работы под отладчиком. Когда будут успехи - напишу сюда. А пока могу дать ссылку на небольшую ветку форума, где обсуждается этот камень. http://forum.easyelectronics.ru/viewtopic.php?f=8&t=47058
Не вижу там возможность отладки BLE и sleep режимов. И в видео, с того форума, время переключения в режим debug в Eclipse превышает время программирования TLSR825x. Всё это ставит жирный крест на любую отладку реального устройства.
Такая отладка подойдет исключительно для первоначального изучения школьникам начальных классов несложных программ в пару строк СИ (без использования BLE и т.д.).
Если вы хотите освоить BLE - такой отладчик не годится.
 

pvvx

Активный участник сообщества
камень CH582 ...... где обсуждается этот камень. http://forum.easyelectronics.ru/viewtopic.php?f=8&t=47058
Пробегая по докам и ПО он не ушел дальше CH579?
где обсуждается этот камень.
Там не обсуждено реальное потребление в BLE, т.к. оно напрямую зависит от представленных блоб-библиотек (с нереализованными или кое как реализованными возможностями чипа).
И т.к. исходников либ к чипу нет - SWD отладчик ещё раз в пролете особенно для начинающих.
 

Slacky

Member
А ни у кого нет оригинальной прошивки от TB-04, которую ai-thinker туда заливает? А то я это дело как-то упустил, новые модули еще не пришли, а старые я уже переписал.
 

pvvx

Активный участник сообщества
Прошивка аналогична модулю TB-03, TB-02.
В ней стринги: "V0.5_TB-02" , "Ai-Thinker BlE AT V0.50"
У TB-04-KIT вроде аналогичная - "V0.5_TB-02"

У TB-03-KIT другая прошивка. "V0.6", "+VER:V0.7.5_20201116",
Код:
#####################################################
arch:CHIP_TLSR8258,0x00000001
company:Ai-Thinker|B&T
ble_mac:%2X%2X%2X%2X%2X%2X
sdk_version:release/v3.4.0
firmware_version:release/V0.7.5_20201116
compile_time:Nov 16 2020 13:50:10
ready
#####################################################
 
Сверху Снизу