IPC pipes stop working when BLE is introduced in project CE223820_IPC_Pipes01

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
SuRa_2245351
Level 4
Level 4
First like received First like given

CE223820_IPC_Pipes01 works fine, but when BLE is introduced with simple advertising functionality IPC won't work. Please see project attached below.

0 Likes
1 Solution

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

View solution in original post

8 Replies
Anonymous
Not applicable

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.

0 Likes
Anonymous
Not applicable

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

Thank you Ranjith for your response, but I did changes in above project as recommended by you in "cy_ipc_config.h" and "cy_ipc_config.c" files but ipc still won't work when BLE is simply advertising. You can see changes made in below project.

0 Likes

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

Thank you msur for your response I did necessary changes as listed above but code still won't work when BLE is working. Please go through code if possible.

0 Likes

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?

0 Likes

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

0 Likes

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.

0 Likes