使用PSOC6做BLE Bonding处理,按照下面的方式调用Cy_BLE_StoreBondingData函数,发现函数返回值一直error,
/* Store bonding data to flash only when all debug information has been sent */
if(cy_ble_pendingFlashWrite != 0u)
{
bleApiResult = Cy_BLE_StoreBondingData();
DebugPrintf("Store bonding data, status: %x, pending: %x \r\n", bleApiResult, cy_ble_pendingFlashWrite);
}
请问是什么原因导致该函数一直返回错误值。
已解决! 转到解答。
同时启用EEPROM组件和BLE可能会出现类似问题,EEPROM默认空间跟BLE保存bonding list的空间是重合的 - .cy_em_eeprom section,有两种解决办法 -
1. 将EEPROM操作和BLE host分别放到两个核
2. 或者在ee_eeprom空间自定义不同的段,修改BLE_Config.c文件中cy_ble_flashStorage数组放置位置为该段。
可以参考下列文档,如何将两个核EEPROM空间分来或者不对任一核分配EEPROM空间 - Manage Working Flash Space for Both Cores of PSoC® 6 – KBA224173
你的测试工程是官方示例代码,还是自己的code?测试硬件是CY8CKIT062-BLE DVK? 具体的版本是哪个?
我们有的示例代码是按类似的方式调用该API,如 ce212742,你是否用的是这个code?
另外需要注意要在组件配置框Security Settings勾选Bonding requirement才能使用该函数。
我跟踪代码发现,Cy_BLE_StoreBondingData函数里面调用了Cy_BLE_StoreStackData函数,
Cy_BLE_StoreStackData返回值一直是INVALID PARAMETER,请问知道这是什么原因吗?
还有我的工程里面启用了Emulated EEPROM功能,这个功能会影响BLE Bonding功能吗?
同时启用EEPROM组件和BLE可能会出现类似问题,EEPROM默认空间跟BLE保存bonding list的空间是重合的 - .cy_em_eeprom section,有两种解决办法 -
1. 将EEPROM操作和BLE host分别放到两个核
2. 或者在ee_eeprom空间自定义不同的段,修改BLE_Config.c文件中cy_ble_flashStorage数组放置位置为该段。
可以参考下列文档,如何将两个核EEPROM空间分来或者不对任一核分配EEPROM空间 - Manage Working Flash Space for Both Cores of PSoC® 6 – KBA224173
我的测试工程是参考CE212742,自己开发的工程,测试硬件是CY8CPROTO-063-BLE,
组件配置框Security Settings里面Bonding requirement已经勾选了