Например TDA7294

Форум РадиоКот • Просмотр темы - Разработка Bluetooth приложений на модулях Silicon Labs
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вс апр 18, 2021 11:06:58

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 87 ]    , 2, , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Вт сен 01, 2020 22:02:26 
Друг Кота
Аватар пользователя

Карма: 73
Рейтинг сообщений: 546
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3415
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Хочу обратить внимание на виртуальный Воркшоп фирмы Silicon Labs (9-10 сентября). Первоначально он планировался как обычная конференция с приличным орг-взносом, но из-за вируса они сделали его виртуальным и бесплатным. Более того, для участников некоторых классов воркшопа фирма предлагает свой dev. kit SLWSTK6006A с 50% скидкой. Интерес к нему огромный, и несмотря на высокую цену, при заказе он был даже упомянут как Out of stock. Однако, получил его сегодня быстрее чем обещали. Классы воркшопа обещают записывать и сделать доступными для участников, так что не большая беда если Кит приедет позже.
Это хорошее по цене предложение получить просто замечательный Кит для разраборки безпроводных приложений, включая Zigbee и Bluetooth/Mesh. Кстати, насчёт Mesh, неплохой Кит CYBT-213043-MESH под PSoC-6 имеется и у Cypress.
Выше я писал про новые модули DA14531 фирмы Dialog Semiconductor. Интересно, что сами чипы содержат DC конвертор, способный работать как на повышение напряжения, так и на понижение (к сожалению, модули сконфигурированы только на понижение). Однако, после работы с ними у меня осталось глубокое разочарование. ПО модуля явно недоработано, даже если перекомпилировать исходник. Переписка с их тех. поддержкой длится уже полтора месяца и напоминает испорченный телефон. Несмотря на мои разъяснения в картинках что именно не работает, они переспрашивают это несколько раз, похоже просто тянут время. Первый раз сталкиваюсь с подобной бестолковщиной. Копаться в их исходниках, к тому-же разработанных под неведомой для меня RTOS, нет времени. Считаю, что фирма сама должна свои баги исправлять.
В качестве позитивной новости отмечу долгожданный выпуск Силлабами новых модулей BGM22 (справа). Они имеют такие-же размеры и footprint как и BGM13 (слева), но не совместимы с ними по выводам.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Пн сен 21, 2020 07:42:36 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 1209
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 6829
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Я тут на новый комп поставил Simplicity Studio. Оказалось. пятой версии. И я так понимаю, что примеры из статьи с этой версией не совместимы?

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc

Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Пн сен 21, 2020 16:45:17 
Друг Кота
Аватар пользователя

Карма: 73
Рейтинг сообщений: 546
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3415
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Совершенно верно. Планирую для себя переход на версию 5 к следующему лету, поскольку не хочу переделывать имеющиеся учебные наработки во время учебного года - и без этого забот хватает. Пока можно поставить обе версии на однои компе и они друг другу мешать не будут.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Ср сен 23, 2020 21:37:03 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 1209
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 6829
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Возможно, мне нужна помощь. Пытаюсь написать клиента на Thunderboard Sense 2, который будет соединяться с BT модулем HM-11. Я его (HM-11) сконфигурировал на соединение с PIN кодом. С утилитой CySmart соединение удалось сделать следующим способом: Нажал "Start Scan" и когда модуль появился в списке, нажал коннект. Вывалилось окошко, что требуется спаривание, я нажал Yes, после чего получил окошко, что последняя операция выполнилась с ошибкой.
Код:
Info: gpm.M1102: Pairing request received from peer device, F4:84:4C:4D:D5:13.
CyDesigner.Common.Base.CyStsMsgDisp+CyDialogResult
[19:56:47:627] : 'Initiate Pairing' request sent
[19:56:47:643] : 'Command Status' event received
[19:56:47:643] :    Status: BLE_ERROR_INVALID_OPERATION
Error: gpm.M0101: Invalid operation
Но после, нажав кнопку "Pair", нормально ввёл PIN код и соединение установилось: на HM-11 выскочила надпись OK+CONN и я смог даже кое что там передать (все хекс коды позабыл, кроме как для букв A и U).

