网址:http://digital.ni.com/public.nsf/allkb/A7AABC612F99CB82862574F000326EA5
问题:
我使用一块M系列的板卡来采集和产生数字信号,我知道这个板卡没有板载定时引擎,因此我必须使用其它的时钟源作为该板卡的硬件定时源,我有哪些选择来定时数字IO?
解答:
使用如下的选择来实现M系列板卡的数字IO硬件定时。
注意:不要超过板卡规格书上标示的最大数字定时采样时钟频率。这是本板卡能支持的最大时钟速率。如果超过该值将会导致软件错误,但是这将导致欠采样现象发生。
- 使用板载的一个定时器产生采样时钟来作为硬件定时采样时钟。需要遵循以下几步。
- 针对数字输入输出任务,创建一个定时器任务产生一个固定频率的数字脉冲。
- 创建一个数字输入或者输出任务,并且指定其采样时钟源为内部定时器输出,该输出为定时器任务配置的脉冲输出。
- 开始数字输入和输出任务。
- 当准备进行数字输入输出的时候开始定时器任务.
这儿有两个范例程序说明了这个应用方法。
NI Developer Zone Example: M Series Correlated Digital Input with Counter Clock Generation in ANSI C
NI Developer Zone Example: M Series Hardware-Timed DIO with Counter Clock Generation
- 使用一个外部采样时钟作为采样时钟。 为了完成这个操作,你需要准备一个能够作为数字输入输出定时信号源,并记住其最大的频率不能超过1MHZ,外部时钟信号能够通过以下几个引脚连接进来。
- PFI <0..15>
- RTSI <0..7>
- PXI_STAR
- Analog Comparison Event (an analog trigger)
- 使用模拟输入采样时钟,模拟输入转换时钟或者模拟输出采样时钟作为数字任务的定时源。 这是一个同步模拟IO操作和数字IO操作的很好的方法,特别是当板卡中的模拟输入和模拟输出通道不被使用的情形下。记住当使用这种方法的时候,数字任务和模拟任务使用的采样时钟一样,以下步骤说明了如何使用该方法。
- 配置一个模拟输入和模拟输出任务,设置其定时参数,设置其采样率和数字定时时钟频率一样,即便你不使用模拟任务,你也必须创建这样的一个“虚假任务”。
- 配置一个数字输入和输出任务,指定其的定时时钟为ai/SampleClock,ai/ConvertClock, 或者ao/SampleClock。
- 开始数字输入或者输出任务。
- 开始模拟输入或者模拟输出任务,开始该任务将会开始数字任务的采样时钟产生。
以下有三个范例来说明这种应用
NI Developer Zone Example: M Series: Correlated Digital Output with Analog Output Sample Clock
NI Developer Zone Example: M Series Correlated Digital Input with Analog Input Sample Clock in ANSI C
NI Developer Zone Example: Performing Correlated Digital IO with an M Series Device in LabVIEW
- 使用板载的时钟发生器来提供数字任务的采样时钟。 每个M系列板卡具有一个板载的时钟产生器,其通过对10MHZ或者100KHZ的板载时基进行分频能够产生数字脉冲,分频的因子为1.2.....16。使用板载时钟生成器限制了数字任务的频率,但是当你没有外部时钟源以及定时器和模拟输入输出采样时钟都作为独立的任务的时候,这是一个好的选择,请参着以下步骤进行。
- 创建一个定时器任务来产生一个数字脉冲,其频率为时钟产生器分频后的值。
- 指定定时器输出为<NI-DAQmx Device Name>/freqout.
- 创建一个数字输入输出任务,将其采样时钟设置<NI-DAQmx Device Name>/FrequencyOutput.
- 开始数字输入或者输出任务。
- 当准备进行数字采集和产生的时候开始频率输出任务。
获得更多的关于频率生成器的信息,请参考M系列板卡手册第7-23页,有关范例请参考如下链接。
NI Developer Zone Example: Programming the FREQ_OUT Pin with NI-DAQmx for M Series
- 使用信号改变探测来定时数字任务。 改变探测是一种硬件操作,它通过判断一个或者多个数字输入通道的改变来触发整个数字任务的硬件采集。 改变探测是一个闸门操作,即由硬件(时钟或者握手信号)控制,当信号改变发生后,数据被锁存到硬件缓存中,然后通过DMA或者中断的方式将PC存储器中的数据传输到硬件板卡上,改变探测反应十分快,常用于检测数字线路的电平改变,而用不着使用软件定时查询的方法。该部分内容介绍参看M系列板卡使用手册的6-8页,更多的信息,请参考如下链接。
NI Developer Zone Tutorial: Digital Change Detection in NI-DAQmx
NI Developer Zone Example: NI-DAQmx Events: M Series Change Detection
- 使用定时IO替代数字来产生脉冲串或者测量数字信号的频率。 获得更多信息,参考如下资源。
NI Developer Zone Tutorial: Generating a Pulse Train with a Counter
NI Developer Zone Tutorial: Period Measurement with a Counter
NI Developer Zone Example: NI-DAQmx: Frequency Measurements Using Counters
NI Developer Zone Example: NI-DAQmx: Continuously Measure Counter Frequency (Buffered-Large Range)
NI Developer Zone Example: Measure High Frequency 2 Counter Method