我的应用上有多路测量频率的需求,MCU用的是28035。既用到的eCAP的捕获管脚,也用到的HRCAP的管脚。频率范围几十Hz到1K。
在ecap的应用中,模块的时钟是系统时钟60MHz。ecap中断用到了计数器溢出中断和下降沿中断。通过计算一个下降沿周期内的溢出次数再加上下降沿时的捕获值计算波形周期,从而计算信号频率。结果正常稳定。
用同样的方法使用HRCAP测量时。则测量结果不稳定,仿真的时候发现在HRCAP的任意一个中断(下降沿或者溢出中断)的时候其他中断标志位都为1。而我在每一次中断的时候都把所有的中断标志清零了。这样导致的我的溢出中断的计数结果不正确,从而影响最终的计算值。最终结果都是频率偏小,即溢出中断的计数值偏小。
关于HRCAP的应用在没有找到更多的说明。查阅手册也没有发现设置中与手册不一致的地方。有知道原因的请给指点一下。谢谢
mangui zhang:计数器位宽是不是不一样 啊
我的应用上有多路测量频率的需求,MCU用的是28035。既用到的eCAP的捕获管脚,也用到的HRCAP的管脚。频率范围几十Hz到1K。
在ecap的应用中,模块的时钟是系统时钟60MHz。ecap中断用到了计数器溢出中断和下降沿中断。通过计算一个下降沿周期内的溢出次数再加上下降沿时的捕获值计算波形周期,从而计算信号频率。结果正常稳定。
用同样的方法使用HRCAP测量时。则测量结果不稳定,仿真的时候发现在HRCAP的任意一个中断(下降沿或者溢出中断)的时候其他中断标志位都为1。而我在每一次中断的时候都把所有的中断标志清零了。这样导致的我的溢出中断的计数结果不正确,从而影响最终的计算值。最终结果都是频率偏小,即溢出中断的计数值偏小。
关于HRCAP的应用在没有找到更多的说明。查阅手册也没有发现设置中与手册不一致的地方。有知道原因的请给指点一下。谢谢
user1988539:
回复 mangui zhang:
计数器位宽是16位的,应该没有问题吧?溢出后用另外一个16位的变量计数的。
我的应用上有多路测量频率的需求,MCU用的是28035。既用到的eCAP的捕获管脚,也用到的HRCAP的管脚。频率范围几十Hz到1K。
在ecap的应用中,模块的时钟是系统时钟60MHz。ecap中断用到了计数器溢出中断和下降沿中断。通过计算一个下降沿周期内的溢出次数再加上下降沿时的捕获值计算波形周期,从而计算信号频率。结果正常稳定。
用同样的方法使用HRCAP测量时。则测量结果不稳定,仿真的时候发现在HRCAP的任意一个中断(下降沿或者溢出中断)的时候其他中断标志位都为1。而我在每一次中断的时候都把所有的中断标志清零了。这样导致的我的溢出中断的计数结果不正确,从而影响最终的计算值。最终结果都是频率偏小,即溢出中断的计数值偏小。
关于HRCAP的应用在没有找到更多的说明。查阅手册也没有发现设置中与手册不一致的地方。有知道原因的请给指点一下。谢谢
seven xie:
你好:
用HRCAP能捕获455HZ以下频率的信号吗?
因为若HRCAP时钟设置60M,计数器16位来算:65536*16.67ns=1.09ms
那么能捕获到的最小频率是:1/(1.09ms+1.09ms)=455hz
盼复
谢谢