bark 0 16 ноября, 2015 Опубликовано 16 ноября, 2015 · Жалоба Доброго времени суток, форумчане. Имеется проект на BlueNRG-MS. За основу программной настройки и управления взят проект "SampleAppThT". Режим Server. Выполняю настройку следующим образом: main { .... BNRG_SPI_Init(); /* Initialize the BlueNRG HCI */ HCI_Init(); /* Reset BlueNRG hardware */ BlueNRG_RST(); wait_IRQ_SPI_FLAG(); getBlueNRGVersion(&hwVersion,&fwVersion); printk("hwVersion = 0x%X fwVersion = 0x%X Version = %X",hwVersion,fwVersion,Version); /* Reset BlueNRG hardware */ BlueNRG_RST(); wait_IRQ_SPI_FLAG(); Osal_MemCpy(bdaddr, SERVER_BDADDR, sizeof(SERVER_BDADDR)); ret = aci_hal_write_config_data(CONFIG_DATA_PUBADDR_OFFSET,CONFIG_DATA_PUBADDR_LEN,bda ddr); printk_co(GREEN,"aci_hal_write_config_data() ret=0x%X",ret); ret = aci_gatt_init(); printk_co(GREEN,"aci_gatt_init() ret=0x%X",ret); ret = aci_gap_init(GAP_PERIPHERAL_ROLE, 0, 7, &service_handle, &dev_name_char_handle, &appearance_char_handle); //appearance_char_handle - 8; //service_handle - 5; //dev_name_char_handle - 6; printk_co(GREEN,"aci_gap_init() ret=0x%X",ret); printk_co(GREEN,"service_handle = 0x%X dev_name_char_handle = 0x%X appearance_char_handle = 0x%X",service_handle,dev_name_char_handle,appearance_char_handle); aci_gatt_update_char_value(service_handle, dev_name_char_handle, 0,strlen(name), (uint8_t *)name); printk_co(GREEN,"aci_gatt_update_char_value() ret=0x%X",ret); ret = aci_gap_set_auth_requirement(MITM_PROTECTION_REQUIRED,OOB_AUTH_DATA_ABSENT,0, 7,16,USE_FIXED_PIN_FOR_PAIRING,123456,BONDING); printk_co(GREEN,"aci_gap_set_auth_requirement() ret=0x%X",ret);// ret = Add_Acc_Service(); printk_co(GREEN,"Add_Acc_Service() ret=0x%X",ret);//7 ret = Add_Environmental_Sensor_Service(); printk_co(GREEN,"Add_Environmental_Sensor_Service() ret=0x%X",ret); ret = aci_hal_set_tx_power_level(1,4); printk_co(GREEN,"aci_hal_set_tx_power_level() ret=0x%X",ret); .... } void setConnectable(void) { tBleStatus ret; //const char local_name[] = {AD_TYPE_COMPLETE_LOCAL_NAME,'B','l','u','e','N','R','G'}; hci_le_set_scan_resp_data(0,NULL); printk("General Discoverable Mode.\n"); ret = aci_gap_set_discoverable(ADV_IND, 0, 0, PUBLIC_ADDR, NO_WHITE_LIST_USE, sizeof(local_name), local_name, 0, NULL, 0, 0); printk_co(GREEN,"aci_gap_set_discoverable() ret=0x%X",ret); if (ret != BLE_STATUS_SUCCESS) { printk("Error while setting discoverable mode (%d)\n", ret); } } В результате наблюдаю следующую картину видимости моего устройства: RSSI graph Устройство доступно в течении ~3-5 сек с периодом ~30 сек. Тактирование - HSI=16MHz. LSE - ext 32.768kHz Подскажите пожалуйста, в чем может быть проблема? С отладочной платой IDB04A1 все работает - модуль видится постоянно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 5 17 ноября, 2015 Опубликовано 17 ноября, 2015 · Жалоба Устройство доступно в течении ~3-5 сек с периодом ~30 сек. Картинку, к сожалению, мне не видно (локальные проблемы с дропбоксом), но могу предположить, что это признаки медленно стартующего кварца. Что это такое и как лечить, описано в AN4494 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bark 0 18 ноября, 2015 Опубликовано 18 ноября, 2015 · Жалоба Я правильно понимаю - речь о внешнем LSE 32,768кГц? Как вы думаете, перевод на внутренний генератор должен решить данную проблему? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 5 18 ноября, 2015 Опубликовано 18 ноября, 2015 · Жалоба Речь о параметре HS_Startup_Time, который зашивается в конфигурационную область флеша. Если он меньше, чем реальное время запуска кварца (который high speed, не RTC), поведение чипа становится неадекватным (у меня не было стабильных периодов "неработы", но, видимо, это то же самое). Его надо померять на Вашей железке (осциллографом, методика описана в appnote), и потом запрограммировать во все устройства (в ST'шном стеке есть функция program_IFR()). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bark 0 18 ноября, 2015 Опубликовано 18 ноября, 2015 · Жалоба Есть один интересный и не понятный мне момент - если я сделаю активным CS ("0"),и буду его удерживать на интерфейсе SPI - то модуль радиодоступен на время удержания линии CS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bark 0 9 октября, 2016 Опубликовано 9 октября, 2016 · Жалоба Есть один интересный и не понятный мне момент - если я сделаю активным CS ("0"),и буду его удерживать на интерфейсе SPI - то модуль радиодоступен на время удержания линии CS. Проблема решилась обновлением стека Bluenrg-MS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться