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

BLE модуль JDY-10 на чипе TLSR8266

nikolz

Well-known member
Успехов вам повторить это на Nordic SDK :)
Когда повторите - перейдем к 50-ти нанометровому PHY62x2 :cool:
цитата для тех, кто не знает:
2009-й войдет в историю развития процессоров как год внедрения в массовое производство 32-нм техпроцесса.
Напомним, что первая микросхема памяти, созданная по 32-нм техпроцессу, была продемонстрирована компанией Intel еще в 2007 году,
а в феврале 2009-го она представила уже рабочую версию процессора, созданного по 32-нм техпроцессу.
Поэтому уже сейчас можно утверждать, что ввод в массовое производство 32-нм техпроцесса состоится по плану и в конце 2009 года мы увидим серийные 32-нм процессоры
------------------
Прошло 10 лет, и pvvx обнаружил у китайцев 50 нм технологию.
 

pvvx

Активный участник сообщества
Прошло 10 лет, и pvvx обнаружил у китайцев 50 нм технологию.
Прошло 10 лет с начала использования 50 нм технологии в простых микроконтроллерах, а @nikolz только изучает 200 нм чип ESP и тащит на сайт чипы микронной технологии от TI и Nodric :p
 

pvvx

Активный участник сообщества
@nikolz - вы полностью опровергли свою купленную справку о высшем образовании (скорее всего обманули что она вообще есть):
Последние, уже этого года, чипы Nordic выпускаются на ультрасовременном 55-нм техпроцессе на старом оборудовании переброшенном с фабрики в китайские гаражи :p :) :)
(перевод рекламы от Nordic, цифры не попутаны :p )
 

pvvx

Активный участник сообщества
для подключения всех этих чипов
надо 1117 -1 шт, 20 см цветного кабеля плоского, адаптер UART На CH340 и ST link
Фотку покиньте, как распаять?

Свои варианты я на все упомянутые модули давал:
https://esp8266.ru/forum/threads/nrf52840-mdk-usb-dongle.4686/#post-68987
https://esp8266.ru/forum/threads/tlsr8269.4491/page-5#post-65658
https://esp8266.ru/forum/threads/samyj-malenkij-ble-modul-e104-bt05-na-tlsr8266.4647/#post-67007
и т.д.
Если не нашли или забыл на что, то напомните - но серьезных отличий для макетов не будет.
 

pvvx

Активный участник сообщества
когда будут продавать, то перейду.
а пока Вы браслет ломайте дальше и рекламируйте то, что купить незя.
У вас проблемсы с макетированием потрохов часов?
https://esp8266.ru/forum/threads/ble-soc-phy6202.4666/#post-67347
Не вижу никаких сложностей. Необходимо смакетировать всего один вариант чтобы использовать готовый блок с монитором, датчиком приближения, сенсорной кнопкой, акселерометром, экраном, зарядкой и АКБ.
А в другие часики всё заливается по OTA, или если уж убили всё там, то путем крепления клипсов к трем специально подписанным и выведенным контактам платы. В таких случаях придется открыть - снять верхнее (орг)стекло или что там в конкретной модели - держится как пробка, с расширением обода края - защелок нема - ничего не сломается. По закрытию не забудьте промазать шов какой водоотталкивающей фигней...
 

pvvx

Активный участник сообщества
JDY-10 и INA226 через BLE:
upload_2020-1-18_4-45-59.png
1000 точек напряжения и тока в сек. Фиксировано для данных примеров.

USB в данной версии не работает. Включена перепрошивка по OTA.
Работа через USB в pvvx/STM32INA2xxPowerProfiler
Далее наверно будет версия USB + BLE, когда мне потребуется такая.

Сами исходники HTML и бинарник прошивки:
 

Вложения

pvvx

Активный участник сообщества
Блин, не та ссылка на схему (не та картинка для INA266). Эта :) :
 

nikolz

