Other Parts Discussed in Thread: TMS320F28075, C2000WARE
主题中讨论的其他器件: C2000WARE
你(们)好
请询问以下问题。
请帮帮我。
____________________________________________________________
用途:检测不同的方波信号以形成相同的 PWM、并确定感测到的信号的占空比和周期。
使用的器件:TMS320F28075
问题: eCAP1未检测方波、它检测28075输出 PWM。 我想检测输入方波信号。
________________________________________________________________
硬件:
- GPIO24 [连接到另一个方波。 我在示波器中检查了占空比50%脉冲信号。]
- GPIO25 [以与 GPIO24相同的方式连接。]
F/w 设置
。
。
。
// GPIO 设置
InputXbarRegs.INPUT5SELECT = 24; //将 EXTSYNCIN1源设置为 GPIO24
InputXbarRegs.INPUT7SELECT = 25; //将 eCAP1源设置为 GPIO25
。
。
。
//设置捕捉
EALLOW;
SyncSockRegs.SYNCSELECT.bit.ECAP1SYNCIN = 5;//EXTSYNCIN1选择
EDIS;
//
//配置外设寄存器
//
// ECap1Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUCT; //单次触发
ECap1Regs.ECCTL2.bit.CONT_ONESHT = EC_OneShot; // 1h (R/W)=在单次触发模式下运行
ECap1Regs.ECCTL2.bit.STOP_Wrap = EC_EVENT4; //在4个事件时停止
ECap1Regs.ECCTL1.bit.CAP1POL = EC_FALLING; //下降边沿= 1.
ECap1Regs.ECCTL1.bit.CAP2POL = EC_RISING; //上升边沿= 0
ECap1Regs.ECCTL1.bit.CAP3POL = EC_FALLING; //下降边沿= 1.
ECap1Regs.ECCTL1.bit.CAP4POL = EC_RISING; //上升边沿= 0
ECap1Regs.ECCTL1.bit.CTRST1 = EC_Delta_MODE; // 1:事件1时间戳已被捕捉后的复位计数器(用于差分模式运行)
//EC_ABS_MODE; // 0:不在捕捉事件1 (绝对时间戳)上复位计数器
ECap1Regs.ECCTL1.bit.CTRST2 = EC_Delta_MODE; // 1:事件1时间戳已被捕捉后的复位计数器(用于差分模式运行)
//EC_ABS_MODE; // 0:不在捕捉事件1 (绝对时间戳)上复位计数器
ECap1Regs.ECCTL1.bit.CTRST3 = EC_Delta_MODE; // 1:事件1时间戳已被捕捉后的复位计数器(用于差分模式运行)
//EC_ABS_MODE; // 0:不在捕捉事件1 (绝对时间戳)上复位计数器
ECap1Regs.ECCTL1.bit.CTRST4 = EC_Delta_MODE; // 1:事件1时间戳已被捕捉后的复位计数器(用于差分模式运行)
//EC_ABS_MODE; // 0:不在捕捉事件1 (绝对时间戳)上复位计数器
ECap1Regs.ECCTL2.bit.SYNCI_EN = EC_ENABLE; //启用同步输入
ECap1Regs.ECCTL2.bit.SYNCO_SEL = EC_CTR_PRD;// EC_SYNCIN;
//EC_SYNCO_DIS; //直通//不同步
// ECap1Regs.ECCTL2.bit.SYNCO_SEL = EC_CTR_PRD; //选择同步输入事件作为同步输出信号
ECap1Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE; //启用捕捉单元
ECap1Regs.ECCTL2.bit.CAP_APWM = EC_DISABLE;
ECap1Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN; //开始计数器
ECap1Regs.ECCTL2.bit.rearm = EC_ARM; // ARM 单次触发
ECap1Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE; //启用 CAP1-CAP4寄存器加载
ECap1Regs.ECEINT.BIT.CEVT4 = EC_ENABLE; // 4个事件=__INTERRUPT
ECap1Regs.ECCLR.bit.INT = 1;。
。
。
PieVectTable.ECAP1_INT =&eCAP1_ISR;//用于 ECAP1中断的函数
PieCtrlRegs.PIEIER4.bit.INTx1 = INT_ENABLE;//CAP1
IER |= M_INT4;//启用连接到 ECAP1-6的 CPU INT4 INT: