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:从 cpu22触发 cpu1.dma

Guru**** 2552110 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1224239/tms320f28388d-triggering-cpu1-dma-from-cpu22

器件型号:TMS320F28388D

您好!

我将 在 F28388D 上运行多个严格控制环路、并并行使用 CPU1、CPU1.CLA、CPU2和 CPU2.CLA。 我需要使用 CPU1.DMA 将数据从 CPU2toCPU1MsgRAM 移动到 CPU1.CLA。  我已经配置 CPU1.DMA、以将数据从 CPU2to CPU1MsgRAM 移动到 DMAtoCLAMsgRAM。  我想在 CPU2主代码上使用软件强制 PWM16.SOCA 事件来触发 CPU1.DMA 传输、但无法使其正常工作。  我完成了涉及 dma_shared_peripheral 示例的以下步骤:

设置 CPU1.DMA:

//初始化 DMA
//
DMAInitialize();

DMADest =&Iiref_cc;
DMASsource =&II_ref_21;// CPU2的 CMPA 值位置

EALLOW;

//
//设置源地址:
//
DMARegs.CH2.SRC_EGEP_ADDR_SHANDBY =(UINT32) DMASource;//指向
//开始
//源缓冲器
DMARegs.CH2.SRC_ADDR_SHADEP =(UINT32) DMASource;

//
//设置目标地址:
//
DmaRegs.CH2.dst_beg_ADDR_shadow =(UINT32) DMADest;//指向
//开始
//目的缓冲区
DmaRegs.CH2.dst_ADDR_shadow =(UINT32) DMADest;

EDIS;

DMACH2BurstConfig (1、1、1);//设置突发寄存器
DMACH2TransferConfig (1、1、1);//设置传输寄存器
DMACH2WrapConfig (0xFFFF、0、0xFFFF、0);
DMACH2ModeConfig (66、PERINT_ENABLE、Oneshot_disable、CONT_ENABLE、
SYNC_DISABLE、SYNC_SRC、OVRFLOW_DISABLE、三十位_BIT、
CHINT_END、CHINT_DISABLE);
EALLOW;
DmaRegs.CH2.control.bit.run = 1;
EDIS;

2.将 PWM16的所有权转让给 CPU2:

DevCfgRegs.CPUSEL0.bit.EPWM16 = 1;  

3.在 CPU2上配置 PWM16的 SOCA

//设置 EPWM16.SOCA 事件
EALLOW;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;
CpuSysRegs.PCLKCR2.bit.EPWM16 = 1;
EPwm16Regs.ETSEL.bit.SOCAEN=1;
EDIS;

4.在 ISR 内对 CPU2强制执行 PWM16.SOCA 事件

EALLOW;
EPwm16Regs.ETFRC.bit.SOCA=1;
EDIS;

当我在 CPU2上运行代码时、CPU1.DMA 传输不会触发、但如果我 使用 CPU1上的 DmaRegs.CH2.CONTROL.bit.PERINTFRC 强制进行 DMA 传输、则数据传输成功。  这意味着没有生成 PWM16.SOCA 或 CPU1.DMA 触发设置不正确。  我无法找到问题。 非常感谢您对此问题的建议。  

谢谢

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

    我还必须配置以下寄存器。  

    EPwm16Regs.ETPS.bit.SOCAPRD=1