Well-known member
pvvx,
специально для вас
мнение официального представителя NORDIC в России:

Посмотрел характеристики PHY6202 http://wiki.phyplusinc.com/doc/DataSheet/PHY6202_BLE_SoC_Datasheet_v1.4.pdf, радиоканал заметно отстаёт (и RX и TX) от NRF52840.
Так же, как и характеристики самого ядра – потребляет больше, как в режиме сна (2 мкА vs. 1.5 мкА), так и в Off (0.7 мкА vs. 0.4 мкА).
При том, что это Cortex-M0, а не M4. В общем, позиция о преимуществахPhy+ не подтверждается уже даже при беглом взгляде на даташиты.
Более детально сравнить не получится, так как китайцы имеют сильно порезанную документацию и напрямую решения не сравнить.
 

pvvx

Активный участник сообщества
pvvx,
специально для вас
мнение официального представителя NORDIC в России:

Посмотрел характеристики PHY6202 http://wiki.phyplusinc.com/doc/DataSheet/PHY6202_BLE_SoC_Datasheet_v1.4.pdf, радиоканал заметно отстаёт (и RX и TX) от NRF52840.
Так же, как и характеристики самого ядра – потребляет больше, как в режиме сна (2 мкА vs. 1.5 мкА), так и в Off (0.7 мкА vs. 0.4 мкА).
При том, что это Cortex-M0, а не M4. В общем, позиция о преимуществахPhy+ не подтверждается уже даже при беглом взгляде на даташиты.
Более детально сравнить не получится, так как китайцы имеют сильно порезанную документацию и напрямую решения не сравнить.
Что вы сравнивали?
Sensitivity: -97dBm@BLE 1Mbps data rate -103dBm@BLE 125Kbps data rate
TX Power -20 to +10dBm in 3dB steps
Operating temperature: -40 ℃~125℃ 0.7μA @ OFF Mode (IO wake up only)
С этим:
-95 dBm sensitivity in 1 Mbps -103 dBm sensitivity in 125 kbps Bluetooth® low energy mode (long range)
-20 to +8 dBm TX power, configurable in 4 dB steps
Максимальный deep-sleep (стр: 57) Figure 9: System OFF, no RAM retention, wake on reset (typical values) > 3.7 uA
Когда вы научитесь читать даташиты?
 

pvvx

Активный участник сообщества
@nikolz - кончайте троллить и маяться дурью, показывая свою безграмотность.

Вот вам добавка (TLSR):
2μA @ Sleep Mode with 32KHz RTC
Transmitter: 6.7mA @0dBm TX power

Nordic:
Figure 10: System ON, no RAM retention, wake on any event (typical values) > 10 uA
Figure 12: Radio transmitting @ 0 dBm output power, 1 Mbps BLE mode, Clock = HFXO, Regulator = DC/DC (typical values) > 9.5 mА
--------
Figure 11: Radio transmitting @ 8 dBm output power, 1 Mbps BLE mode, Clock = HFXO, Regulator = DC/DC (typical values) > 27 mA
(Это я уже сравнил ВЖИВУЮ ещё и с TSLR8266. Да – с ним примерно равны :p
Но вот с живым PHY6202 – у Nordic проигрыш и приличный )
 

pvvx

Активный участник сообщества
Не благодаря, а вопреки документации от Telink, удалось освоить DFIFO в TLSR8266. Есть разница с TLSR8269.

Качество ADC на модуле JDY-10 похуже, чем у модуля E104-BT10. Больше шумов. Толи разводка модуля, толи сказывается немного другой ADC в самом чипе TLSR8266…

DFIFO у TLSR8266 складывает замеры от ADC c децимацией и амплитудной коррекцией в циклический буфер с аппаратным указателем последнего записанного значения. Децимация в TLSR8266 ограничена до 8 раз (1,2,3,4,5,6,7,8). Работает аттенюация или по другому – задается множитель амплитуды (не путать с PGA). Ну это вроде и всё что нам надо. В TLSR8269 у DFIFO работающих фичь побольше – есть и фильтр НЧ и ВЧ (LPF и HPF) с задаваемыми таблицами коэффициентами, Decimation Ratio до 256, авто регулировка усиления с пачкой параметров.

