jenya7 0 20 сентября, 2015 Опубликовано 20 сентября, 2015 · Жалоба интересно кто нибудь работал с этим модулем? как то непонятно он себя ведет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 20 сентября, 2015 Опубликовано 20 сентября, 2015 · Жалоба интересно кто нибудь работал с этим модулем? как то непонятно он себя ведет. Я знаю чип BlueNRG производства ST. А что за модуль, кто производит? Ссылочкой не побалуете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 20 сентября, 2015 Опубликовано 20 сентября, 2015 · Жалоба Я знаю чип BlueNRG производства ST. А что за модуль, кто производит? Ссылочкой не побалуете? да, это он. http://www.st.com/web/catalog/sense_power/...&sc=bluenrg Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 20 сентября, 2015 Опубликовано 20 сентября, 2015 · Жалоба То есть, для вас нет разницы, микросхема или модуль. Может, как раз в этом и есть причина, что "он как то непонятно он себя ведет". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 20 сентября, 2015 Опубликовано 20 сентября, 2015 · Жалоба То есть, для вас нет разницы, микросхема или модуль. Может, как раз в этом и есть причина, что "он как то непонятно он себя ведет". у меня борд X-NUCLEO-IDB04A1 тестирую unsigned char header_master[HEADER_SIZE] = {SPI_READ, 0x00, 0x00, 0x00, 0x00}; unsigned char header_slave[HEADER_SIZE] = {0x00, 0x00, 0x00, 0x00, 0x00}; BluetoothCS_Low(); SPI_BLUENRG_TransmitReceive(header_master,header_slave,5,100); BluetoothCS_High(); возвращает 0x02, 0x00, 0x00, 0x00, 0x00. 0x02 - это хорошо - SPI Ready. но другие байты это write,read buffer size -они по нулям а должны быть не нулевые, чтоб можно было читать/писать в модуль Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 21 сентября, 2015 Опубликовано 21 сентября, 2015 · Жалоба интересно кто нибудь работал с этим модулем? как то непонятно он себя ведет. Рекомендую начать с документа AN4494 "Bringing up the BlueNRG and BlueNRG-MS devices". Прямо по пунктам. У меня получилось. Правда, именно "работать" - делать и использовать свои профили руки пока не дошли... Но примеры ST'шные после небольшой доработки напильником (HAL выкинул к чёрту, использовал свой драйвер SPI) работают нормально. Написаны они, кстати, весьма прилично, без миллиона слоёв абстракций. Сразу видно, другие люди делали :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 21 сентября, 2015 Опубликовано 21 сентября, 2015 · Жалоба Рекомендую начать с документа AN4494 "Bringing up the BlueNRG and BlueNRG-MS devices". Прямо по пунктам. У меня получилось. Правда, именно "работать" - делать и использовать свои профили руки пока не дошли... Но примеры ST'шные после небольшой доработки напильником (HAL выкинул к чёрту, использовал свой драйвер SPI) работают нормально. Написаны они, кстати, весьма прилично, без миллиона слоёв абстракций. Сразу видно, другие люди делали :-) я честно говоря не очень понимаю работу с Bluetooth. Я хочу чтоб прибор проснулся, послал данные, если кто то есть поблизости он может подключиться к прибору ,потом прибор идет спать. Возникает много вопросов. Какую роль назначить прибору – CLIENT? SERVER? После того как установил режим advertising нужно ли добавлять service? И вообще как это все должно быть сконфигурировано? С инициализацией я разобрался. void BLUENRG_Setup(void) { HCI_Init(); BlueNRG_RST(); if(BLE_Role == CLIENT) { Osal_MemCpy(bdaddr, CLIENT_BDADDR, sizeof(CLIENT_BDADDR)); } else { Osal_MemCpy(bdaddr, SERVER_BDADDR, sizeof(SERVER_BDADDR)); } /* Configure BlueNRG address as public (its public address is used) - MAC address of the device */ ret = aci_hal_write_config_data(CONFIG_DATA_PUBADDR_OFFSET, CONFIG_DATA_PUBADDR_LEN, bdaddr); /* Init BlueNRG GATT layer */ ret = aci_gatt_init(); /* Init BlueNRG GAP layer as peripheral or central */ if(BLE_Role == SERVER) { ret = aci_gap_init(GAP_PERIPHERAL_ROLE, &service_handle, &dev_name_char_handle, &appearance_char_handle); } else { ret = aci_gap_init(GAP_CENTRAL_ROLE, &service_handle, &dev_name_char_handle, &appearance_char_handle); } // Set output power level ret = aci_hal_set_tx_power_level(1,4); } Потом (предположительно) настраиваем advertising ret = aci_gap_set_discoverable(ADV_IND, 0, 0, PUBLIC_ADDR, NO_WHITE_LIST_USE, sizeof(local_name), local_name, 0, NULL, 0, 0); А дальше полный туман. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться