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.

[参考译文] 编译器/F28M35H52C:从C28写入IPC REG的简单M3中断触发器

Guru**** 2529560 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/657516/compiler-f28m35h52c-simple-m3-interrupt-trigger-from-c28-writing-to-ipc-reg

部件号:F28M35H52C

工具/软件:TI C/C++编译器

我有一个运行的双程序,它使用在.cmd文件中定义的循环共享RAM缓冲区阵列将数据从C28传递到M3。  我现在想增加M3对来自C28的信号的反应能力,即需要对共享阵列中的某些数据执行操作,下面是我看到的步骤:

  1. M3被配置为运行由 MTOCIPCSET寄存器中设置的标志触发的中断
  2. C28识别触发方案并将索引号写入CTOM消息RAM
  3. C28在 MTOCIPCSET寄存器中设置标志
  4. M3中断运行和处理共享RAM阵列中的数据
  5. M3清除中断标志

我已经研究 了F28M35x-DRL-UG.pdf文档中的IPC和IPC lite信息,从p124开始,但它看起来就像我需要的过度使用。  我很难找到如何设置上述内容的示例,任何指向文档,wikis或代码片段的指针都会受到欢迎。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Ted,

    您可以使用IPC Lite功能作为参考。

    让我介绍一下我对您的询问的理解。 我认为您需要以下内容:

    1. M3需要在C28中触发中断
    2. C28x收到IPC中断后,它会在消息RAM中写入一些数据
    3. C28触发另一个M3中断
    4. M3在接收到中断时处理数据

    我假设您不打算在第一步中从M3向C28发送任何信息。 因此,我们假设您将触发C28的Flag 0专用于此任务。 您可以执行以下操作来实现此目标

    方法1:

    • 通过在M3的IPCSET寄存器中设置位0触发C28,并等待FLG寄存器中的位0为0。
    • 在C28x中的中断ISR中,将数据写入消息RAM中
    • 通过在C28的ACK寄存器中设置位0来确认该标志。 这将清除M3中FLG寄存器中的位0
    • M3从等待循环中出来,并处理消息RAM中可用的数据

    方法2:

    • 通过在M3的IPCSET寄存器中设置位0触发C28
    • 在C28x中的中断ISR中,将数据写入消息RAM中
    • 通过在C28的ACK寄存器中设置位0来确认该标志。 这将清除M3中FLG寄存器中的位0
    • 通过在C28的IPCSET寄存器中设置位0触发M3
    • 在M3的中断ISR中,处理消息RAM中可用的数据
    • 通过在M3的ACK寄存器中设置位0来确认该标志。 这将清除C28中FLG寄存器中的位0

    希望这能有所帮助!

    谢谢,此致,

    Veena

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Ted,

    您可以使用IPC_Util.c文件中的可用功能来设置标志,发送ack,等待ack等。

    谢谢,此致,
    Veena
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Veena,感谢您的参与。  您已正确总结,除了C28是将启动中断的处理器。  我查看了IPC_Util.c文件,想知道是否可以使用其中的功能设置和清除标志。  在尝试执行此操作时,如何启用M3端的中断? 我得到了尽可能多的帮助  

    IntRegister (INT_CTOMPIC1,CtoMIPC1IntHandler); 

    那么呢? 什么是IntEnable(???) IPC标志的语句?

    谢谢!

    TED

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Ted,

    您可以在中断控制器模块中启用IPC中断。 您可以使用   Mware驱动程序中interrupe.c文件中可用的函数IntRegister,IntEnable,IntMasterEnable。 有关详细信息,请参阅API参考指南。

    谢谢,此致,

    Veena