Так же необходимо помнить, что либы BLE TLSR8266 это BT4.2, а TLSR8269 – BT 5.0. Это сказывается на максимальный трансфер в BLE – 5 килобайт и 150 килобайт.

Тестовая прошивка BLE-USB-ADC для JDY-10 (исходники и прочее по запросу в личке).
upload_2020-1-24_14-26-30.png
Используется встроенный Ref 1.3V. Вход ADC – PC4.
Переключение USB/BLE при подаче питания по PD5 (=”1” – USB, не соединен или GND - BLE).
В USB-COM оцифровка задается от 500 sps до 100 кsps.
Основные команды типы запросов, ответов и как задать скорость оцифровки кратко описаны в test.html.
 

Вложения

pvvx

Активный участник сообщества
Никак не исправить баг в TLSR8266 (telink_ble_sdk_release_v3.3.0_20191012).
Проявляется как внутренняя утечка. Пример соединения с отдачей раз в 3 сек замера ADC (можно и любой другой - суть та-же):
upload_2020-1-25_5-8-7.png
Переход в sleep c 3000 по 4500 ms сопровождается этой утечкой к 0.3 мА
upload_2020-1-25_5-10-29.png
upload_2020-1-25_5-14-16.png
(видно, что всё отключается правильно, но затем выплывает...)
В остальных случаях среднее потребление в sleep 17 uA.
Без PowerProfiler это сложно выловить... И если чип прервать на этом (RESET), то следующий старт он начнет с данной утечкой и так и будет работать, до сложных манипуляций с бубном (иногда само проходит, после многих итераций соединения/отсоединения с активным sleep, но так-же и будет периодически выпадать...).
Перезагрузка всех значений регистров, RAM, аналоговых регистров не снимает этого дела. :mad:
Временный сброс бага аналогичен ситуации с опцией отключения питания Flash во время сна - если на такой стадии (sleep с выключенной Flash) чип прервать, то никакие манипуляции с регистрами и т.д. не помогают для восстановления доступа к Flash.
Помогает только полное снятие напряжений с удержанным RESET.
 

pvvx

