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

BLE SoC PHY6202

pvvx

Активный участник сообщества
а можно краткую выжимку у PHY есть плюсы по сравнению с Telink?
Нет никаких плюсов.
Есть различия - основное в том, что PHY - это Cortex M0 и и имеет SWD интерфейс отладки (если включить). Я не использую.
А у Telink свой интерфейс - Telink SWire - всё по одному проводу.
У Telink чипов есть USB, если хватает ножек на корпусе - он есть во всех кристаллах.
У Telink есть все виды SDK - Zigbee, BLE одновременно с Zigbee и т.д.
У PHY ничего нет. Вот пытаемся сделать работающий BLE SDK...
 

cool2000

Member
Это я поторопился, проект extBlePeripheral, собирается только с библиотеками для gcc из SDK. Только добавил недостающее из keil, а в самих исходных текстах ещё много чего не хватает... :(
 

pvvx

Активный участник сообщества
Проблема не соединения и потери связи при напряжении более 2.5В связана с DC-DC.
В PDF PHY6222 два варианта подключения - без DC-DC и с ним. Там замыкается вход (который идет c дросселя при DC-DC) на +Питания - c этого входа всё равно работает LDO, а DC-DC видимо для экономии...
Выпаивать дроссель не стал, а просто замкнул выход DC-DC с дросселя к питанию 3.3В и всё ok.
 

pvvx

Активный участник сообщества
@cool2000 - перепроверил SDK на вариант сбоя соединения на PHY6222 без QC. Имеющийся PHY6222, самый сбойный, на Keil варианте работает без сбоев. Чего-то не хватает в GCC SDK.
 

pvvx

Активный участник сообщества
Проблема со стабильной работой соединения решена. Дополнительно добавлена следящая коррекция хода 32KRC генератора...
 

cool2000

Member
@cool2000 - перепроверил SDK на вариант сбоя соединения на PHY6222 без QC. Имеющийся PHY6222, самый сбойный, на Keil варианте работает без сбоев. Чего-то не хватает в GCC SDK.
Как раз сейчас ковыряюсь с восстановлением исходного кода SDK 3.1.3. %80 прошёл по минимуму для BLE Peripheral.
Идёт медленно, из-за множества мелких изменений и в библиотеках GCC нет части функции, которые есть в Keil.
 

pvvx

Активный участник сообщества
Как раз сейчас ковыряюсь с восстановлением исходного кода SDK 3.1.3. %80 прошёл по минимуму для BLE Peripheral.
Идёт медленно, из-за множества мелких изменений и в библиотеках GCC нет части функции, которые есть в Keil.
Там, в SDK 3.1.3, именно 80% лишнего кода :)
Я поглядел его вскользь в IDA. Взял от туда только направление - там корректируют RTC каждый раз. И написал свой вариант. Больше ничего нужного в SDK 3.1.3 вроде нет.
 

pvvx

Активный участник сообщества
Нашел ещё один тип - THB3.
1708728288939.png
Заказал... :) Будет седьмым в клоне PHY6222...

Кто видел устройства с модулем Tuya ZPU (PHY6225) ?
 

pvvx

Активный участник сообщества
Да, было бы интересно посмотреть. Маловат объем ОЗУ для Zigbee, всего 64К, флеш-память 1М. Чувствительность -100дБ, и даже есть сертификация FCC.
64к у большинства Zigbee, включая популярные координаторы. У старых вообще меньше...
У PHY6226 это наверно PHY6225 в другом корпусе.
Памяти у большинства PHY62xx = 64k + SRAM_BB 4KB + SRAM_cache 8KB.

---

Есть ещё бяда - на последнем TH05F у меня похоже что-то неладное с RF частотой. Путается, но не разрывает связь - по графику видны дубли tx-rx и загрузка OTA не 46..48 секунд, как у других, а 90+ секунд.
Они все эти PHY6222(QC) кривые в зависимости от партии, или PHY = куча брака?

RC генератор болтается, особенно на чипах с маркировкой без "QC". А болтается по причине болтанки напряжения где-то при переходах в/из sleep...
У QC что-то видимо стабильнее держится.
Может отключается какой-то лишний ключ питания, связанный с RC генератором? Он и от наводок работать будет, но нестабильно...
 

