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

Вопрос Регистр коррекции частоты в esp8266 ?

russus_16

New member
Доброго всем времени суток! Очень надеюсь с помощью знающих людей прояснить некоторые моменты, связанные с корректировкой частоты.

Начал программировать чип недавно. Судя по всему, что я нигде не встретил похожего вопроса, то я не до конца понимаю всю схему работы с esp8266. Насколько мне известно, для массового производства критично знать как корректировать частоту RF сигнала. Как это сделать в esp8266 ?

Что предлагают делать китайцы:
Они в каком-то из документов предлагают корректировать ее 1) конденсаторами вокруг внешнего кварца либо 2) использовать ESP8266 Download Tool, где можно выставить Frequency Offset и cгенерировать init.bin.

Экспериментируя с последним, видно что в bin файле меняется 113 байт и не очень понятно как он соотносится с введенным значением офсета (максимальное значение, которое программа позволяет выбрать это 400 кГц, в бинарнике становится 0xCE ...минимальное 50 кГц становится 0xFA). При этом Downloader Tool пишет, что задать можно только положительный офсет. А как же отрицательный (частота же может уходить как в плюс так и в минус)? Ну и последний вопрос, копируется ли это значение бутлоудером в какой-нибудь специальный регистр (как обычно коррекция и осуществляется на других чипах)?
 

pvvx

Активный участник сообщества
Судя по всему, что я нигде не встретил похожего вопроса, то я не до конца понимаю всю схему работы с esp8266.
Задайте эти вопросы на оф. сайте Espressif. Части SDK, работающие с WiFi и описываемые вами являются в их SDK "закрытыми" (требуют NDA).
Переменные из установок esp_init_data_default.bin копируются в структуру g_ic. Вся информация по ней является закрытой для простого обывателя. Попытки разбора к уровню ваших вопросов в ESP8266 предпринимались только мной. Других подвижек в сети за два года не замечено.
i113.gif
Установите в модуль web-свалку и экспериментируйте со значениями переменных в data_default.bin. Там, в Web, есть к этом интерфейс... Изменили, перезапустили модуль и смотрите реакцию...
Исходные коды Espressif пусть даже до уровня драйвера WiFi не раскроет. Причину они отписывали как "боятся хакеров" :) На самом деле там, в их либах, просто куча нарушений чужих патентов... типа копирования кода ieee80211 с разных открытых источников, без указания что и как...
Выпустить открытые исходные коды с драйвером WiFi могут позволить себе только крупные фирмы и или причастные к развитию стандартов WiFi. К примеру Realtek– он может, если захочет :) , выпустить полностью открытый исходный код к своим модулям на RTL871x… :)
 
Последнее редактирование:

russus_16

New member
@pvvx,
Спасибо за ответ. Что-то в таком роде я, наверное, и ожидал услышать. Задал вопрос на форуме Espressif ради интереса. Естественно, не жду что они ответят. Даже сомневаюсь, что мой вопрос пройдет модерацию :). Однако, попытаться надо.

Похоже, придется идти описанным вами способом со сменой параметров и перезапуском. Веб интерфейс выглядит вполне дружелюбным :).

Возможно, попробую копнуть глубже и дизассемблировать наших китайских друзей. Надеюсь знаний хватит.
 

pvvx

Активный участник сообщества
Возможно, попробую копнуть глубже и дизассемблировать наших китайских друзей.
Копирование параметра где-то в этой процедуре (register_chipv6_phy() esp8266web/app_main.c at master · pvvx/esp8266web · GitHub)
Уровень до драйвера WiFi большей частью "реверсирован" на СИ. Но не всё. Причина - у китайцев в каждой версии SDK постоянно это дело меняется, а драйвер WiFi в каждой версии имеет свои ошибки :) Учитывая выпускаемые ими "патчи" к каждой SDK, версий SDK уже более сотни и более сотни вариантов "китай" вставок в разные процедуры до уровня WiFi драйвера cо своими сотнями ошибок :) Т.е. никакой стабильности там не наблюдается, по причине кучи ошибок и недочетов в их коде...
Некоторые части "реверса" насваливал в esp8266web/info/libs at master · pvvx/esp8266web · GitHub
Но там бардак с версиями и использовать не стоит - только в ознакомительных целях...
 
Последнее редактирование:

russus_16

New member
@pvvx, Спасибо!!!

Создал тему на сайте Espressif:
Frequency Correction Register in esp8266 - ESP8266 Developer Zone

Пока без ответа :)

А я правильно понял, что esp8266 поддерживает только три кварца (40 MHz, 26 MHz, 24 MHz)? То есть если не лезть в дебри реверсивного инженеринга, то с кварцом в 32MHz работать он просто не будет?
 

pvvx

Активный участник сообщества
@pvvx, Спасибо!!!

Создал тему на сайте Espressif:
Frequency Correction Register in esp8266 - ESP8266 Developer Zone

Пока без ответа :)

А я правильно понял, что esp8266 поддерживает только три кварца (40 MHz, 26 MHz, 24 MHz)? То есть если не лезть в дебри реверсивного инженеринга, то с кварцом в 32MHz работать он просто не будет?
Он не будет и с другими, даже описанными c текущим SDK.
Т.е. смотря что подразумевается под "работать". Кто будет переписывать всё остальное под другое тактирование (часть потрахов чипа тактируется напрямую от кварца)?
Перенастроить PLL проца можно esp8266web/app_main.c at master · pvvx/esp8266web · GitHub
 
Последнее редактирование:

russus_16

