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.

f28m35中MSGRAM的操作问题

       C28   Address                                                                        M3   Address

0003 F800 – 0003 FBFF       CtoM MSG RAM (Parity) 2K        2007 F000 – 2007 F7FF

0003 FC00 – 0003 FFFF       MtoC MSG RAM (Parity) 2K        2007 F800 – 2007 FFFF

 1、如果M3读C28的值,M3先写MTOCIPCCOM,写MTOCIPCADDR=0003 F800,然后置MTOCIPC flag,C28发现MTOCIPC flag后,写值进MTOCIPCDATAR,最后M3读MTOCIPCDATAR,也就是读到了C28侧0003 F800 下的值。

2、如果是M3传数据给C28呢?在2007 F800 写入一个数据,如何让C28第一时间读到?具体操作怎做?

  • 您好!

    在TRM 157页中有整个M3去读C28x的数据的过程。至于读还是写,就是在设置MTOCIPCCOM寄存器的时候实现的。在spruh22b 573页有相应的命令解释,如果要写16位的数据,那么写入MTOCIPCCOM命令字为0x0000005,如果要写32位的数据,那么写入MTOCIPCCOM命令字为0x0000006。

    另外,在M3的驱动库中,有相应的读写函数可供您参考!

       // Read 32-bit word from C28 32-bit write word variable. Use IPC Flag 18 to

       // check when read data is ready.

       IPCMtoCDataRead(&g_sIpcController1, pulMsgRam[1], &ulRWord32,

                       IPC_LENGTH_32_BITS, ENABLE_BLOCKING,

                       IPC_FLAG18);

    M3会通过MTOCIPC标志位或者中断的方式去通知C28x。

  • 楼上说的对。

    写入和读取的原理都是一样的,

    写入时:

    M3向C28X发送 命令,28x要写的地址,数据长度,要写的数据,然后IPC置位让28X中断。

    28X中断判断命令,针对地址进行写入。

    读取时:

    M3要读C28X侧的内容,发送,命令,要读的地址,FLAG,数据大小,以及读取后存放的位置。(MTCRAM)

    28x收到命令后,读取,向M3发送命令,要写入的地址,FLAG,数据大小,以及数据。(CTOM RAM)

  • m3,c28之间不需要同步,也就是读写数据时不需要通知对方,把这两块RAM当共享RAM用,按各自可读写或只读。可以这样拿来用吗?当普通内存用

x 出现错误。请重试或与管理员联系。