pvvx

Активный участник сообщества
Я пробовал и ноги, которые имеют связь с ADC, сажать pulldown, включать делители на их входах... Вдуг цедят в потроха(?). Что-то меняется но не особо...
Вешать резистор на выход DC-DC я пробовал изначально...
Но т.к. слишком много сразу менял для каждого экспа, может чего и пропустил. Времени дергать по одному параметру/условию нет.
И неясно, с чего вдрух потребление у чипа плюс всё остальное менее 2 мкА, к примеру у TH05F c отключенным LCD и при 3.3В, когда в даташитах от PHY пишется о большем токе?
 

pvvx

Активный участник сообщества
В SDK есть включение Zigbee модуляции и для PHY6222. И тайминги в Zigbee не настолько критичны, как в BLE. Zigbee же тормоз ещё тот.... Батареек разработчикам Zigbee не жалко, а так-же объем кода раз в десять нужен больше для простейшего устройства Zigbee 3.0. В итоге жрет это Zigbee в дцать раз больше, если сравнивать с BLE при одинаковом объеме передачи данных. Но юзеры всё так-же ведутся на рекламу, что Zigbee - это энергоэффективный протокол. Наверно сравнивали с WiFi :)
 

pvvx

Активный участник сообщества
Особо обманутые Zigbee всегда в пример приводят датчик температуры и влажности Xiaomi Aqara. :love:
По этому делать Zigbee на PHY - это когда совсем уже нечего будет делать, после BLE PAwR на Coded PHY cо стандартным (теперь с BT5.4) шифрованием BLE рекламы :)
 

cool2000

Member
И неясно, с чего вдрух потребление у чипа плюс всё остальное менее 2 мкА, к примеру у TH05F c отключенным LCD и при 3.3В, когда в даташитах от PHY пишется о большем токе?
В предыдущих ревизиях datasheet у них было указано 3.5мкА. Потом написали 13.5, наверное из-за кривого SDK?😉

В описании Tuya ZPU ещё интересная фраза есть:
This device is intended only for OEM integrators
 

pvvx

Активный участник сообщества
Во всех прошивках от Tuya в Flash по адресу 0x11001000 записана только калибровка ADC.
Но она не сильно помогает. Различия замеров ADC при наличии и со стертым значением калибровки не столь глобально (для замеров батареи).
 

pvvx

Активный участник сообщества
А насколько сильно результаты измерений отличаются от реальных значений напряжения?
Это сложно сказать. При измерении напряжение батареи проседает и отличается от напряжения в sleep.
Любой источник имеет внутреннее сопротивление...
1708793085242.png
Это при 10 Ом.

И если читать документацию, то на разных входах ADC разные коэффициенты.
И принимается не 32 замера для усреднения, а 30. B итоге кривой множитель.
Значение для P11 я подбирал сам - среднее по больнице. Для другого вывода порта тоже... :)
И в одном случае вывод подключен к +Vbat через резистор 0, а у других я делаю вывод в порт "1" + pullup - измеряется не батарейка, а GPIO выход
 

pvvx

Активный участник сообщества
Та с батарейками вообще всё сложно. Если CR2032 измерять без нагрузки - то там физико-химический эквивалент напряжения. При определенной температуре, пока батарея ещё работает, всегда около 3В.
А при нагрузке - напряжение падает. Подсевшая CR2032 - это за 100..200 Ом внутреннего сопротивления. При токе 3 мА - падение 0.3В, при TX это уже за 6мА -> 2.4В на батарее.
По этому если измерять через делитель с кондером, как это сделали в Tuya, то там всегда будет +3В, т.к. кондер зарядится во время sleep :)
 

cool2000

Member
Итак: добил patch.c и patch_ext_adv.c (отсутствовавший в SDK для сборки GCC). rf_phy_driver.o а также libphy6222_host.a и libphy6222_sec_boot.a пока взял из SDK 3.1.3. Проект собрался. Старался делать близко к тексту исходного patch.c, но надо бы ещё раз пройтись по всем функциям.
Найдётся у вас время и желание посмотреть?
 
Сверху Снизу