Активный участник сообщества
Вернувшись (для теста INA199A1) к тензодатчику который испытывался ( https://esp8266.ru/forum/threads/ble-modul-jdy-10-na-chipe-tlsr8266.4654/page-5#post-68604 )
Просто подключил тензодатчик в питание 3.3В, а выходы моста на INA199A1 и на вход ADC и ничего более не настраивал, никаких емкостей для фильтрации и вообще деталей, не менял усиления у ADC TLSR8266, не брал INA199A3 c gain = 200 (INA199A1 всего 50 раз) и вышло это:
Снял с тензодатчика брусок ~1кГ:
upload_2020-1-26_4-21-37.png
Скинул монету 10 коп:
upload_2020-1-26_4-22-1.png
Макс. амплитуда на ADC 1.3В при значении 65534 (децимация и передискретизация аппаратные с приводом к 16 бит, сам SAR 14 бит).
 

pvvx

Активный участник сообщества
Проверка тестером потребления JDY-10 в режимах работы, sleep, deep-sleep.
Для испытаний взял свой текущий код от USB-BLE-ADC (он уже новый, исправленный и не тестовый, но не ещё не выложен). Это не суть.
Описал два переключателя KEY_K1, KEY_K2:
Код:
#define    KEY_K1                             GPIO_PB0 // K1
#define PB0_FUNC                        AS_GPIO
#define PB0_OUTPUT_ENABLE                0
#define PB0_INPUT_ENABLE                1
#define    PULL_WAKEUP_SRC_PB0                PM_PIN_PULLUP_1M

#define    KEY_K2                             GPIO_PA5 // K2
#define PA5_OUTPUT_ENABLE                0
#define PA5_INPUT_ENABLE                1
#define    PULL_WAKEUP_SRC_PA5                PM_PIN_PULLUP_1M
В цикл loop() добавил их опрос и переключение в режимы deep-sleep c разными опциями:
Код:
        if(!device_in_connection_state) {
            if(!gpio_read(KEY_K1)) {
                gpio_setup_up_down_resistor(KEY_K1, PM_PIN_PULLDOWN_100K);
                cpu_sleep_wakeup(DEEPSLEEP_MODE, PM_WAKEUP_TIMER, clock_time() + 30000 * CLOCK_SYS_CLOCK_1MS);
            }
            else if(!gpio_read(KEY_K2)) {
                gpio_setup_up_down_resistor(KEY_K2, PM_PIN_PULLDOWN_100K);
                gpio_set_wakeup        (KEY_K2, 1, 1);  // core(gpio) high wakeup suspend
                cpu_set_gpio_wakeup (KEY_K2, 1, 1);  // pad high wakeup deepsleep
                cpu_sleep_wakeup(DEEPSLEEP_MODE, PM_WAKEUP_PAD, 0);
            }
        }
Включаем подопытного в рабочий режим с выдачей BLE маяка (не соединяемся, работает sleep + обычные beacon на 3 канала с TX +8дБ):
upload_2020-1-28_0-32-53.png
Замыкаем KEY_K1 на GND. Модуль должен заснуть на 30 секунд в режиме deep-sleep c работающим RTC:
upload_2020-1-28_0-34-31.png
Замыкаем KEY_K2 на GND. Модуль должен заснуть на в режиме deep-sleep c пробуждением когда на КЕY_K2 появится "1":
upload_2020-1-28_0-35-58.png

PS: Что-то ещё дает утечку в данном коде от проекта USB-BLE-ADC, но это тоже не столь важно для него... Если всё подобрать, подтяжки и прочие состояния GPIO и вручную отключить ненужные встроенные контроллеры и их CLK, то получим уже 1.7..1.9 мкА в deep-sleep c RTC и 0.9 мкА в deep-sleep c GPIO при питании 3.3В(!). Это уже было проверено на других модулях и на том-же модуле, но на спец прошивке...
 

pvvx

Активный участник сообщества
Доп. утечки от того, что остался активным USB-SWS просыпалка, пин пробуждения и переключения режимов USB/BLE и какие-то утечки на не полностью отключенные Ref или ещё чего из предустановок ADC... И так сойдет :)
 

pvvx

Активный участник сообщества
Для тестов к JDY-10 подключил 12-ти битный I2C DAC в виде модуля с MCP4725 и его выход напрямую на вход SAR c DFIFO в TLSR8266.
Вписал в js чтобы после прихода n пакетов от ADC передавалось новое значение для DAC, увеличенное на единицу...
Собрал всё на соплях - на проводках с коннекторами тип Arduino и крокодилах вместо скруток :)
Вылезло это:
upload_2020-2-3_22-26-42.png
Питание шумное, MCP4725 все его шумы прямо в ADC... Пофигу.
Включим малую фильтрацию в dygraph.js:
upload_2020-2-3_22-29-13.png
Уже нагляднее...
Сохранил для уточнения отношений ADC в csv и перерисовал с разными шагами линейного фильтра (10 и 75 точек):
BLE-DAC-ADC.gif
В общем совпадает.

Один шаг 12-ти битного MCP4725 от опорных 3.3В = примерно 805.7 мкВ
10 шагов -> примерно 8.06 мВ

TLSR8266 SAR у меня включен на Ref 1.3 В и после аппаратной децимации и амплитудной коррекции выдает 16 бит.
Т.е. его 405 его единиц - это 8.034 мВ.

Расхождения не велики.
 
Сверху Снизу