BLE is stopped and the registers are retained in Deep Sleep Mode, so there should be no BLESS Interrupt generated at all.
For Sleep, this is possible when you enable the isr for both cores.
One correction to Achim's response, the BLESS interrupt (that triggers every Advertisement/Connection interval) is a DeepSleep interrupt and is capable of waking up the cores from DeepSleep.
That said, it is not a good idea to map a single interrupt to both the cores. Though theoretically it can be mapped to both the cores and wake-up both of them. There will exist a race condition on who clears the interrupt. If you are using the BLE component/PDL, then it maps the BLESS interrupt to the core that implements the controller.
If you need to wake-up the other core, then you can use IPC to notify the other core from the core that is woken up by the BLESS interrupt (controller core). Also note that when you select the "Dual-core architecture" for BLE, then CM0+ (controller) wakes-up CM4 (Host) through the IPC SystemPipe, whenever there is a need to process data on the host side. You can attach a callback to the IPC interrupt and can use that to process the required data.
Let me know if you need any help with that.
Meenakshi Sundaram R
If the bless isr can wake up the core from the Deep Sleep mode .Say that if the a connection has established,between the tow connection event the core of the controller can into the Deep Sleep mode.After the next connection event happen ,a interrupt of the bless can wake up the core to handle the BLE event .Because the product of customer power by the battery and need to reduce power consumption.
Do you have any good idea to reduce power consumption?
Yes this is perfectly possible. You can refer to our PSoC 6 Find me example here - CE212736 - PSoC 6 MCU with Bluetooth Low Energy (BLE) Connectivity - Find Me for an example on how to implement it. In the example, CM4 (host) relies on IPC interrupt (System pipe) from CM0+(Controller) to wake it up and Process the BLE Events. And CM0+ relies on the BLESS interrupt (either advertisement or connection) to wake it up from DeepSleep.
Meenakshi Sundaram R
There are some question when reading the code example CE212736 :
1:You say that CM4 (host) relies on IPC interrupt (System pipe) from CM0+(Controller) to wake it up and Process the BLE Events. And CM0+ relies on the BLESS interrupt (either advertisement or connection) to wake it up from DeepSleep. However ,I don't find the code about how to achieve it .Could you show me the place.
2:I still have some doubts about the low power mode handle that if the CM4 and the CM0+ can go into DS mode between the tow advertising events. If the answer is yes,how the BLESS to monitor the CONNECT_REC PDU?
3:How and when the CY_BLE_EVT_STACK_SHUTDOWN_COMPLETE will be happened?
Could you help me please,thanks.
To your queries -
1. You, as a user, does not have to do a lot of coding to achieve that. The BLE middleware and the Creator DWR configuration takes care of these. All you need to do is - For CM0+, enable the BLESS interrupt for CM0+ in the "Interrupts" tab of DWR. For CM4, make sure Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit(), Cy_Flash_Init() are called as part of initialization. Note that the init for CM4 is done as part of SystemInit API (defined in system_psoc63_cm4.c file) and only needs to be called, if you change the initialization code in your project. Once these initialization is complete, the BLE automatically wakes up the CM0+ every advertisement interval (you need to start advertisement as well for this) and when there are requests from peer, CM0+ core wakes up CM4 over IPC.
2. Yes both CM0+ and CM4 can enter DeepSleep. The BLE sub system uses the WCO (LFCLK) and an internal timer (available in DeepSleep) to generate interrupt every advertisement/connection interval. In this interrupt, the BLE sub system processes advertisement and connection requests. The user code is expected to call Cy_BLE_ProcessEvents API to push the connection request (if received) to the host (CM4). This push is supposed to wake up CM4. Typically the CM0+ code involves Cy_BLE_ProcessEvents() followed by Cy_SysPm_DeepSleep - the interrupt wakes up the device from DeepSleep and this code makes sure ProcessEvents is called before entering DeepSleep again.
3. The CY_BLE_EVT_STACK_SHUTDOWN_COMPLETE is received (from the host - CM4 in dual-core mode) when you call Cy_BLE_StackShutdown API. Note that the API is non-blocking and you will need to call Cy_BLE_ProcessEvents till the event is generated to make sure the ShutDown command is processed.
Let me know if this answers or if you have any further queries.
And a heads-up - we are working on a advanced application note, which talks about Designing BLE applications using PSoC 6.
Meenakshi Sundaram R