Part Number:TMS320F28034Other Parts Discussed in Thread:CONTROLSUITE
HRCAP如何用在50Hz电网过零点捕获上,是否会造成计数器过载,如何解决?
Yale Li:
您好,首先需要通过硬件电路将市电过零点信息提取出来,您可以参考一下这篇文档:采用比较器的过零检测电路
然后再用捕获模块对其上升沿或下降沿进行捕获。
shouxin chen 说:是否会造成计数器过载
可以在程序中定义一个变量,计数器溢出的时候对该变量+1,来记录计数器的溢出次数
,
shouxin chen:
硬件上已经实现了提取市电过流点,我用HRCAP的上升沿进行捕获,按照ti给的官方例程配置的,但是不进入中断,只是看到了过载标志位为1
,
Yale Li:
能否告知一下您参考的是哪个例程?
,
shouxin chen:
controlSUITE\device_support\f2803x\v130\DSP2803x_examples_ccsv5\hrcap_capture_pwm
,
Yale Li:
shouxin chen 说:只是看到了过载标志位为1
您是指 HCIFR 中的 COUNTEROVF 这个位吗?
有检查过该寄存器上其它位的值吗?RISEOVF、RISE、FALL这三个位。
,
shouxin chen:
只看到COUNTEROVF置位了,其它3个没有置位,我设置了断点,没有进入,如果采用COUNTEROVF使能中断就可以进入
,
Yale Li:
根据您的描述,并参考TRM 400页:5.3.3 HRCAP Interrupts 的 Figure 5-9. Interrupts in HRCAP Module,HRCAP模块并没有捕获到信号。
建议您再检查一下与HRCAP相关的管脚配置,以及输入信号。
并且希望您再检查一下这4个寄存器的值来佐证这个推测:
,
Yale Li:
您好,我可能找到溢出的原因了,您看一下这两个帖子:
https://e2echina.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/181430/f28035-hrcap-50hz
https://e2echina.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/192686/hrcap-pwm
,
shouxin chen:
谢谢,我先学习一下再请教您
,
shouxin chen:
现在我理解的就是用HRCAP不能用于低频率的的捕获,因为只有16位计数器,决定了脉宽宽度。是这样吗?
,
Yale Li:
是的,根据 TRM Figure 5-8. HRCAP High-Resolution Mode Operating Logic 以及 datasheet 8.9.12.1.1 High-Resolution Capture (HRCAP) Timing Requirements,在120MHz下,16-bit counter (HCCOUNTER)的最大计数时间是 65536 * 8.33ns 约等于 0.55ms,即使是在MAX捕获时钟下,最大计数值也仅为 65536 * 10.204ns 约等于 0.67ms,远小于工频电的一个周期20ms。
我给您提供一个思路,其实也是我最开始的回答:
您可以定义一个变量,HCCOUNTER每溢出1次,在溢出事件中断中将该变量+1;然后在捕获到上升沿或下降沿的中断中计算总的计数值。
,
shouxin chen:
感谢指导
,
Yale Li:
客气了,很高兴能帮助到您