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 мВ.

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