А вот теперь, пытаюсь то же самое проделать скомбинировав Клиентский код из первой и второй части статей. Вот протокол.
Код:
stack version: 2.13.2
local BT device address: 08:6b:d7:fe:15:2e
Scanning started
f4:84:4c:4d:d5:13   (0)
f4:84:4c:4d:d5:13   (4)   HMSoft
Scanning stopped
Connected
bonding failed, reason 0x303
Connection closed, reason: 0x208
Advertising started


В evt_system_boot_id добавил только секюрную способность:
Код:
      case gecko_evt_system_boot_id:
          bootMessage(&(evt->data.evt_system_boot));
          gecko_cmd_sm_configure(0x07,sm_io_capability_keyboarddisplay);    // allow all connections
          gecko_cmd_sm_set_bondable_mode(1);                                // enable new bondings
          gecko_cmd_le_gap_set_discovery_timing(le_gap_phy_1m, 160, 160);                // set scanning period 10ms
          gecko_cmd_le_gap_set_discovery_type(le_gap_phy_1m, 1);                        // do active scanning
          gecko_cmd_le_gap_set_conn_timing_parameters(80, 100, 0, 1000, 0, 0xffff);        // set connection interval 100ms
          gecko_cmd_le_gap_start_discovery(le_gap_phy_1m, le_gap_discover_observation);    // start discovering all devices
          printLog("Scanning started\r\n");
      break
в connection_opened добавил команду элевации секюрности:
Код:
      case gecko_evt_le_connection_opened_id:
          GPIO_PinOutSet(BSP_LED0_PORT, BSP_LED0_PIN);                                    // turn on LED
          printLog("Connected\r\n");
          conn_handle = evt->data.evt_le_connection_opened.connection;
          gecko_cmd_sm_increase_security(conn_handle);
      break;


И добавил обработку событий (сам код не привожу, там ничего отличающегося от приведённого в статье нет):
Код:
      case gecko_evt_sm_passkey_request_id:
      case gecko_evt_sm_confirm_passkey_id:
      case gecko_evt_sm_bonded_id:
      case gecko_evt_sm_bonding_failed_id:
 
Ставил брейкпоинт на "passkey_request" - никогда не срабатывал (и сообщение "Enter Passkey:" ни разу не выскочило). похоже, что у меня не правильно выполнилось gecko_cmd_sm_increase_security и в результате не приходит запрос на passkey_request.

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

Добавлено after 1 hour 14 minutes 38 seconds:
Добавил еще один ивент:
Код:
      case gecko_evt_le_connection_parameters_id:
          
printLog("Connection parameters - security mode: 0x%2.2x\r\n"evt->data.evt_le_connection_parameters.security_mode);
          break;
 
И вот результат:

Код:
stack version: 2.13.2
local BT device address: 08:6b:d7:fe:15:2e
Scanning started
f4:84:4c:4d:d5:13   (0)
f4:84:4c:4d:d5:13   (4)   NonamePRK
Scanning stopped
Connected
Increase security result 0x00
Connection parameters - security mode: 0x00
bonding failed, reason 0x303
Connection closed, reason: 0x208
Advertising started
Connection parameters - security mode: 0x00 - это "0 le_connection_mode1_level1 No security". Вот только еще не врубился, что это значит - ответ сервера или статус текущего соединения?

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Пружинные клеммники Degson - высокое качество соединения по оптимальной цене!

Пружинные клеммные блоки Degson для монтажа на печатную плату – это простое и надежное соединение, которое позволяет легко решать задачи для различных приложений за счет обширного ассортимента. Клеммники Degson доступны в двух конструктивных исполнениях (торцевой контакт и зажимная клеть), имеют различные направления ввода проводника (45°, 90°, 180°) и обладают широким диапазоном поперечных сечений (0,2…2,5 мм2).

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Чт сен 24, 2020 18:30:57 
Друг Кота
Аватар пользователя

Карма: 73
Рейтинг сообщений: 546
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3415
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Я никогда не работал с HM-11, поэтому не понимаю как отобразить фразу "сконфигурировал на соединение с PIN кодом" на таблицу алгоритмов соединения во второй части статьи. Сервер у Вас оснащён клавиатурой и дисплеем? Я-бы копал в сторону изменения параметров в строке
Код:
gecko_cmd_sm_configure(0x07,sm_io_capability_keyboarddisplay);

У вас показывается ошибка 303, что говорит о несоответствии алгоритма бондинга сервера и клиента.

Connection parameters - Это статус текущего соединения. А на сервере имеется-ли хоть одна характеристика с защищённым уровнем доступа?

