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

BLE SoC PHY6202

greyfox13

New member
А зачем мне WebBluetooth. Если что-то будет нужно под дроида буду делать. Вот родную PHY+ утилитку пока перевел на английский. А там видно будет. Доков все равно маловато. Где почитать про FLASH MODE и MIRROR MODE? Или у них всё по-умолчанию идет как MIRROR?
 

pvvx

Активный участник сообщества
А зачем мне WebBluetooth. Если что-то будет нужно под дроида буду делать. Вот родную PHY+ утилитку пока перевел на английский. А там видно будет. Доков все равно маловато. Где почитать про FLASH MODE и MIRROR MODE? Или у них всё по-умолчанию идет как MIRROR?
При чем тут "дроид"?
WebBluetooth - это обычный html c js и работает из интернет эксплорера. Писать на js просто, но я просто не успел и пока не было особой нужды.
А как иначе грузить ОТА по WEB? Мучится с установкой массивных пакетов для сборки под андроид или замучить питон под windows для доступа к BLE OTA?
Всё это гораздо сложнее и дольше писать, чем в WebBluetooth.
 

greyfox13

New member
Да, я знаю, только мне не нужно пока собирать информацию с BLE устройств на комп (было нужно, но потом передумал), а вот мобила как центральное устройство самое то. А получать данные по WebBluetooth на мобилу смысла не вижу, т.к. можно это сделать нативным приложением. Будет необходимость, может и займусь. C JS знаком, приходилось когда-то писать.
 

pvvx

Активный участник сообщества
вот мобила как центральное устройство самое то. А получать данные по WebBluetooth на мобилу смысла не вижу, т.к. можно это сделать нативным приложением.
Из WebBluetooth и нативное приложение в Android делается пару командами. :)
 

greyfox13

New member
Не пойму как отключить JTAG. Мне нужны пины которые он использует. В частности на LCD Reset идет GPIO_P01, который является JTAG_TDI, и, судя по всему, он мне после запуска обрезечивает экран.
 

greyfox13

New member
У меня почему-то при засыпании сбрасываются регистры GPIO и FMUX. Потому у меня дисплей и обрезечивается, т.к. спящий режим и сбрасывает и при просыпании значение выхода не восстанавливает. Но это полбеды. Сбрасывается и конфигурация мультиплексора, т.е. если я настроил SPI, то каждый раз при просыпании мне его нужно будет заново настраивать.
В доках настроек спящего режима не описано. Есть функция setSleepMode, но она ничего не дает. Та же ерунда будет и с I2C, ADC и др.
 

pvvx

Активный участник сообщества
У меня почему-то при засыпании сбрасываются регистры GPIO и FMUX. Потому у меня дисплей и обрезечивается, т.к. спящий режим и сбрасывает и при просыпании значение выхода не восстанавливает. Но это полбеды. Сбрасывается и конфигурация мультиплексора, т.е. если я настроил SPI, то каждый раз при просыпании мне его нужно будет заново настраивать.
В доках настроек спящего режима не описано. Есть функция setSleepMode, но она ничего не дает. Та же ерунда будет и с I2C, ADC и др.
Это везде так, во всех чипах BLE. Питание с большей части чипа снимается (часто включая и задающий генератор - кварц). Остаются только "подтяжки" на GPIO, но и их назначение для sleep могут отличатся от режима активности.
А т.к. Cortex обычно имеет тупую периферию и дикий HAL, то это требует множественных действий по её инициализации каждый раз, на что уходит много энергии...
Тут и сказывается как проработан уровень контроллеров в чипе и не всегда более быстрый CPU выигрывает (тот-же Nordic с nRF5 не лучший).
 

pvvx

Активный участник сообщества
Если чип умеет оставлять что-то активным, то ищите процедуру и флаги как это сделать. Но в таких чипах нужно каждый раз после просыпания инициализировать внутренности и перед засыпанием деинициализировать в состояние минимального потребления.
Это принимается по умолчанию и могли даже не писать в документации.
 

greyfox13

New member
Я соглашусь с тем, что оставлять включенным выход может быть энергозатратно (условно говоря), но сколько энергии сожрет сохранение настройки простейшей периферии? Ничто по сравнению с сохранением RAM. Это скорее не фича, это баг.
Вот регистр "DDR" для выводов же сохраняется, почему не сохраняется регистр который управляет включением GPIO0-3, 31-34? Для энергосбережения?
А биты-флаги может и есть, только документация почти нулевая.
 

