Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Ответить

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Чт ноя 18, 2021 14:33:38

Ser60 писал(а):Они уже вызываются внутри sl_system_init() в main() после конфигурации соответствующих опций проекта.


А какие опции надо выбрать? Ну т.е. я понимаю, что должна появиться папка srvices, но как это сделать?
И какой файл надо приинклюдить, в котором есть описание этой функции? В справке же вообще не шиша нету.

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Чт ноя 18, 2021 15:41:40

открываете .slcp файл, там выбираете вкладку software components. Ну и чтобы узнать что там по умолчанию уже стояло, поставьте галочку Installed components и для сужения поиска можно сделать фильтр на "init". И если у того компонента нарисована шестерёнка, то там есть возможность каие-то параметры настроить.
Изображение

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Чт ноя 18, 2021 16:31:53

Не, подождите...Мне зачем все эти .slcp? Я всего лишь хочу средствами SDK включить тактирования ядра и периферии от RC осциллятора. Выбрать частоту и коэффициент деления прескалера. Я открываю справку
https://docs.silabs.com/gecko-platform/ ... evice-init
и понимаю, что надо вызвать функции
sl_device_init_clocks()
и
sl_device_init_hfrco()

Пока оставим за скобками, как передавать коэффициенты делителей.

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

А файла с расширением .slcp в моём проекте нет.

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Чт ноя 18, 2021 17:17:58

У вас SS пятой версии или четвертой? Хотя по приведенному Вами скриншоту, похоже пятый. Вот эти модули добавляют в проект.

В main.c есть вызов функции sl_system_init(); она находится в
gecko_sdk_3.2.3/platform/service/system/src/sl_system_init.c и содержит
Код:
void sl_system_init(void)
{
  sl_platform_init();
  sl_driver_init();
  sl_service_init();
  sl_stack_init();
  sl_internal_app_init();
}


Вот первая функция sl_platform_init находится в каталоге autogen/sl_event_handler.c:
Код:
void sl_platform_init(void)
{
  CHIP_Init();
  sl_device_init_nvic();
  sl_device_init_dcdc();
  sl_hfxo_manager_init_hardware();
  sl_device_init_hfxo();
  sl_device_init_lfrco();
  sl_device_init_clocks();
  sl_device_init_emu();
  nvm3_initDefault();
  sl_power_manager_init();
}


И вот этот autogen генерится на основании добавленных в software components модулей. А сами функции в SDK platdorm/service...

Для уточнения, когда вы создаёте проект, какой SDK выбираете и какой шаблон? У меня, правда, опыт только в BGM220 и с EFM32GG12. Вот второй я делал с Empty C project, и всё равно, с настройкой тактовой мне возиться не пришлось...

p.s. Вы же видели кнопку "Force Generation" - она находится в slcp файле на главной вкладке.

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Чт ноя 18, 2021 22:53:07

parovoZZ писал(а):Я всего лишь хочу средствами SDK включить тактирования ядра и периферии от RC осциллятора. Выбрать частоту и коэффициент деления прескалера.
Нет проблем. Если хотите сделать это без конфигуратора ресурсов, в RM на чип в разделах CMU и Oscillators всё расписано на уровне регистров. Я не знаю с каким чипом Вы работаете, но ниже мой пример инициализации. HFRCO включается чипом дефолтно во всех МК серии Gecko на дефолтной частоте (какая она зависит от модели МК и указана в RM). Например, в случае ERF32MG12 она 19 мгц. Не утверждая, что это правильный подход, ниже грубый пример для этого чипа без использования каких-либо библиотек.
Или лучше на основе API из EMLIB
Но правильнее всего будет воспользоваться конфигуратором ресурсов, как указал uldemir выше.

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Сб ноя 20, 2021 22:34:33

Никак не могу одолеть эту шайтан студию.
Создаю новый проект, добавляю в него модули. При этом в папку emusb добавляются линки на файлы из sdk. Но в папке emlib добавляется только один файл em_system.c.
em___trable.png
(54.08 KiB) Скачиваний: 120

В includes все пути добавились.
В таком виде студия все ссылки находит и даже компилятор что-то компилирует. Но линкер (ld.exe) в итоге ругается, что не может найти точки входа из файлов библиотеки USB. После чего студия также вываливает ошибки, что упрощает поиск, т.к. из лога ссылок нет (в отличие от IAR). Если из студии перейти по F3 на объявление функций, то студия это выполняет (удивительно). Таким образом выяснил, что не видны следующие файлы:
em_cmu.c
em_emu.c
em_timer.c