Если у Вас есть 2 платы Thunderboard, неважно BG13 или 22, попробуйте сначала для тренировки запустить secure server на одной из них, а клиента - на другой.


Вернуться наверх
 
Вебинар «Решения Analog Devices для гальванической изоляции. Обзор технологий и новинок» (27.04.2021)

Компания «Компэл» и Analog Devices приглашают всех желающих 27/04/2021 принять участие в вебинаре, посвященном решениям Analog Devices для гальванической изоляции. В программе вебинара: технологии гальванической изоляции iCoupler, цифровые изоляторы, изолированное питание и технология isoPower, гальванически изолированные интерфейсы (RS-485, CAN, USB, I2C, LVDS) и другое.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Чт сен 24, 2020 21:29:12 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 1209
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 6829
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Перепробовал sm_io_capability... c 0 по 4 - отличие только в случае 3: sm_io_capability_noinputnooutput, тогда получил код ошибки вместо 0x303 - 0x206:
Код:
Capability: 0x03
Scanning started
f4:84:4c:4d:d5:13   (0)
f4:84:4c:4d:d5:13   (4)   NonamePRK
Scanning stopped
Connected
Increase security result 0x00
Connection parameters - security mode: 0x00
bonding failed, reason 0x206
Connection parameters - security mode: 0x00
Connection closed, reason: 0x216
Advertising started


Про HM-11 известно мало. вот из даташита:
Ø Security: Authentication and encryption
Ø Service: 0xFFE0 (Modifiable use AT+UUID command)
Ø Characteristic: 0xFFE1 (Modifiable use AT+UUID command)
Ø Characteristic: Notify and Write (Modifiable use AT+UUID command)

Я дал команды AT+TYPE2
AT+TYPE[P1] OK+Set:[P1] P1: 0~2
0:Not need PIN Code
1:Auth not need PIN
2:Auth with PIN
3:Auth and bond

И установил PIN командой AT+PIN012345

Вот как в CySmart выглядят характеристики
Изображение
Выделенная характеристика как раз та, что меня интересует. Если я туда пишу, то HM-11 её принимает, если HM-11 передаёт, то она срабатывает как Notify, а если её просто читать - возвращает MAC-адрес. Я правильно понимаю, чтобы писать мне надо обращаться по handle 0x0012?
Код:
gecko_cmd_gatt_write_characteristic_value(conn_handle, 0x0012, 1, (uint8*) &serial_symbol);

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Пт сен 25, 2020 05:10:34 
Друг Кота
Аватар пользователя

Карма: 73
Рейтинг сообщений: 546
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3415
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Насчёт handle 0х0012 - понимаете правильно. Однако, в свойствах этой характеристики запись в неё возможна только без confirmation. Поэтому следует использовать метод cmd_gatt_write_characteristic_value_without_response().

Я тут вычитал, что HM-11 поддерживает лишь Bluetooth 4.0. Поэтому бит флага 2 в вызове функции sm_configure должен быть 0, чтобы аутентификация велась legacy методами версий Bluetooth 4.0 и 4.1. T.e.,
Код:
gecko_cmd_sm_configure(0x03,sm_io_capability_keyboarddisplay);

У меня таких устройств нет и проверить не на чем, поэтому Ваш опыт был-бы интересен.

Далее, если хотите сделать bonding между устройствами, думаю, следует в команде AT+TYPE2 на HM-11 подать type=3. При этом не грех было-бы стереть в нём все данные о сопряжённых устройствах. Не знаю сколько ключей сопряжения хранит HM-11. У BG-13 этот параметр по умолчанию =6, если я правильно помню.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Пт сен 25, 2020 18:17:12 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 1209
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 6829
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
И так мой опыт.... хотел уже было сказать, что этот виноград зелен и не очень то он и нужен... Тем более скорость у него 2-6К(килобит или килобайт в секунду?), да и протоколы основанные на временных задержках меня вгоняют в тоску. Но, продолжил свои мучения.