pvvx

Активный участник сообщества
У SPI (и прочих устройств) же есть:
void hal_spi_init(void)
int hal_spi_bus_init(hal_spi_t* spi_ptr,spi_Cfg_t cfg)
int hal_spi_bus_deinit(hal_spi_t* spi_ptr)
А биты-флаги может и есть, только документация почти нулевая.
А как можно все состояния описать в документации?
По регистрам есть disasm :)
 

pvvx

Активный участник сообщества
Я соглашусь с тем, что оставлять включенным выход может быть энергозатратно (условно говоря), но сколько энергии сожрет сохранение настройки простейшей периферии? Ничто по сравнению с сохранением RAM. Это скорее не фича, это баг.
Возможно это просто не описано в их либах.
В том-же TLSR десятки бит в регистрах по вкл/выкл CLK для каждой малой части контроллеров и плюс такая-же куча бит RESET этих кусочков чипа. Плюс ещё выбор источника тактирования для каждой фигнющки.
Для ADC там более 5-ти блоков и для каждого выбирается тип тактирования и источник :)
Как это всё сохранить в либе, если требуется определенная последовательность включения блоков согласно вашей схеме? Power manager должен запоминать последовательность вашей инициализации?
 

pvvx

Активный участник сообщества
Пример:

Внешнее устройство просыпается при активной “1” на SCL или SDA. Перед обращением к нему вы запрещаете переход в sleep и устанавливаете GPIO подтяжку к “1”. Настраиваете контроллер I2C (включая подачу на него внутреннего CLK). Через тайм-аут (если нужно), переключаете MIX и/или учитываете изменение состояния выходов в инициализации I2C. Далее работаете с шиной I2C. Потом отключаете MIX, оставив подтяжку к “0”. Если требуется, то отключаете внутренний CLK на контроллер I2C. Только после этого разрешаете переход в sleep.

Кто должен производить все эти действия?

API? - Нафиг – оно будет только тормозить и мешать в разных ситуациях.
 

pvvx

Активный участник сообщества
Без осциллографа, PowerProfiler с высокой дискретностью замеров (менее 100 us) и прочих сканерах в BLE делать нечего и лучше вообще не лезть. Иначе не сможете оптимизировать потребление и все переходные этапы.
 

pvvx

Активный участник сообщества
Если будет полнейшее описание то время на его чтение и разбор гораздо больше чем проверить в живую. Как и в случае ковыряния в регистрах через JTAG - пока там разгребете какой бит и куда выскочила программа, уже десять раз можно залить новую программу с debug выводом меток и этапов в текстовом виде... Та и как работать с JTAG если MCU сбрасывается каждые 7 ms ?
 

pvvx

Активный участник сообщества
У PHY есть hal_pwrmgr.
Там назначаются калбаки:
int hal_pwrmgr_register(MODULE_e mod, pwrmgr_Hdl_t sleepHandle, pwrmgr_Hdl_t wakeupHandle)
Впишите на каждое внутренние устройство (включая GPIO) что ван нужно сделать при просыпании/засыпании.
На SPI там вписано:
static void spi0_sleep_handler(void)
{
if(m_spiCtx[0].spi_info != NULL)
hal_spi_bus_deinit(m_spiCtx[0].spi_info);
}
 

greyfox13

New member
Хоть уже не очень актуально, но акселерометр очень похож на SC7A20 от Silan Microelectronics. Распиновка такая же, регистры такие же, и даже WhoAmI = 0x11.
 

Mifody

New member
Подскажите пожалуйста. Я захотел использовать скрипт write_phy6202.py для записи дампа в phy6202. Установил pithon 2.7, Поправил пути в бат файле и номер ком порта. Но при запуске бат файла появляется ошибка: ImportError: No module named serial.
Как я понял, нет модуля serial, который импортируется в начале скрипта write_phy6202.py. Если эту строчку закомментировать, то пишет Error: Open COM1, 115200 baud! Порт рабочий, настроен именно так. В терминале принимает данные именно на этих параметрах исправно. Пробовал другой ком порт, через переходник. То же самое. Подскажите, что я делаю не так? В питоне ничего не делал до этого.
 
Сверху Снизу