c语言sscanf函数的用法是什么
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~