Параметр Security requirement bitmask я уже пытался крутить, правда в сторону установки третьего бита "Bonding requests need to be confirmed" и снятия остальных в разных комбинациях. Правда, бессистемно и не особо изучая коды ошибок. Сейчас попробовал сконфигурировать legasy и получил отлуп, но уже с кодом 0x206. Кстати, погуглил этот код ошибки и нашел такой топик. В событие коннекта добавил распечатку поля bonding и увидел там взамен 0xFF просто 0x00. Похоже, что бондинг уже где-то есть. На HM-11 выполнил команду AT+ERASE, которая стирает все бондинги - не помогло. Тогда выполнил при старте Thunderboard gecko_cmd_sm_delete_bondings() - и вот результат:
Код:
local BT device address: 08:6b:d7:fe:15:2e
Scanning started
f4:84:4c:4d:d5:13   (0)
f4:84:4c:4d:d5:13   (4)   NonamePRK
Scanning stopped
Connected
Connection Bonding status: 0xff
Connection parameters - security mode: 0x00
Enter passkey: 012345
Connection parameters - security mode: 0x00
Connection parameters - security mode: 0x02
bond success
На дисплее устройства, где стоит HM-11 увидел заветную надпись "OK+CONN".

Приём-передача пока еще не работает почему-то - буду изучать. И надо бы добавить обработку этой ситуации, если при соединении bonding не 0xFF, а bonding failed, то делать стирание бондингов?

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Пт сен 25, 2020 20:15:43 
Друг Кота
Аватар пользователя

Карма: 73
Рейтинг сообщений: 546
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3415
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Если устройства уже bonded, то новый bonding не производится. Я обычно ставлю кнопки на сервере и клиенте при нажатии на которые стираю все данные bonded устройств и/или разрешаю новый бондинг, наподобии как это сделано во второй части статьи.

Так с какими-же параметрами sm_configure() удалось сделать bonding?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Сб сен 26, 2020 16:52:42 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 1209
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 6829
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Как вы и порекомендовали:
Код:
gecko_cmd_sm_configure(0x03,sm_io_capability_keyboarddisplay); 
И, похоже, действительно самое простое, это сделать в меню команду для очистки таблицы привязанных устройств и вызывать вручную при возникновении необходимости.

Приём сделал, и даже работает, а вот с передачей у меня проблема. Не могу придумать куда вставить эту передачу. Поначалу был поставивши в цикле while(1), но там же находится команда evt = gecko_wait_event(), которая этот цикл тормозит. Поэтому сейчас изучаю, как с последовательным портом сделать такую же генерацию событий, как в статье сделана с кнопками. Проблема, что у обработчика прерывания RETARGET нет никакого callback.

Добавлено after 1 hour 6 minutes 45 seconds:
Немножко не понял конструкцию: gecko_external_signal((1<<BSP_BUTTON1_PIN) | (1<<16)); Ведь, во внешнем событии надо устанавливать один бит, который укажет какое событие произошло и в обработчике события по этим битам вызываются соответствующие обработчики?

Добавлено after 2 hours 51 minute 23 seconds:
Не понимаю. Почему-то при соединении перестаёт работать USART. Поставил контрольную распечатку - пока соединений нет на каждое нажатие выскакивает событие, как соединение установилось - всё пропадает.
Поставил контрольные распечатки - если срабатывает gecko_external_signal(), то событие происходит. А этот gecko_external_signal() у меня вызывается из прерывания USART - тогда эти прерывания пропадают?

A!!! Понял! Не СПАТЬ! USART не работает в спячке.

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Сб сен 26, 2020 18:59:27 
Друг Кота
Аватар пользователя

Карма: 73
Рейтинг сообщений: 546
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3415
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Насчёт организации передачи - трудно советовать без знания приложения. Проще всего передать стеку внешнее событие либо от таймера (если оно периодическое), либо от кнопки. В последнем случае используйте gecko_external_signal() в обработчике прерывания кнопки, как в статье (первая часть). При этом код передачи по UART следует вставить в обработчик события таймера или внешнего события и МК тогда спать не будет при передаче по UART. В конструкции (1<<BSP_BUTTON1_PIN) | (1<<16) действительно достаточно установить лишь 1 бит, я потом так и делал.

Если этого мало и у приложения помимо стека БТ (и его цикла обработки событий) имеется свой while-loop, возможные подходы комбинации этих циклов описаны в этом документе.

Если-же и этого мало, то RTOS (третья часть). Правда, когда я её писал, версия 2.7 SDK страдала детскими болезнями, поэтому я использовал 2.6, чего и Вам советую, поскольку в 2.7 до сих пор ещё не всё исправлено.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Вс сен 27, 2020 11:36:02 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 1209
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 6829
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Текущую задачу я выполнил, поэтому обобщу результаты.

