This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28388D: Question about ipc

Part Number: TMS320F28388D

Dear team:

My customer has many questions about IPC, which are as follows:

1, In 16.6 IPC Communication Protocol:

Is it possible to set any one or several of IPCSET[4]~IPCSET[31] while triggering the IPCSET[3] interrupt? In this way, in the 3 interrupts of the remote CPU, multiple cases can be processed in the 3 interrupt process through the value of the status register.

2, We can set the number of IPC message in circular buffer, but can we set the size of circular buffer?

3, How is the data copied to the circular buffer of the message queue? 

In the above code, "TxMsg.address = (uint32_t)CPU1Data;" sets the data pointer to address, so does the data copy happen when the IPC_sendMessageToQueue function is called?

Best regards,

Green

  • Green,

    Is it possible to set any one or several of IPCSET[4]~IPCSET[31] while triggering the IPCSET[3] interrupt? In this way, in the 3 interrupts of the remote CPU, multiple cases can be processed in the 3 interrupt process through the value of the status register.

    In C28x, only IPC0-IPC3 events can be configured to trigger IPC interrupt on CPU.

    You can however, set multiple IPC flags 4 - 31 to handle many cases by reading the IPCSTS register in IPCISR code and decide on actions to be taken based on the code.

    2, We can set the number of IPC message in circular buffer, but can we set the size of circular buffer?

    No, please don't change any macros in ipc.h / ipc.c. These macros are part of driverlib which houldn't be modified.

    Based on your question, i believe you want to increase the number of data to send to CPU2. You need to change the following

    To do this:

    1) Increase the size of readData array which is stored in MSGRAM_CPU1_TO_CPU2 (0x3A000)

    2) Match the size of readData array with the size of for loop

    3) Increase the size of TxMsg.dataw1 to size of the array.

    3, How is the data copied to the circular buffer of the message queue? 

    The data to be sent to CPU2 is copied from CPU1 using below section of the code. When IPC_sendMessageToQueue is executed, it sends TxMsg.command, address, dataw1, dataw2 information to CPU2.

    Regards,

    Manoj