- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
CE223820_IPC_Pipes01 works fine, but when BLE is introduced with simple advertising functionality IPC won't work. Please see project attached below.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello rautinst_2245351,
It appears like your code has a couple of issues -
1. An interrupt mux clash in CM0+. Your code uses Mux 8 for both the user pipe and the UART interrupt. After I changed the IPC user pipe mux on CM0+ to 7, it works. It is recommended to use deep sleep capable vectors for IPC as it is capable of waking up the core even when it is in deep sleep mode.
2. Your Cy_IPC_Pipe_SendMessage API in both M4 and M0+ uses CY_IPC_EP_CYPIPE_CMx_ADDR macro for to/fromAddr. You need to update it to the User pipe endpoints. Please use "CY_IPC_EP_USRPIPE_ADDR_EP0" for CY_IPC_EP_CYPIPE_CM0_ADDR and "CY_IPC_EP_USRPIPE_ADDR_EP1" for CY_IPC_EP_CYPIPE_CM4_ADDR
With the above changes the code works in my setup.
Let me know if this fixes your issue.
Regards,
Meenakshi Sundaram R
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I see the issue you are facing, This is probably because BLE is using the same IPC Pipes as the ones used in the code example and hence the issue. Let me look into this further and get back to you.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
As I previously stated the issue arises because the Endpoints used in the code examples is also used by BLE as well.
This is causing the conflict and preventing it from functioning properly.
In a general scenario you will need to define and use USER pipes. A sample configuration can be found below, which needs to be added to the IPC_Config.h file and IPC_Condif.c file can be found attached.
Thanks,
Ranjith
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello rautinst_2245351,
It appears like your code has a couple of issues -
1. An interrupt mux clash in CM0+. Your code uses Mux 8 for both the user pipe and the UART interrupt. After I changed the IPC user pipe mux on CM0+ to 7, it works. It is recommended to use deep sleep capable vectors for IPC as it is capable of waking up the core even when it is in deep sleep mode.
2. Your Cy_IPC_Pipe_SendMessage API in both M4 and M0+ uses CY_IPC_EP_CYPIPE_CMx_ADDR macro for to/fromAddr. You need to update it to the User pipe endpoints. Please use "CY_IPC_EP_USRPIPE_ADDR_EP0" for CY_IPC_EP_CYPIPE_CM0_ADDR and "CY_IPC_EP_USRPIPE_ADDR_EP1" for CY_IPC_EP_CYPIPE_CM4_ADDR
With the above changes the code works in my setup.
Let me know if this fixes your issue.
Regards,
Meenakshi Sundaram R
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I tested the project you attached works fine on cy8ckit-062 board. Each core can receive message sent from the opposite side while BLE is working. Can you double check?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am also using same kit CY8CKIT-062-BLE , but still it won't work. I am having only one Kit with me hence couldn't check on another Kit. Will check on another kit when possible.
Thank you
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am using this code and it works but I want to assign the IPC interrupt to a different number on CM0 for deep sleep. I already used all 3-7 interrupts. Am I allowed to use 2? I can see the default pipe already used 1.