Thread 中讨论的其他器件:controlSUITE
工具/软件:TI-RTOS
我尝试使用 ePWM 向超声波传感器发送脉冲、并侦听回波信号。 我还使用 eCAP 来测量回波所需的时间。
但是、我看不到 eCAP 中存储的任何值。 我使用的是3引脚超声波传感器(28015)。 如何配置输入和输出?
GpioCtrlRegs.GPAMUX1.bit.GPIO5=1; // 0=GPIO、1=EPWM3B、2=Resv、3=ECAP1 GpioCtrlRegs.GPADIR.bit.GPIO5=1; // 1=输出,0=输入 GpioCtrlRegs.GPAMUX1.bit.GPIO5=3; // 0=GPIO、1=EPWM3B、2=Resv、3=ECAP1 GpioCtrlRegs.GPADIR.bit.GPIO5=0; // 1=输出,0=输入 EALLOW; EPwm3Regs.TBCTL.bit.HSPCLKDIV = 5; EPwm3Regs.TBCTL.bit.CLKDIV = 3; EPwm3Regs.TBPRD = 48675; // 100ms 周期 //EPwm3Regs.CMPA.half.CMPA = 8;//生成10us 脉冲 EPwm3Regs.CMPB = 8;//生成10us 脉冲 EPwm3Regs.TBPHS.Half.TBPHS = 0; EPwm3Regs.TBCTR = 0; EPwm3Regs.TBCTL.bit.CTRMODE = 0; EPwm3Regs.TBCTL.bit.PHSEN = 0; EPwm3Regs.TBCTL.bit.PRDLD = 0; EPwm3Regs.TBCTL.bit.SYNCOSEL = 2; EPwm3Regs.CMPCTL.bit.SHDWBMODE = 1; EPwm3Regs.CMPCTL.bit.LOADBMODE = 0; EPwm3Regs.AQCTLB.bit.ZRO = 2; EPwm3Regs.AQCTLB.bit.CAU = 1; //配置外设寄存器 ECap1Regs.ECCTL2.bit.CONT_ONESHT = 0;//连续模式 ECap1Regs.ECCTL2.bit.STOP_Wrap = 3; //在4个事件时停止 ECap1Regs.ECCTL1.bit.CAP1POL=0; //上升沿 ECap1Regs.ECCTL1.bit.CAP2POL=1; //下降沿 ECap1Regs.ECCTL1.bit.CAP3POL=0; //上升沿 ECap1Regs.ECCTL1.bit.CAP4POL=1; //下降沿 ECap1Regs.ECCTL1.bit.CTRST1 = 1; //差动运算 ECap1Regs.ECCTL1.bit.CTRST2 = 1; //差动运算 ECap1Regs.ECCTL1.bit.CTRST3 = 1; //差动运算 ECap1Regs.ECCTL1.bit.CTRST4 = 1; //差动运算 //ECap1Regs.ECCTL2.bit.CAP_APWM = 0; //禁用同步输入 ECap1Regs.ECCTL2.bit.SYNCI_EN = 0; //禁用同步输入 ECap1Regs.ECCTL2.bit.SYNCO_SEL = 3; //禁用 ECap1Regs.ECCTL1.bit.prescale = 0; //预分频= 1 /禁用 ECap1Regs.ECCTL1.bit.CAPLDEN = 1; ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1; //开始计数器 ECap1Regs.ECEINT.BIT.CEVT4 = 1; // 4个事件=中断 EDIS;