嗨,支持团队,
我正在从fh_proxr_sdk (v3.0.6)创建软件,并添加了SPI从驱动。
SPI从驱动程序在#undef CFG_EXT_SLEEP条件下工作良好。
但是在EXT_SLEEP模式下,BLE堆栈似乎停止了。
BLE在IDLE模式下工作(启动后)。
但是BLE堆栈在进入EXT_SLEEP模式后停止。
我发现这个问题与spi_dready_high()有关;操作。
如果我没有在初始化时调用spi_hci_flow_on_func()(该函数包含spi_dready_high();), BLE堆栈在进入EXT_SLEEP模式后不会停止。
我发现在ext_sleep模式下调用spi_dready_high()的SPI_DREADY_PIN端口输出脉冲信号。
如果我没有调用spi_hci_flow_on_func(),脉冲信号不输出,BLE堆栈工作良好。
所以我想知道如何在下面的时间....做一些事情
app_sleep_entry_proc ();//在WFI()之前输入ext_sleep
app_sleep_exit_proc ();//在退出WFI()…
谢谢。
你好马络,
我已经让当地的团队联系你了。在扩展睡眠模式下,堆栈将关闭,BLE定时器/ app定时器将决定设备何时由于中断或BLE事件从睡眠中出来。
BR JE_Dialog
嗨JE_Dialog。
我有个理由。
每次WFI()的唤醒时间,都会自动调用spi_hci_flow_on_func()。
所以SPI_DREADY_PIN每次输出高信号。
但是我们的外部CPU并不关心DA14580在扩展睡眠模式下发出的DREADY信号……
然后DA14580等待响应,但外部CPU没有响应,然后BLE堆栈计时被延迟…
同时我们的CPU通过DREADY中断信号来消耗能量。
最好是DREADY信号必须改变,只有SPI通信发生。DA14580唤醒时间不需要更改。
所以我在spi_hci_flow_on_func()中添加了状态检查代码;
:
if (app_get_sleep_mode() == ARCH_EXT_SLEEP_ON)返回;//检测从下一个睡眠模式唤醒。
:
有什么问题吗?或者请告诉我更好的解决方案…
BR
嗨,Maro,一个本地团队会打电话给你讨论你的解决方案。BR JE_Dialog