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: Communication CM to CPU1 using MSGRAM

Part Number: TMS320F28388D
Other Parts Discussed in Thread: TMDXIDDK379D, C2000WARE

Hello,

I try to use the MSGRAM to transer struct data from CPU1 to CM and also transfer data from CM to CPU1. My base project was the tmdxiddk379d from C2000 Ware MotorControl SDK.

I want to transfer the struct data without using a IPC function or the IPC interrupt. The problem is that e.g CPU1 struct is located at position 0x39208 and I  find the variable in CM at 0x20080410 but expected was

0x20080208. If I change the address in CPU1 I can always find the struct located at double the address I expected. What is the problem? How does CPU1 and CM organise the MSGRAM is it both organised in words?

Thank you in advance!

  • Hi Marcus,
    The C28x memories and peripherals are 16-bit addressable, and the ARM core is 8-bit addressable, hence the difference you are seeing.
    You can also see this in the memory maps of C28x and CM, as the sizes are given in the multiple of 16-bit words and 8-bit bytes respectively.
    The driverlib functions for IPC communication takes care of this.

    Regards,
    Andy

  • Markus,

    AndyP answer is correct.

    Regards,

    Manoj

  • Okay, thank you very much for that answer. I expected something like that but now I am sure that this is the problem.

    Today I checked the IPC_sendCommand/IPC_sendResponse again and understand the difference. But still I dont understand how the example in C2000Ware_MotorControl_SDK_4_00_00_00\solutions\tmdxiddk379d\f2838x is handling the data because there is no use of these IPC  functions. Can you please explain what is the difference here?

    Thank you!

    Markus

  • Marcus,

    as far as I can see, in the mentioned project the IPC functions from driverlib are used.
    The addrCorrEnable parameter and IPC_ADDR_OFFSET_CORR macro do the magic trick with the addresses.

    Regards,
    Andy

  • Thanks for your help.  Your help solved my issue.