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

 
 
 
Reply to this topicStart new topic
> 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
esaulenka
сообщение Nov 17 2015, 06:36
Сообщение #2


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

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



Цитата(bark @ Nov 16 2015, 16:06) *
Устройство доступно в течении ~3-5 сек с периодом ~30 сек.

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

Что это такое и как лечить, описано в AN4494


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
bark
сообщение Nov 18 2015, 09:36
Сообщение #3


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

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



Я правильно понимаю - речь о внешнем LSE 32,768кГц?
Как вы думаете, перевод на внутренний генератор должен решить данную проблему?


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


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

Группа: Свой
Сообщений: 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
bark
сообщение Nov 18 2015, 10:31
Сообщение #5


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

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



Есть один интересный и не понятный мне момент - если я сделаю активным CS ("0"),и буду его удерживать на интерфейсе SPI - то модуль радиодоступен на время удержания линии CS.


--------------------
Работаю 20ns в сутки.
Go to the top of the page
 
+Quote Post
bark
сообщение Oct 9 2016, 17:14
Сообщение #6


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

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



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

Проблема решилась обновлением стека Bluenrg-MS.


--------------------
Работаю 20ns в сутки.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 13:46
Рейтинг@Mail.ru


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