реклама на сайте
подробности

 
 
> BlueNRG-MS Init, Проблемы обнаружения устройства
bark
сообщение Nov 16 2015, 13:06
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 16-11-09
Из: Украина Юг
Пользователь №: 53 659



Доброго времени суток, форумчане.

Имеется проект на 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 все работает - модуль видится постоянно.


--------------------
Работаю 20ns в сутки.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
esaulenka
сообщение Nov 18 2015, 09:55
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Речь о параметре HS_Startup_Time, который зашивается в конфигурационную область флеша.

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

Его надо померять на Вашей железке (осциллографом, методика описана в appnote), и потом запрограммировать во все устройства (в ST'шном стеке есть функция program_IFR()).


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th August 2025 - 18:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01364 секунд с 7
ELECTRONIX ©2004-2016