Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: BlueNRG-MS Init
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
bark
Доброго времени суток, форумчане.

Имеется проект на BlueNRG-MS. За основу программной настройки и управления взят проект "SampleAppThT". Режим Server.

Выполняю настройку следующим образом:
CODE
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
Цитата(bark @ Nov 16 2015, 16:06) *
Устройство доступно в течении ~3-5 сек с периодом ~30 сек.

Картинку, к сожалению, мне не видно (локальные проблемы с дропбоксом), но могу предположить, что это признаки медленно стартующего кварца.

Что это такое и как лечить, описано в AN4494
bark
Я правильно понимаю - речь о внешнем LSE 32,768кГц?
Как вы думаете, перевод на внутренний генератор должен решить данную проблему?
esaulenka
Речь о параметре HS_Startup_Time, который зашивается в конфигурационную область флеша.

Если он меньше, чем реальное время запуска кварца (который high speed, не RTC), поведение чипа становится неадекватным (у меня не было стабильных периодов "неработы", но, видимо, это то же самое).

Его надо померять на Вашей железке (осциллографом, методика описана в appnote), и потом запрограммировать во все устройства (в ST'шном стеке есть функция program_IFR()).
bark
Есть один интересный и не понятный мне момент - если я сделаю активным CS ("0"),и буду его удерживать на интерфейсе SPI - то модуль радиодоступен на время удержания линии CS.
bark
Цитата(bark @ Nov 18 2015, 13:31) *
Есть один интересный и не понятный мне момент - если я сделаю активным CS ("0"),и буду его удерживать на интерфейсе SPI - то модуль радиодоступен на время удержания линии CS.

Проблема решилась обновлением стека Bluenrg-MS.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.