Я их тупо скопировал в папку emlib своего проекта и проект собрался.

Так вот вопрос: как средствами студии сделать так, чтобы файлы модуля emlib линковались в папку emlib проекта?

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Вс ноя 21, 2021 00:55:27

parovoZZ писал(а):как средствами студии сделать так, чтобы файлы модуля emlib линковались в папку emlib проекта?
Right-click на папку emlib, далее New->File. В Advanced ставим галку на Link to file..., кнопкой Browse выбираем файл и Finish.

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Вс дек 19, 2021 02:59:07

Добрый день.

А с range test в Студии кто-то игрался? У меня проблема - не могу запустить range test на плате без LF кристалла.. Баг странный, т.к. визуально приложение работает, цепляюсь телефоном к устройству, задаю настройки TX, могу работать через консоль, но когда включаю передачу кадров, счетчик тикает, но приемник ничего не ловит. Если эту же прошивку заливаю на плату, где есть LF кварц, то все работает. Чип EFR32MG21.
У меня нет понимания, как правильно проинициализировать LFRCO, возможно проблема в этом.. В студии включил соответствующую настройку, но не увидел появление соотв. файла
SS5.JPG
(156.04 KiB) Скачиваний: 99


Также проделал данную операцию https://docs.silabs.com/bluetooth/3.1/g ... ock-source

но результата нет. В справке говорится про чип EFR32xG22, но по идее и с EFR32MG21 должно работать.

По сути, мне LFRCO не нужен, т.к. в целевом приложении сна нет, но я так понимаю для запуска теста дальности, т.к. это Bluetooth пример, то сон в коде обязателен.

Может натолкнете на мысли, куда копать?

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Чт дек 23, 2021 02:56:42

В справке говорится про чип EFR32xG22, но по идее и с EFR32MG21 должно работать.
Не должно, поскольку в отличии от BG22 у MG21 низкочастотный RC генератор не имеет режима precision с калибровкой от HFXO, и его точность не достаточна во многих случаях для нужд Bluetooth стека. В этой модели нечего конфигурировать для LFRCO, поэтому соответствующий хедер не появляется в проекте. Но если захотите использовать LFRCO, то нужно будет руками поменять выбор его в sl_device_init_clocks(), как в справке написано. С какими-то приложениями и будет работать, но не факт, что с Bluetooth.

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Вс янв 02, 2022 20:47:44

Спасибо за ответ. В моем случае приложение Range Test заработало. Попробовал повторно, и все получилось, почему до этого не получалось, не знаю. Не раз замечал, что иногда не компилируется правильно прошивка, но после закрытия и повторного открытия SS все начинает компилиться. Особенно это выражено, когда комп много раз засыпает и работает без выключения несколько дней. Речь про Windows, на Маках говорят лучше работает. Никто подобные странности SS под Win не замечал?

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Пн янв 03, 2022 04:38:52

Поздравляю! Я свой комп вообще не выключаю месяцами, только в сон помещаю. Studio на нём работает без сбоев стабильно. Проблем, что Вы описали, не наблюдал.

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Ср апр 27, 2022 04:25:54

Silicon Labs организует серию воркшопов с упражнениями и лабами, посвящённую новейшему семейству SoC xG24, предназначенного для разработки приложений Bluetooth/Matter/OpenThread/Zigbee/Mesh. Для участия требуется регистрация. Зарегистрированным участникам фирма обещает прислать бесплатно демо-плату BRD2601B, см. вводный вебинар по ней. Я свою плату получил сегодня. Понимаю, что отсылка плат участникам из России на настоящий момент может быть пока неактуальной, но для заинтересованных коллег из ближнего зарубежья вполне.

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Ср май 04, 2022 13:19:51

Глупый вопрос... а чего этот модуль такой внезапно дорогой? на маузере 74 евро! Сам кристалл, даже поштучно, меньше десятки.

Да и странные эти модули. Ну почему, они на breakout соединители выводят те пины, что уже подключены к периферии на самой плате! Я так надеялся, что смогу найти применение для себя этого AI/ML, но... реально ничего к этой плате дополнительно подключить нельзя. Даже набортные кнопки и светодиоды шарятся с этими контактами.

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Ср май 04, 2022 18:50:26

Да, действительно, цена изуверская. Обязательно спрошу их при случае. К сожалению, не смог присутствовать на вчерашнем вебинаре по xG24/Matter, а то спросил-бы там. Могу предположить, что цена высокая частично из-за того, что ML сейчас - это super hot topic. Все с ним буквально с ума посходили, а эта плата замечательно подходит для прототипирования ML приложений, в частности из-за огромного объёма флеша и богатым выбором сенсоров на плате, и в придачу чипа с огромной внешней флеш-памятью. Я занимался ML зимой на старой плате Thunderboard Sense 2 и очень впечатлён как эта тема интегрирована в Studio.

То, что пины на внешнем коннекторе общие с сенсорами не беда, т.к. для каждого сенсора имеется возможность отключить от него пины МК и управляющие сигналы для этих коммутаторов не выведены на внешний коннектор. Зато для большинства ML приложений можно обойтись имеющийся на плате периферией и не нужно подпаивать ещё что-то к ней.

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Пн июл 25, 2022 22:35:25

Для текущей конструкции мне срочно понадобился Bluetooth модуль. К сожалению, при нынешнем дефиците изделий электроники найти его в продаже не представилось возможным. И хотя дистрибюьторы фирмы обещают возобновление их продаж уже в сентябре этого года, модуль мне нужен был прямо сейчас. Кроме того, я давно хотел попробовать изготовить модуль из "рассыпухи". К счатью, сами чипы модуля, включая необходимые пассивные элементы, имеются в продаже в избытке прямо сейчас. И наконец, мне достаточно было Bluetooth чипа с минимальным числом выводов в корпусе QFN32, поскольку в большинстве моих конструкций используется лишь малая часть выводов фабричных модулей, выполненных, кстати, на основе чипов в корпусах с 40 выводами. Сказано - сделано. Тестовый вариант модуля, показанный ниже, выполнен на двусторонней плате, нижняя сторона которой используется исключительно в качестве земли. Не заморачиваясь изготовлением дорожек на обратной стороне платы для тестового варианта, я реализовал несколько неразведённых соединений проволочными перемычками на самодельной плате, выполненной по технологии ЛУТ.
Хотя геометрия модуля выполнена по образу и подобию промышленных плат, я не претендую на оптимальность согласования антенны с чипом. Интересно было проверить работу модуля в реальных условиях. Для этого я собрал тестовое приложение Bluetooth сервера и выставил модуль на веранде дома. Сам-же пробовал соединится с модулем из разных точек в округе. Ниже привожу результат связи модуля с со старым телефоном Samsung Galaxy S8, который, кстати, не предназначен для установления дальней Bluetоoth связи.
И хотя далеко не для всех устройств требуется Bluetooth связь с ними на большом расстоянии, как видно из картинки, связь в условиях отсутствия прямой видимости при мощности модуля +8dBm оказалась устойчивой на расстоянии 143м при старой версии Bluetooth-4 (этот телефон не поддерживает Coded PHY версии Bluetooth-5, при котором возможна гораздо большая дальность связи). При использовании фабричного модуля связь с ним возможна на расстояниях того же порядка.

Стоимость самых "дорогих" компонентов модуля (чип + антенна + 2 кварца) по сегодняшним ценам составляет около $7 против цены фабричного модуля в $11. Разница и такая-уж сушественная и делать свой модуль лишь для экономии пары долларов не имеет смысла. Однако, теперь я смогу лучше интегрировать Bluetooth в свои малогабаритные устройства без "платы (модуля) на плате (устройства)". Благодаря воодушевившим меня результатам тестирования, сейчас разрабатываю реальное устройство также на отдельном Bluetоoth чипе. В нём перерабатываю прототип разводки платы под использование деталей минимального размера 0402, которые паять паяльником гораздо проще, чем 0201 на тестовом модуле (печи у меня дома нет).

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Пт ноя 11, 2022 07:00:29

Вопрос по секюрности. Есть устройство без кнопок, дисплея и светодиодов. Хочу сделать безопасное подключение с авторизацией и бондингом. Т.е. на корпусе пишу число - типа passkey и считаю что это устройство инициатор с sl_bt_sm_io_capability_displayonly. Но оказалось, что в этом случае происходит событие sl_bt_evt_sm_passkey_display_id, которое хочет показать свой passkey и ожидает от респондера его же. Можно ли в каком-нибудь режиме сделать так, чтобы валидировался по passkey заранее прописанному и происходило событие sl_bt_evt_sm_confirm_passkey_id. Но как я вычитал, это событие происходит только при типе авторизации numeric comparison и не могу представить сценарий как это применить.

Хм, вообще не вижу как получить число что вводит клиент при авторизации, чтобы самому сказать правильное или нет. Похоже, что стек его в юзеровскую программу не выпускает совсем.

В принципе, устроил бы вариант, Initiator Input & Responder Input - но этот вариант работает, только если оба устройтва KeyboardOnly, что в случае респондера EFR Connect не так.

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Сб ноя 12, 2022 19:32:42

Статью мою читали? Если у ответчика нет средств ввода/вывода, то единственный возможный алгоритм в плане безопасности - это Just Works. При этом идентификация инициатора невозможна и спаривание заключается в обмене ключей шифрования и передаче соответствующих данных в зашифрованном виде.

Для повышения уровня безопасности можно в настройках SM указать запрет на новые бондинги и разрешить соединение только со спаренными ранее клиентами. Обычно я для этих целей использую кнопку, состояние которой проверяется при ресете и если она нажата, то стереть все старые бондинги и разрешить новые. Если кнопки нет, то можно ввести в профиль сервера характеристику типа Lock, управляемую клиентом. Как только клиент запишет 1 в неё, то запретить новые бондинги и т.п. как указано выше и записать эту переменную в NVM, состояние которой будет проверяться при ресете вместо кнопки.

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Пт янв 06, 2023 08:00:38

Двумя сообщениями выше я писал про свой первый опыт конструирования Bluetooth модуля на основе радио-чипа и дискретных компонентов. Тогда это была скорее необходимость из-за ковидного дефицита готовых модулей, которая с тех времён во многом уже разрешилась. Для своего нового проекта я решил попробовать SIP (System-In-Package) модуль семейства BGM220SC. В корпус размером 6х6 мм фурма Silicon Labs ухитрилась разместить не только сам радио-чип, но и всю пассивную обвязку, включая РЧ кристалл, дроссель DC/DC конвертера, балун сопряжения с антенной, и даже саму антенну. На плате помимо него следует установить лишь часовой кристалл (опционально), и вытравить специальную конфигурацию земляного контура как часть согласования с антенной. Все размеры контура имеются в ДШ. Извиняюсь за качество снимка, получилось немного не в фокусе.
Загрузил в него тестовое приложение bluetooth_soc_empty из Simplicity Studio, всё работает на ура. Максимальная мощность этой модели модуля 0 dBm, что достаточно моему приложению для связи в пределах жилой комнаты. Такое решение оптимально, если требуется небольшой радиус связи наряду с минимальными размерами устройства. Как руки дойдут, поставлю на следющую плату аналогичный модуль с выходной мощностью +6 dBm, тогда и на дальность связи будет иметь смысл его протестировать.

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Пт янв 06, 2023 11:50:16

Глупый вопрос... а чего этот модуль такой внезапно дорогой? на маузере 74 евро! Сам кристалл, даже поштучно, меньше десятки.

Да и странные эти модули. Ну почему, они на breakout соединители выводят те пины, что уже подключены к периферии на самой плате! Я так надеялся, что смогу найти применение для себя этого AI/ML, но... реально ничего к этой плате дополнительно подключить нельзя. Даже набортные кнопки и светодиоды шарятся с этими контактами.

Десятка баксов за чип??? Только ради банальной передачи данных по Bluetooth? Разве не существует дешевых китайских аналогов?

Re: Разработка Bluetooth приложений на модулях Silicon Labs

Пт янв 06, 2023 16:31:30

Дешевых китайских аналогов такого модуля с похожими характеристиками и настолько продвинутой средой разработки не существует. В нём имеется не только "банальный" Bluetooth трансивер, но и куча весьма неплохой периферии как у качественного микроконтроллера, что позволяет выполнять программу пользователя и разработать все устройство на основе одного такого чипа. К тому-же, по современным ценам $10 в розницу за такой модуль даже для любительских поделок совсем не дорого и доступно широкому кругу любителей.
Ответить