主题中讨论的其他器件:C2000WARE
我的目标是让比较器匹配在信号的上升沿触发 CLA 中断、具体实现如下:
1. CMP1SS 将在比较器匹配时产生上升沿信号。
Cmpss1Regs.COMPCTL.bit.COMPHSOURCE = 0;
Cmpss1Regs.COMPCTL.bit.COMPHINV = 0;
Cmpss1Regs.COMPCTL.bit.CTRIPHSEL = 0;
Cmpss1Regs.COMPCTL.bit.CTRIPOUTHSEL = 0;
Cmpss1Regs.COMPCTL.bit.ASYNCHEN = 1;
Cmpss1Regs.COMPCTL.bit.COMPDACE = 1;
2、比较器输出通过输出 XBAR7映射到 GPIO16。
GpioCtrlRegs.GPAGMUX2.bit.GPIO16=0 ;
GpioCtrlRegs.GPAMUX2.bit.GPIO16=3;
GpioCtrlRegs.GPADIR.bit.GPIO16=1 ;
OutputXbarRegs.OUTPUT7MUX0TO15CFG.bit.MUX0 = 0;
OutputXbarRegs.OUTPUTINV.bit.OUTPUT7 = 0;
GPIO16连接到 GPIO14、GPIO14通过输入 XBAR13映射到 XINT4。
GpioCtrlRegs.GPAGMUX1.bit.GPIO14 = 0;
GpioCtrlRegs.GPAMUX1.bit.GPIO14=0 ;
GpioCtrlRegs.GPAPUD.bit.GPIO14=1 ;
GpioCtrlRegs.GPADIR.bit.GPIO14 = 0;
GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 0x3;
InputXbarRegs.INPUT13SELECT = 14;
XbarRegs.XBARCLR1.ALL |= 0x00020002;
4. XINT4被设置为正(上升)边沿触发。
XintRegs.XINT4CR.bit.ENABLE = 1;
XintRegs.XINT4CR.bit.polarity = 1;
5、CLA 任务3被设置为在 XINT4上触发、因此预计它将在比较器(CMP1SS)输出的上升沿上触发。
DmaClaSrcSelRegs.CLA1TASSKSRCSEL1.bit.TASK3=32 ;
6、这也映射到 EPwmXbar 跳闸4、然后映射到 EPwm6数字比较器 DCAEVT1、以生成一个到 EPwm6的同步脉冲
EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX0 = 0;
EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX0 = 1;
EPwmXbarRegs.TRIPOUTINV.bit.TRIP4 = 0;
EPwm6Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 3;
EPwm6Regs.TZDCSEL.bit.DCAEVT1 = 2;
EPwm6Regs.DCACTL.bit.EVT1SRCSEL = 0;
EPwm6Regs.DCACTL.bit.EVT1SYNCE = 1;
此设置的结果如下所示。
通道3是在 GPIO16上测得的 CMPSS1输出。
通道4是 EPwm8B 输出、该输出由 DCAEVT1生成的 SYNC 脉冲(见上面的#6)以及 CLA 任务3通过强制同步命令(EPwm8Regs.TBCTL.bit.SWFSYNC = 1)触发。
在通道4上看到的上升沿应与通道3上 CMPSS1输出的上升沿保持一致、但它应与下降沿保持一致。 我是否错过了设置、或者这是预期的工作方式? XINT4似乎未在上升沿触发、或者可能在 CMP1SS 输出变为低电平之前不触发。