Задача была сделать мост между USB-UART и модулем HM-11.

Ключевая проблема оказалась то, что в gecko_cmd_sm_configure() в параметр "Security requirement bitmask" надо оставить Legasy.
Вторая проблема была в том, что надо удалять bondings после экспериментов - могут попить крови.
Третья проблема в том, что порты USART не работают, когда процессор спит, поэтому в app.h надо изменить
Код:
/* Set this value to 1 if you want to disable deep sleep completely */
#define DISABLE_SLEEP 1  
Порт LEUART - похоже может.

Следующая проблема с драйвером последовательного порта. "родной" драйвер "RETARGET" (просто переименованный USART0), не имеет функций callback при помощи которого можно сообщить BT стеку о наличии внешнего события. Поэтому пришлось грязными ручками влезть в обработчик прерывания приёма по последовательному порту и вставил вызов __WEAK функции RETARGET_callback(). Эту функцию определил в app.c и там она вызывает gecko_external_signal(). В качестве аргумента надо передавать 32-битное число в котором выставлена одна 1. Надо учесть, что не на каждый gecko_external_signal будет срабатывать событие
Код:
case gecko_evt_system_external_signal_id:
поэтому в этом обработчике нельзя ожидать, что принят только один байт - надо выбрать весь буфер. Потому как эта функция всего навсего устанавливает бит в маске событий, а если бит уже стоит он и останется стоять, пока не вызовется обработчик. А вызывается он не моментально.

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Чт ноя 05, 2020 20:39:24 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 1209
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 6829
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Не любят меня блютусные устройства. Новая проблема: сделал секюрный сервер на BGM13P: даёт читать уровень батарейки (пока подсовываю просто число - ацп буду заводить позже), приём-передача последовательного потока (работает, но не стабильно) и есть две характиристики secure notification - на входы приходят лог.уровни и по их изменению посылается клиенту notification. Проблема в том, что они оба идентичны, но один работает, а второй нет. На устройстве они подключены к двум светодиодам (красному и зеленому) и модуль должен транслировать их состояние:
Код:
#define GREEN_LED_PORT gpioPortA
#define GREEN_LED_PIN  4
#define RED_LED_PORT gpioPortA
#define RED_LED_PIN  5
На модуле BGM13P они подключены к 9 и 10 контактам.
Вот я их инициализирую:
Код:
   GPIO_PinModeSet(GREEN_LED_PORT, GREEN_LED_PIN, gpioModeInput, 0);
   GPIO_PinModeSet(RED_LED_PORT, RED_LED_PIN, gpioModeInput, 0);

   GPIO_ExtIntConfig(GREEN_LED_PORT, GREEN_LED_PIN, GREEN_LED_PIN, true, true, true);
   GPIO_ExtIntConfig(RED_LED_PORT, RED_LED_PIN, RED_LED_PIN, true, true, true);
   GPIOINT_Init();                              // init GPIOINT driver
   GPIOINT_CallbackRegister(GREEN_LED_PIN, MOTOR_ON_Event); // register callback function
   GPIOINT_CallbackRegister(RED_LED_PIN, LED_ON_Event); // register callback function

Вот callback функции:
Код:
static void MOTOR_ON_Event(const uint8_t pin) {
   gecko_external_signal(1ul << 0);
}

static void LED_ON_Event(const uint8_t pin) {
   gecko_external_signal(1ul << 1);
}

