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: TMS320F28388D IPC CPU1 to CPU2

Part Number: TMS320F28388D
Other Parts Discussed in Thread: C2000WARE

Hello everyone,

I want to do IPC between CPU1 and CPU2.

I was able to do it on the TMS320F2837D but now I wanted to do the same with the TMS320F28388D.

C2000_Ware doesn't provide any header-file defining the IPC-Registers.
This simple line of code:

while(IpcRegs.IPCFLG.bit.IPC3){ }

is no longer possible on the TMS320F28388D since the IPCRegs aren't defined from TI.

Since the TMS320F28388D is still under developement, could it be, that the IPC between CPU1 and CPU2 isn't ready at the moment?
I have the lates version of C2000 installed (C2000Ware_2_00_00_03).

Regards,

Marcel.

  • Marcel

    IPC is available and ready to use.

    You can find the IPC bitfield header under /device_support/f2838x/headers/include/f2838x_ipc.h (see bottom of the file for names)

    The IpcRegs is renamed in F2838x software since there is a separate one for IPC to CPU2 or IPC to CM.

    Additionally, you can see examples here: \driverlib\f2838x\examples\c28x_dual

    Best regards

    Chris

  • Thanks for the quick answer.

    Just for record, in order to use the IPC-Registers on CPU2 I had to do a little adjustment to the file, because the preprocessor command is wrong inside the header file.
    Here is what's in the f2838x_ipc.h

    #ifdef CPU1
    extern volatile struct CPU1TOCPU2_IPC_REGS_CPU1VIEW Cpu1toCpu2IpcRegs;
    extern volatile struct CPU1TOCM_IPC_REGS_CPU1VIEW Cpu1toCmIpcRegs;
    #elif CPU2
    extern volatile struct CPU1TOCPU2_IPC_REGS_CPU2VIEW Cpu2toCpu1IpcRegs;
    extern volatile struct CPU2TOCM_IPC_REGS_CPU2VIEW Cpu2toCmIpcRegs;
    #endif

    But to make it work I had to change it to.

    #ifdef CPU1
    extern volatile struct CPU1TOCPU2_IPC_REGS_CPU1VIEW Cpu1toCpu2IpcRegs;
    extern volatile struct CPU1TOCM_IPC_REGS_CPU1VIEW Cpu1toCmIpcRegs;
    #elif defined(CPU2)
    extern volatile struct CPU1TOCPU2_IPC_REGS_CPU2VIEW Cpu2toCpu1IpcRegs;
    extern volatile struct CPU2TOCM_IPC_REGS_CPU2VIEW Cpu2toCmIpcRegs;
    #endif

    Thanks and Regards,

    Marcel.

  • Great!

    Thanks, I'll get this issue reported to the team

    Best regards

    Chris