Доброго времени суток, форумчане.
Имеется проект на
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 в сутки.