Thread 中讨论的其他器件:controlSUITE、 C2000WARE
大家好、
问题
我正在尝试在 C28内核中启动 eCAP 外设、但无法使其捕获任何事件并完全耗尽创意... 在 CAP 寄存器中不写入任何内容、事件标志保持为0。 请帮助我找到问题。
设置
通用信息
- 引脚: PE0_GPIO24
- 外设:eCAP1
- SYSCLK:150MHz
- 我使用 XDS100v2 JTAG 进行调试
- 增量编码器用于通过 RS-485接收器向引脚提供脉冲
代码
ECap1Regs.ECCTL1.bit.CAP1POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CAP2POL = EC_FALLING;
ECap1Regs.ECCTL1.bit.CAP3POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CAP4POL = EC_FALLING;
ECap1Regs.ECCTL1.bit.CTRST1 = EC_Delta_MODE;
ECap1Regs.ECCTL1.bit.CTRST2 = EC_Delta_MODE;
ECap1Regs.ECCTL1.bit.CTRST3 = EC_Delta_MODE;
ECap1Regs.ECCTL1.bit.CTRST4 = EC_Delta_MODE;
ECap1Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE;
ECap1Regs.ECCTL1.bit.prescale = EC_DIV1;
ECap1Regs.ECCTL2.bit.CAP_APWM = EC_CAP_MODE;
ECap1Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUCT;
ECap1Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS;
ECap1Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE;
ECap1Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN;
这是直接从参考手册(第8.7.4.1段)中删除代码。 我还多次读取整个 eCAP 部分并验证了这一点。
我已检查的内容
- 时钟被启用到 eCAP1、TSCTR 正在递增计数
- GPIO 多路复用器:这是根据文档:GPAMUX2.GPIO24 = 1
- 信号实际上会传入、我可以看到它在 GPADAT.GPIO24中随着调试器发生了变化
- 信号可以路由到外设:我尝试使用此引脚上也提供的 eQEP、在几分钟内我可以进行递增/递减计数。
- 我的同事正在使用 f28069、我让他启动调试器、启用 eCAP 时钟并设置 CAPLDEN 和 TSCTRSTOP 位。 它发挥了作用。 原因。 。 第一个。 请尝试。 我也尝试过同样的方法、但没有成功。
- 我在 eCAP2上尝试了相同(以及许多其他)的设置、但也不起作用。
- 我尝试了两种不同的板、采用不同的芯片修订版本:B 和 E
- 我检查了是否没有其他引脚被多路复用为 eCAP1。
一个 sisimal:当我处理事件预分频器并将其连续设置为随机数时,有时会触发一个事件并加载 CAP 寄存器。