历史上的今天
今天是:2025年03月17日(星期一)
2021年03月17日 | 基于STM32和CPLD可编程逻辑器件的等精度测频
2021-03-17 来源:eefocus
传统的频率测量方法在实际应用中有较大的局限性,基于传统测频原理的频率计的测量精度将随被测信号频率的变化而变化,传统的直接测频法其测量精度将随被测信号频率的降低而降低,测周法的测量精度将随被测信号频率的升高而降低。本文中提出一种基于ARM与CPLD宽频带的数字频率计的设计,以微控器STM32作为核心控制芯片,利用CPLD可编程逻辑器件,实现闸门测量技术的等精度测频。
本设计的技术指标:
测频范围:1Hz~200MHz,分辨率为0.1Hz,测频相对误差百万分之一。
周期测量:信号测量范围与精度要求与测频功能相同。
占空比测量:准确度99%。
计数范围:0~1000000000,可手动暂停、复位。
功耗大小:5V×250mA= 1.25W。
等精度测频原理
常用的直接测频方法主要有测频法和测周期法两种。测频法就是在确定的闸门时间Tw内,记录被测信号的变化周期数(或脉冲个数)Nx,则被测信号的频率为:fx=Nx/Tw。测周期法需要有标准信号的频率fs,在待测信号的一个周期Tx内,记录标准频率的周期数Ns,则被测信号的频率为:fx=fs/Ns。这两种方法的计数值会产生±1个字误差,并且测试精度与计数器中记录的数值Nx或Ns有关。为了保证测试精度,一般对于低频信号采用测周期法,对于高频信号采用测频法。但由于测试时很不方便,又提出了等精度测频方法。等精度测频方法是在直接测频方法的基础上发展起来的,它的闸门时间不是固定值,而是被测信号周期的整数倍,即与被测信号同步。等精度测频系统的控制时序图如图1所示。

图1 等精度测频系统的控制时序图
在测量过程中,有两个计数器分别对标准信号和被测信号同时计数。首先给出闸门开启信号(预置闸门上升沿),此时计数器并不开始计数,而是等到被测信号的上升沿到来时,计数器才真正开始计数。然后,预置闸门关闭信号(下降沿)到来时,计数器并不立即停止计数,而是等到被测号的上升沿到来时才结束计数,完成一次测量过程。可以看出,实际闸门时间r与预置闸门时间r1并不严格相等,但差值不超过被测信号的一个周期。设在一次实际闸门时间r中,计数器对被测信号的计数值为Nx,对标准信号的计数值为Ns,标准信号的频率为fs,则被测信号的频率如式(1)所示。

被测信号的频率
图2为等精度测频逻辑框图,CNT1和CNT2是两个可控计数器,标准频率信号fs信号从CNT1的时钟输入端CLK输入,经整形后的被测信号fx从CNT2的时钟输入端CLK输入。每个计数器中的CEN输入端为时钟使能端,控制时钟输入。当预置门信号为高电平(预置时间开始)时,被测信号的上升沿通过D触发器的输出端,同时启动两个计数器计数;同样,当预置门信号为低电平(预置时间结束)时,被测信号的上升沿通过D触发器的输出端,同时关闭计数器的计数。

图2 等精度测频逻辑框图
系统硬件设计
使用ST公司的32bit处理器STM32F103C8作为主控芯片与高可靠性的可编程逻辑器件EPM240T100C5结合设计成频率计。
STM32F103C8的功能特点如下:(1) 最高频率可达72MHz,自带128/64KB的FLASH,1.25DMIPS/MHz,可以访问0等待周期的存储器。(2)供电电压范围为2.0~3.6V了,内嵌8MHz高速晶体振荡器,也可外部时钟供给,本系统采用CPLD时钟分频供给。(3)下载模式可采用串行线调试(SWD)接口和JTAG接口,本系统采用JTAG下载接口。
EPM240T100C5的功能特点如下:(1)支持内部时钟频率300MHz,本系统使用有源晶振50MHz供给。(2)片内电压调整器支持3.3V、2.5V或1.8V电源输入,本系统使用3.3V电压供给。(3)下载模式使用10针JTAG接口。
1 系统硬件结构框图
系统通过对STM32F103C8微控器的控制,经SPI总线向CPLD芯片EPM240T100发送数据和命令来控制内部逻辑单元。EPM240T100使用外部有源晶振50MHz供给,经4分频12.5MHz作为CPU的输入时钟。该系统的硬件结构如图3所示。其包括主控芯片模块、JTAG下载模块、复位电路模块、上位机显示模块、被测量输入模块。

图3 系统框图
2 系统的数字电路设计
微控器原理如图4所示。本系统处理器使用STM2F103C8,时钟由CPLD分频供给CPU,通过SPI方式将数据和命令传送给CPLD,而后用串口RS232发送到上位机显示

图4 微控器原理图
史海拾趣
|
没法贴,在这里口述一下, STC11F02E单片机(和51兼容),用P1_0脚输出,后接10K电阻,在后面是三极管3904(反向用)的基极,在后面接在RK1-L2-3V的一个控制脚上(set), 现在我想问的是我单片机输出高电平为什么只有0.7V左右,如果把电阻去掉就 ...… 查看全部问答> |
|
最近在编一个数字解调器,要用到数字低通滤波器,我找了一个核,但是在使用MegaWizard plug进行设置之后,元件的图形发生了变化,就是16个输入在图形上只显示了4个,中间的12个都用省略号代替了。不知道有没有人遇到过类似的情况没啊?我Google找过 ...… 查看全部问答> |
|
大家好。 我现在在开发一个SDIO设备,想实现为一个SDIO设备,而不是SD memory。 当我把它插到运行Windows XP的PC上时,Windows把它认成了一个磁盘。当我 试图查看该磁盘的属性时,没有任何属性显示出来。 我猜想应该是设备的硬件或者固件有问题 ...… 查看全部问答> |
|
STM32的CAN通信时,RX方没有接收到数据,TX端却显示数据发送 在调试CAN通信,发现出现一个问题,详细描述如下为了调试方便,我把CAN总线上的节点简化到只有2个节点,一个收一个发。(1)当接收端滤波器设置为全接收,则可以接收到发送端数据,发送端显示发送成功。(2)当接收端滤波器设置了过滤条件,则 ...… 查看全部问答> |
|
本人想用MSP430F149的SPI方式驱动74HC595,SPI方式中只能提供一个UCLK时钟信号,但74HC595要求有两个时钟信号:移位时钟和存储时钟,而且这两个时钟不能并联,最好移位时钟超前存储时钟一个时钟周期。请问各位大侠,此问题该如何解决?谢谢!!… 查看全部问答> |
|
使用 stvd 实验 uart1 时 出现下面的错误 #error cgstm8 stm8s_clk.c:685 CLK_GetFlagStatus() PANIC! GENPUSH… 查看全部问答> |
|
#include #include Uint16 sendchar; Uint16 recechar; void sci_init() { EALLOW; GpioCtrlRegs.GPAMUX2.bit.GPIO28=1; GpioCtrlRegs.GPAMUX2.bit.GPIO29=1;//设置GPIO28/29为通信端口 EDIS; ...… 查看全部问答> |




