英创信息技术主板EM9160测频功能的使用介绍

网友投稿 272 2022-11-04

英创信息技术主板EM9160测频功能的使用介绍

本文主要介绍采用EM9160实现对外部信号实时频率测量的使用方法。EM9160可支持最多2路外部输入信号的频率测量。由于该功能是针对客户的需求新近开发的,客户在使用该功能时需遵循以下方法:

1. 硬件方面,被测频率信号需整形为标准的 3.3V TTL电平信号,信号接入管脚为CN1.25#,即COM4口的RXD4管脚;若需要测试2路,则第2路信号可接到CN1.26#,即COM4口的TXD4管脚。这意味着若要使用测频功能,COM4口就不能再用。输入脉冲的下降沿被作为一个周期的开始。

3. 软件方面,应用程序打开驱动程序“FRQ1:”,通过DevIoControl设置测频的采样间隔并启动测量过程(命令码为IOCTL_FRQ_START)。然后通过标准的read函数读取测量的频率值序列。应用程序也可以用DevIoControl来关闭测频的功能(命令码为IOCTL_FRQ_STOP)。

5. 应用程序需要使用以下数据结构来读取测量的频率数据:

6. 注意,在双通道测量中,由于是在同一采样间隔进行的测量,两个通道的频率不能相差太大,否则可能会影响低频通道的测量精度。

以下是典型的应用程序代码:

1. 打开驱动程序

2. 设置采样间隔并启动频率测量

FREQ_SETUP SetupPar; SetupPar.dwCh2Enable = 1; // 使能通道2 SetupPar. dwMillisecondPerSample = 10; // 设置采样间隔为10ms if (!DeviceIoControl (hFREQ, IOCTL_FRQ_START, &SetupPar, sizeof(FREQ_SETUP), // 输入参数 NULL, 0,// 无输出参数 NULL, // 无返回值 NULL )) { // 出错处理。。。 }

3. 读取测量数据,一次可读取多个数据点

FREQ_DATA FreqDatBuf[100]; // 最长一次读取100个点 DWORD dwActualLen = 0; if(!ReadFile(hFREQ, FreqDatBuf, // 数据缓冲区 100*sizeof(FREQ_DATA), // 缓冲区大小,字节为单位 &dwActualLen, // 实际读取的数据长度,字节为单位 0 ) { // 出错处理。。。 } // 实际读取到的频率值数量为: DWORD dwReturnNumData = dwActualLen / sizeof(FREQ_DATA);

4. 停止频率测量

if (!DeviceIoControl (hFREQ, IOCTL_FRQ_STOP, NULL, 0, // 无输入参数 NULL, 0, // 无输出参数 NULL, // 无返回值 NULL )) { // 出错处理。。。 }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux文本处理三剑客之awk报告生成器
下一篇:java 实现获取指定位置后的第一个数字
相关文章

 发表评论

暂时没有评论,来抢沙发吧~