void RETARGET_callback(void) {
   gecko_external_signal(1ul << 2);
}
И, наконец, обработка события стеком:
Код:
      case gecko_evt_system_external_signal_id:            // button event
         event = evt->data.evt_system_external_signal.extsignals;
         if (event & (1ul << 0)) {
            switch_value = GPIO_PinInGet(GREEN_LED_PORT, GREEN_LED_PIN);
            gecko_cmd_gatt_server_send_characteristic_notification(0xFF, gattdb_motor_id, 1, (const uint8*)&switch_value);
         }
         if (event & (1ul << 1)) {
            switch_value = GPIO_PinInGet(RED_LED_PORT, RED_LED_PIN);
            gecko_cmd_gatt_server_send_characteristic_notification(0xFF, gattdb_user_led_id, 1, (const uint8*) &switch_value);
         }
         if (event & (1ul << 2)) {
            int i, serial_symbol;
            // послать принятое из UART
....
Всё одинаково, но изменения зелёного светодиода я при помощи cySmart на планшете вижу, а красного - нет.
Даже ставил брейкпоинт - callback отрабатывает и send_characteristic_notification тоже.
Только что проверил - выход на светодиод пушпульный, не открытый сток или исток (да и светодиод сидит между выводом и массой), т.е. на входе нормальные логические уровни.

Что еще проверить?

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Чт ноя 05, 2020 23:08:46 
Друг Кота
Аватар пользователя

Карма: 73
Рейтинг сообщений: 546
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3415
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Проверьте Bluetooth profile, именно, что для обоих характеристик разрешены нотификации. Если по одному событию происходит, то тоже не получаете нотификацию от красного диода? Я-бы посылал по одной характеристике, т.е.
Код:
         if (event & (1ul << 0)) {
   ....
         }
         ELSE if (event & (1ul << 1)) {
   ....       
         }

См. аналогичную проблему здесь.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Сб ноя 07, 2020 14:39:16 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 1209
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 6829
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Извините, что замолк, но я впал в ступор... На утро после отправки своего вопроса, я сообразил, что у меня два "идентичных" канала и можно было бы их просто посегментно поменять местами. А потом, я понял, что самый первый этап этой цепи - наличие уровня на входе, я так еще и не проверил - может там контакт не пропаялся? И я сделал так, что в дефайнах поменял 4 и 5 разряд порта А местами. Хм, если раньше загорался зеленый светодиод, то теперь стал красный, а зеленый перестал зажигаться. Значит контакт всё же есть.

Заметил одну странность. Для контроля я пользуюсь аппликацией CySmart на планшете. И вот, когда я вхожу в характеристику которая работает, я вижу 2 кнопки: Notify (которую я нажимаю, чтобы видеть приход извещений) и Descriptors, а в той, которая не работает - только Notify, второй кнопки нет. После чего я стал сравнивать чем отличаются и не нашел. Но перегенерил gatt_db.* и пересобрал проект несколько раз. Правда, в результате чего, у моего клиента вообще оба светодиода перестали работать. И для того чтобы проверить, не поменялись ли номера хендлов характеристик, я подключился при помощи PCшной программы CySmart (я донглом особо не пользуюсь, потому как он слишком хлипкий и в электричке, если кто случайно зацепит его или донгл сломает, или USB порт выломает из ноутбука) и... а там все нотификации видны как надо и все работает! И номера хэндлов на месте. Так что почему вдруг перестал работать клиент мне пока не понятно. Буду разбираться и когда будет больше полезной информации, отфильтрованной от моих глюков - тогда.

Вариант с флудингом событий - не мой случай. У меня пока события происходят размеренно и медленно (кроме сериального канала). И вариантом if else пользоваться нельзя, так как я потеряю событие - ведь эта ветка второй раз не вызовется, так как нет никакого квитирования, какое из внешних событий обработано, а какое нет.

Кстати, у характристики обслуживающей сериальный порт (Notify и Write) кнопка Descriptors наличествует и нотификации приходят. Там правда, есть проблема с размером. У меня данные теряются. У характеристики поставил размер 1 и галочку variable length (или вместо 1 надо было поставить больше?) А у функции
Код:
gecko_cmd_gatt_server_send_characteristic_notification(0xFF, gattdb_serial, i, message);
написано, что за раз можно передавать ATT_MTU - 3 байта за раз. Но я не могу увидеть, сколько это ATT_MTU.

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Сб ноя 07, 2020 21:08:19 
Друг Кота
Аватар пользователя

Карма: 73
Рейтинг сообщений: 546
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3415
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Да, очень сложно что-то посоветовать не видя всего функционирования устройства. У меня CySmart на смартфоне тоже как-то странно работает, даже иногда устройства не видит или видит с оргомной задержкой. Я перестал ей пользоваться в пользу EFR Connect. Раньше лучше работало, может быть связано с постоянными модификациями ОС Android(?) Давно они это приложение не обновляли, может и не будут больше... На компе, однако, CySmart и донгл работают пока безукоризненно.

ATT_MTU на силлабовских модулях можно прочитать/установить функциями типа gecko_cmd_gatt_set_max_mtu(). На Сайпровских этот параметр устанавливается через GUI.

Я тут занялся вплотную модулями BGM220P. Интересно, что сам чип модулей поддерживается версией 4 Studio, также как и плата Thunderboard Sense BG22, но не модуль. Они обяснили, что модуль вышел на рынок уже после того как фирма перестала развивать версию 4. Пришлось установить версию 5 наряду с 4 пока, и, в общем, не жалею. Конфигурирование периферии значительно упрощено, а логика обработки событий стека моих Bluetooth приложений практически не изменилась. Также упрощена обработка внешних прерываний и теперь не надо посылать сигнал о них в стек. Вообще, код приложения перестал крутиться вокруг событий стека и сам стек выступает как-бы как равноправная часть периферии. Надо будет ещё RTOS и security попробовать, займусь плотнее на зимних каникулах прежде чем новые статьи писать. Пока сделал на этом модуле бикон для гаража, передающий раз в секунду положение двери (акселерометр LIS2DW12) и температуру (TMP112). Токопотребление от CR2032 снизилось до 6 мкА по сравнению с ~22 мкА у модулей первого поколения. Эти данные интергируются в имя устройства, так что их можно прочитать любым сканером, даже без специального приложения и без установки соединения с модулем (впрочем, бикон и не подерживает никакие соединения и работает только на передачу).
Изображение

Кстати, недавно вышла интересная демо-плата BGM220 Explorer Kit по цене всего 10$, т.е. дешевле чем все компоненты на ней, если их покупать в розницу. На плате имеется дебаггер и коннекторы для установки бесчисленных модулей mikro-BUS. Надо будет заказать что-то на пробу или самому сделать платку расширеня под них. Не понимаю, почему нигде не сказано, что на обратной стороне платы имеются площадки под Simplicity Connector для программирования внешним программатором с Wireless Main платы (нужно для измерения токопотребления этой платой). Знал-бы заранее, заказал-бы соответствующий коннектор.
Изображение Изображение

Sillabs.com анансировала новые воркшопы по модулям BG22. Даже похоже, что опять будут бесплатно рассылать модули участникам.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Пн дек 28, 2020 21:59:35 
Друг Кота
Аватар пользователя

Карма: 73
Рейтинг сообщений: 546
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3415
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Фирма Silicon Labs анонсировала новую серию вебинаров по Bluetooth устройствам на основе семейства BG22. Ежемесячные вебинары расписаны вплоть до октября 2021. Время и день проведения завит от региона, подробности при регистрации по ссылке выше.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Сб янв 16, 2021 09:59:33 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 1209
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 6829
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Вопрос по вебинару. Они пришлют эту платку или как? Вроде зарегистрировался где-то после нового года, прислали письмо, что адрес проверен и типа будет e-mail с трекингом про высланную плату (ну я так понял), но нет ни платы, ни письма. Может, я не правильно понял?

Цитата:
We would like to inform you that your shipping address has been validated.

Your Thunderboard kit for the hands-on, virtual Bluetooth Workshop: BG22 Project Series will be shipped shortly. You will receive mailing tracking information in a separate email.

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Сб янв 16, 2021 19:02:13 
Друг Кота
Аватар пользователя

Карма: 73
Рейтинг сообщений: 546
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3415
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Должны прислать, особенно по первому разу. Я прошёл этот семинар 2 раза (один раз под Studio v4, и второй после выпуска Studio v5). В первый раз плату мне прислали (по-моему также без трекинга, не помню точно, т.к. было в начале лета), а во второй - нет. Я сначала думал, что не прислали, поскольку "знают", что у меня уже есть одна; кстати, я там во время одного из вебинаров ещё одну выиграл). Однако, во время семинара выяснилось, что паре участников также не прислали платы, уж не знаю какие там были обстоятельства. Лектор сказал, что следует к ним емайл прислать и плата обязательно будет выслана. Я не стал ничего писать, т.к. мне эти дополнительные платы не нужны. Но если у Вас таких плат нет, то рекомендую написать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Разработка Bluetooth приложений на модулях Silicon Labs
СообщениеДобавлено: Пн янв 18, 2021 11:23:36 
Мучитель микросхем

Зарегистрирован: Пт июн 01, 2018 07:28:45
Сообщений: 477
Рейтинг сообщения: 0
А вообще, эти семинары вещь стоящая по сравнению с AN на их сайте?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 87 ]    , 2, , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: LordFox и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y