Cypress技术论坛
直播中

刘润生

7年用户 753经验值
私信 关注
[问答]

禁用低功耗模式时,通知会在CapSense接近示例中停止

有人能解释这种行为吗?使用CY8CITK-042-BLE——一个运行PoSox4BulyCaseSeSuxAccess示例的先驱套件,并注释出定义为Enable的低功耗模式,使广告从重置发生,在30秒后不超时,停止通知数据被发送。CyScript中的通知通过写入和读取CCDCD值01:00来处理0x000 0F,但CAPSENSE特性属性(0x000 0E)不存在CAPSENSE数据。通知属性甚至显示在CySMART右侧启用的复选标记。
我想要做的是避免手动按下用户按钮来开始广告,只是广告从重置开始。仅仅禁用Low Power Mode从复位开始广告,但没有通知数据。为什么要禁用低功耗模式停止通知?

以上来自于百度翻译


     以下为原文
  Can anyone explain this behavior?  Using CY8CKIT-042-BLE-A Pioneer Kit running the PSoC_4_BLE_CapSense_Proximity Example and commenting out the #define ENABLE_LOW_POWER_MODE to disable low power mode so advertising occurs from reset and does not time out after 30 seconds appears to stop notification data from being sent.  Notifications are enabled in CySmart by writing and reading the CCCD value 01:00 to handle 0x000F but no CapSense data is present for the CapSense characteristic attribute (0x000E).  The Notify property even shows a check mark under Enabled on the right side of CySmart.

What I want to do is avoid having to manually press the user button to start advertising and just have advertising start from reset.  Just disabling Low Power Mode starts advertising from reset but then there is no notification data.  Why should disabling low power mode stop notifications?

回帖(4)

苏天兰

2018-12-26 16:11:29
我已经证实,当Enabel-LoWiPosixMead宏未被定义时,通知不起作用。
我也确认通知在“主C文件”第149行的“if语句”注释时起作用。
在HooLeloWordP.C文件的HooLeleWordPoMoDeF()函数中,ECO仅在“LoWiPosixMod”模式下被假定为ECO在非“LoWiPosil模式”中不工作时才被控制。
有人能调查更多吗?
当做,
诺里基

以上来自于百度翻译


     以下为原文
  I have confirmed in my side that the notification does not work when the ENABLE_LOW_POWER_MODE macro is not defined.
 
I also confirmed that the notification works when commented out the "if statement" at line 149 of the "main.c" file.

In the HandleLowPowerMode() funtion of the HandleLowPower.c file the ECO is controlled only when the "LOW_POWER_MODE"  I assume that ECO does not work in non "LOW_POWER_MODE"
 
Can anyone investigate more ?
 
Regards,
Noriaki
举报

黎歆俭

2018-12-26 16:18:49
引用: numuwewr 发表于 2018-12-26 16:07
我已经证实,当Enabel-LoWiPosixMead宏未被定义时,通知不起作用。
我也确认通知在“主C文件”第149行的“if语句”注释时起作用。
在HooLeloWordP.C文件的HooLeleWordPoMoDeF()函数中,ECO仅在“LoWiPosixMod”模式下被假定为ECO在非“LoWiPosil模式”中不工作时才被控制。

ECO是运行BLE模块IRC所必需的。并且它应该能够在没有和低功率模式下运行。
试着把CyByBysListStayeEooCito稳定改为(CyByLyBelsStayeSeeOvion on CyByLyBelsStisteEkoOrthPalm)?

以上来自于百度翻译


     以下为原文
  The ECO is required for running the BLE module iirc. And it should be able to run with and without low-power mode.
Try changing the CYBLE_BLESS_STATE_ECO_STABLE to (CYBLE_BLESS_STATE_ECO_ON || CYBLE_BLESS_STATE_ECO_STABLE)?
举报

刘润生

2018-12-26 16:33:12
引用: yuhe82 发表于 2018-12-26 16:14
ECO是运行BLE模块IRC所必需的。并且它应该能够在没有和低功率模式下运行。
试着把CyByBysListStayeEooCito稳定改为(CyByLyBelsStayeSeeOvion on CyByLyBelsStisteEkoOrthPalm)?

这也是我的理解,从SOC数据表,EOC(外部晶体振荡器)用于确保与另一设备的BLE通信的频率精度:
ECO被用作BLE子系统的活动时钟,以满足蓝牙4.2规范的±50 ppm时钟精度。
我认为时钟应该是稳定的,才能使BLE通信。我不完全理解Lovi-Posil模式和生态时钟之间的关系。从NTAN执行的测试看来,时钟不稳定而不进入LuxiPosil模式,但正如E.普拉特指出的,它应该是稳定的。
从Windows 10发送邮件
8BF1DA6044 F34 68 18D01CAC7C788 D869PNG
148字节

以上来自于百度翻译


     以下为原文
  That is my understanding as well, from the SoC datasheet, the EOC (external crystal oscillator) is used to insure frequency accuracy of BLE communications with another device:
 
The ECO is used as the active clock for the BLE subsystem to meet the ±50-ppm clock accuracy of the Bluetooth 4.2 Specification. 
 
I would think that clock should be stable before enabling BLE communication..  I don’t fully understand the relationship between Low_Power_Mode and the ECO clock.  From the test that ntan performed it would appear that clock is not stable without entering Low_Power_Mode but as e.pratt points out it should be stable regardless.
 
Sent from Mail for Windows 10


举报

李兆水

2018-12-26 16:51:59
当Noriaki Tanakapointed退出时,您可以注释if语句或将其更改为
如果(CyBybLysStayEnEvithCuffel= = CyByLyGETBLISSTATE())。
当启用低功率时,在ECOM稳定的许多状态之间的祝福转换是一个。然而,当低功耗被禁用时,保佑状态仍然是EndoScRead,并且永远不会转换到ECOOSURSTATION,这就是if语句永远不会返回true的原因。
为了回答有关生态的问题,它被用来获得时间的沟通。如果不使用低功率,它将一直处于开启状态。ECO将关闭和打开时,低pWER的使用。CysLyStudiLp()会处理这个问题。

以上来自于百度翻译


     以下为原文
  As NoriakiTanakapointed out, you could comment out the if statement or change it to
if(CYBLE_BLESS_STATE_EVENT_CLOSE == CyBle_GetBleSsState()).
 
When low power is enabled, the BLESS transitions between many states amongst which ECO_STABLE is one. However, when low power is disabled, the BLESS state remains EVENT_CLOSE and never transitions to ECO_STABLE which is why the if statement will never return true.
 
To answer the questions about ECO, it is used to obtain timing for BLE communication. It will be always ON if low power is not used. ECO will be turned OFF and ON when low pwoer is used. The CyBle_EnterLPM() will take care of this.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分