New member
Прочитал более подробно документацию на esp8266. Есть замечательная функция автокоррекции частоты в RF настройках в файле esp_init_data_default.bin. В принципе, если использовать их в качестве датчиков (что является наиболее популярным решением на данный момент), то необходимость писать в регистр напрямую не такой уж актуальный.
 

pvvx

Активный участник сообщества
Прочитал более подробно документацию на esp8266. Есть замечательная функция автокоррекции частоты в RF настройках в файле esp_init_data_default.bin.
Функции то там нет, есть переменные...
В принципе, если использовать их в качестве датчиков (что является наиболее популярным решением на данный момент), то необходимость писать в регистр напрямую не такой уж актуальный.
А к чему происходит автоподстройка? Вдруг поможет в решении последних проблем с отваливанием station ESP, а то впечатление что она происходит на внешнюю помеху ...
 

russus_16

New member
Функции то там нет, есть переменные...
Да, согласен. Честно говоря, очень хочется проверить как оно работает и работает ли. Если получу доступ к частотомеру, то обязательно отпишусь. Что интересно, ESP DOWNLOADER корректирует частоту только вверх, хотя в доках написано, что можно прописать коррекцию и в обе стороны.

Из ESP8266_RF_init.xls:
вот ссылка на картинку настроек: rf_init_snapshot.JPG - Просмотр картинки - Хостинг картинок, изображений и фотоальбомов



А к чему происходит автоподстройка?
Информации по этому нет :). Точнее, мне не встречалась. По логике, я бы сказал, что она скорее всего происходит от пойманной Wi-Fi сети с наибольшей силой сигнала. Только не бросайте в меня камни, если это полная ерунда :D
 
Последнее редактирование:

pvvx

Активный участник сообщества
Информации по этому нет :). Точнее, мне не встречалась. По логике, я бы сказал, что она скорее всего происходит от пойманной Wi-Fi сети с наибольшей силой сигнала. Только не бросайте в меня камни, если это полная ерунда :D
Примерно. Возможно по этому у satation на ESP "сносит крышу" при рядом работающем другом модуле. Причем "унос крыши" происходит навсегда, пока не произведен аппаратный пересброс мозгов. Возможно это очередной БАГ чипа ESP8266, неисправимый программно. Т.е. чип не рекомендуется использовать для серийки. Только побаловаться. А т.к. либы WiFi закрыты, то там могут быть закладки и прочие китайские чудеса. Во всяком случае чип ужасно работает с 802.11n - мешает работать другим station и прочей шушаре типа bluetooth и т.д.... Сертификацию альянса WiFi он не проходил.
Версия SDK идет с другой либой, чем у той, на которую куплен сертификат и не даны настройки для "сертификата". У других иногда указывают такие настройки:
RTL00MP3/lwipopts.h at master · pvvx/RTL00MP3 · GitHub
По ним сразу видно, что у ESP не хватит памяти, если он использует LwIP.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Да, согласен. Честно говоря, очень хочется проверить как оно работает и работает ли. Если получу доступ к частотомеру, то обязательно отпишусь. Что интересно, ESP DOWNLOADER корректирует частоту только вверх, хотя в доках написано, что можно прописать коррекцию и в обе стороны.
Ну если там signed char - то возможно старший бит дает минус?
 

sharikov

Active member
Возможно по этому у satation на ESP "сносит крышу" при рядом работающем другом модуле. Причем "унос крыши" происходит навсегда, пока не произведен аппаратный пересброс мозгов. Возможно это очередной БАГ чипа ESP8266, неисправимый программно.
Опишите сценарий как повторить "снос крыши навсегда при рядом работающем другом модуле".
В режиме softAP такое проявляется ?
Из прикольного: у меня когда раскаляется глючащий esp виснет рядом лежащая мышка (и не развешивается до передергивания), естественно в этом момент все сети wifi в округе лежат.
 

pvvx

Активный участник сообщества
Опишите сценарий как повторить "снос крыши навсегда при рядом работающем другом модуле".
Если рядом c модулем включать и выключать другие WiFi устройства, которые подключены к той-же станции, то ESP отваливается от AP и начинает что-то передавать на запросы к нему. Но передает криво. В логах одни реконнекты пакетов, если TCP. При этом все каналы WiFi заняты на перетрансляцию и никто другой пробиться не может.
Программное отключение station и обратное её включение ситуации не исправляет. Только за ногу RESET или через deep_sleep - он дергает RESET.
В режиме softAP такое проявляется ?
Нет.
Что можно сказать о "softAP" ? Она разве думает о других устройствах в WiFi диапазоне? Нормальная AP отслеживает всякие блутузы и синхронизирует своих клиентов...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Из прикольного: у меня когда раскаляется глючащий esp виснет рядом лежащая мышка (и не развешивается до передергивания), естественно в этом момент все сети wifi в округе лежат.
"все сети wifi в округе лежат" если ESP просто прервать на передаче. Например зажать RESET или пересбросить в режим программирования. Тогда, пока не перезапустите в нормальный режим всё в округе будет лежать. :)
Даже по RESET ESP не останавливает передатчик, но при этом переключает PLL на дефаулт и орет в эфир на диких частотах. :) При этом ещё жрет немерянно (при удержанном RESET).
То-же самое по "протектед", если вывалиться на передаче :)
Всё это очень мешает при отладке - заливаешь в ESP новую прогу и, если попало ему при передаче, то все остальные лежат, пока он не запрограммируется и перезапустится. Надо в esptool вписать первым передавать команду отрубания WiFi блока...

-----
Может с ESP32 будет лучше.
Тут пишут:
  • Не требуется подстройка RF.
 
Последнее редактирование:
Сверху Снизу