概述
WaveForms 提供了一个接口,允许用户与 Digilent Analog Design 硬件进行交互,例如 Analog DiscoveryTM、Analog Discovery 2TM、Analog Discovery ProTM、Digital DiscoveryTM、Discovery Power SupplyTM 和 Electronics ExplorerTM。虽然 WaveForms 应用程序提供优化的图形界面,但 WaveForms SDK 提供对公共应用程序编程接口 (API) 的访问,使用户能够创建自定义 PC 应用程序。
本 WaveForms SDK 手册描述了 WaveForms 系统的主要组件和架构,并详细介绍了 WaveForms API 中包含的每个功能。SDK 软件包还提供了演示如何识别、连接和控制模拟硬件设备的示例。
1 系统
WaveForms 系统由多个组件组成。最明显的组件是 WaveForms 应用程序;一套图形仪表板,可完全访问连接硬件中的模拟和数字仪器。WaveForms 应用程序使用 WaveForms Runtime 与设备进行通信。
对于自定义应用程序,仅访问 WaveForms Runtime就足够了,但目标计算机上需要这两个运行时才能运行应用程序。
WaveForms Runtime 由 DWF 动态库和多个配置文件组成。该库位于:
• 系统目录中的 Windows:C: \Windows\System32\dwf.dll
• Linux:/usr/lib/libdwf.so.x.x。
静态库位于 Windows 中,通过安装路径:
• Windows 32 位:C:\Program Files (x86)\Digilent\WaveFormsSDK\lib\x86
• Windows 64 位:C:\Program Files (x86)\Digilent\WaveFormsSDK\lib\x64
• Windows ARM64:C:\Program Files (x86)\Digilent\WaveFormsSDK\lib\arm64
• Windows ARM64EC:C:\Program Files (x86)\Digilent\WaveFormsSDK\lib\arm64ec
C 头文件位于:
• Windows 32 位:C:\Program Files\Digilent\WaveFormsSDK\inc
• Windows 64 位:C:\Program Files (x86)\Digilent\WaveFormsSDK\inc
• Linux:/usr/include/digilent/waveforms
SDK 提供了工作代码示例,以演示每个 API 函数集的基本用法。您可以在安装目录中找到示例,这些目录位于以下位置:
• Windows 32 位:C:\Program Files\Digilent\WaveFormsSDK\samples
• Windows 64 位:C:\Program Files (x86)\Digilent\WaveFormsSDK\samples
• Linux:/usr/share/digilent/waveforms/samples
• OS X:/Applications/WaveForms.app/Contents/Resources/SDK/
DWF 库使用 Digilent Adept Runtime,它提供与目标硬件仪器(即 Analog Discovery 和 Electronics Explorer)的基本通信。尽管 Adept Runtime 是 WaveForms 系统不可或缺的一部分,但编写自定义应用程序并不需要了解其结构。
在 Mac OS X 上,WaveForms Runtime(包括 Adept Runtime)安装到:
• /Library/Frameworks/dwf.framework
示例路径包含以下目录:
• py:几个 Python 脚本示例
• C:一些 C 代码示例
• cs:C# 包装器,用于 API 函数的 dwf 类
• vb:VisualBasic 包装器,用于 API 函数的 dwf 模块
• dwfcmd:复杂的 C 示例应用程序
1.1 API
编写自定义应用程序所需的一切都包含在 WaveForms SDK 中,它提供了访问 DWF 库 API 的头/库文件和文档。自定义应用程序必须正确链接到这些文件才能进行适当的 API 函数调用。WaveForms 公共 API 中的每个函数都在 dwf.h 头文件中声明
WaveForms API 的基本用法可以分解为以下步骤:
1. 调用枚举函数enumeration functions以发现连接的硬件设备。
2. 调用 FDwfDeviceOpen 函数以建立与特定硬件设备的连接。
3. 调用功能在硬件设备内启用仪器。
4. 调用函数来配置仪器和采集/生成信号。
5. 调用功能禁用仪器。
6. 调用 FDwfDeviceClose 函数以断开与设备的连接。
API 函数主要有 9 组,每组都以不同的前缀命名
API 函数的主要组 | 仪器功能 | 前缀 |
---|---|---|
设备枚举Device Enumeration | 控制已连接设备和支持设备的枚举。 | DwfEnum |
设备控制Device Control | 控制打开和关闭特定设备。 | DwfDevice |
AnalogIn(示波器) | 同步从每个启用的通道采集样本。 | DwfAnalogIn |
AnalogOut(任意波形发生器) | 独立驱动来自每个通道的信号。 | DwfAnalogOut |
模拟IO | 采集和驱动各种模拟信号 | DwfAnalogIO |
DigitalIn(逻辑分析仪Logic Analyzer) | 从数字 I/O 引脚采集样本。 | DwfDigitalIn |
DigitalOut(模式发生器) | 驱动数字 I/O 信号。 | DwfDigitalOut |
数字IO | 采集和驱动数字 I/O 信号。 | DwfDigitalIO |
系统 | 获取独立于仪器和设备的基本系统信息 | DwfGet |
每
每台仪器都使用 API 中的三种类型的功能直接控制:
API 函数 | 仪器功能 | 例 |
---|---|---|
复位功能 | 此函数将所有仪器参数重置为默认值。 | FDwfAnalogInReset FDwfAnalogOutReset FDwfDigitalIOReset |
配置功能 | 此功能配置和/或启动仪器。 | FDwfAnalogInConfigure FDwfAnalogOutConfigure FDwfDigitalIOConfigure |
状态功能 | 此函数轮询并读取仪器中的所有信息。 | FDwfAnalogInStatus FDwfAnalogOutStatus FDwfDigitalIOStatus |
注意:尽管每种仪器都有多个“状态”功能,但这些功能是唯一实际从设备读取数据的功能。
dwf.h include 文件中有多个类型定义和相应的常量。它们中的大多数用作参数。打开硬件设备时,将返回一个句柄 (HDWF),该句柄用于访问并最终关闭所有仪器 API 函数。
以下示例以 Python 和 C++ 语言提供。
文件 | |
---|---|
Device_Enumeration | 列出支持和连接的设备。 |
AnalogIO_AnalogDiscovery_SystemMonitor | 读取系统监控信息 |
DigitalIO | 驱动和读取数字 IO 引脚 |
DigitalOut_Pins | 在数字输出引脚上生成脉冲、随机和自定义信号。 |
DigitalOut_BinaryCounter | 生成二进制计数器 |
DigitalIn_Acquisition | 在数字输出时生成信号,在数字输入时进行采集。 |
DigitalIn_Record | 对样品中的大量数字进行记录 |
要编译 c/cpp 应用程序并将其链接到 dwf 库,请使用:
窗口:gcc device_enumeration.cpp -L../../lib/x86 -ldwf
Linux:gcc device_enumeration.cpp -ldwf
MacOS:gcc device_enumeration.cpp -F /Library/Frameworks -framework dwf
iinstall_name_tool -add_rpath /Library/Frameworks a.out
或add dwf.framework to your app bundle/Frameworks
1.2 调用 API 函数
API 函数是 C 样式,返回一个整数值:如果调用成功,则返回 1,如果不成功,则返回 0。可以使用 FDwfGetLastError 和 FDwfGetLastErrorMsg 函数获取有关失败的详细信息。通常,API 函数包含以下参数的变体:
参数函数 | |
---|---|
*Info | 返回有关仪器参数支持的详细信息(即最小值/最大值、支持的模式等) |
*Set | 设置仪器参数。启用自动配置(默认情况下)后,仪器将重新配置并停止。 |
*Get | 获取实际的仪器参数。使用此函数获取实际设置值。例如,设置任意电压失调,Get 返回实际 DAC 输出值。 |
*Status | 从设备返回参数值。 |
当参数指针为 NULL 或设置 (*Set) 参数值超出限制时,API 函数不会失败。若要验证实际设置值,请使用 *Get API 返回实际值。
函数参数中使用的索引从零开始。支持的离散参数以位字段值检索。
若要对设备的功能进行解码,请使用 IsBitSet 宏
int fsfilter;
FDwfAnalogInChannelFilterInfo(h, &fsfilter)
if(IsBitSet(fsfilter, filterAverage)){
FDwfAnalogInChannelFilterSet(hdwf, 0, filterAverage)
}
为了获得更好的性能,建议在打开设备后禁用自动配置。这将阻止每个 FDwf*Set 调用与设备通信,这可能需要相当长的时间。
FDwfDeviceAutoConfigureSet(hdwf, 0)
有关最终错误的详细信息可以如下所示:
bool myFunction(){
if(!FDwf…(…)) return false
if(!FDwf…(…)) return false
…
return true
}
if(!myFunction()){
char szError[512]
FDwfGetLastErrorMsg(szError)
print(szError)
}
2 系统
2.1 FDwfGetLastError
FDwfGetLastError(DWFERC *pdwferc)
2.1.1 说明
检索调用过程中的最后一个错误代码。调用其他 API 函数时会清除错误代码,并且仅在 API 函数在执行过程中失败时设置错误代码。错误代码在 dwf.h 中声明:
参数:
- pdwferc – 接收错误 cod 的变量
2.2 FDwfGetLastErrorMsg
FDwfGetLastErrorMsg(char szError[512])
说明:检索最后一条错误消息。这可能由一串消息组成,这些消息由换行符分隔,用于描述导致故障的事件。
参数:
- szError – 指向缓冲区的指针以接收错误字符串。
2.3 FDwfGetVersion
FDwfGetVersion(char szVersion[32])
说明:检索版本字符串。版本字符串由主要版本号、次要版本号和内部版本号(即“2.0.19”)组成。
参数:
- szVersion – 指向缓冲区的指针以接收版本字符串。
2.4 FDwfParamSet
FDwfParamSet(DwfParam param, int value)
描述:配置将应用于新打开的设备的各种全局参数
参数:
- param – 指向缓冲区的指针以接收版本字符串。
- value – 要设置的值。
2.5 FDwfParamGet
FDwfParamGet(DwfParam param, int *pValue)
描述:检索参数值。
参数:
- param – 参数。
- pValue – 指向值的指针。
3 设备枚举
FDwfEnum 函数用于发现所有连接的兼容设备。
请参阅示例:Device_Enumeration.py、Device_Info.py、Device_InfoEx.py。
3.1 FDwfEnum
FDwfEnum(ENUMFILTER enumfilter, int *pnDevice)
3.1.1 说明
生成按 enumfilter 参数筛选的检测到的设备的内部列表。在使用其他 FDwfEnum 函数之前,必须调用它,因为它们从设备索引标识的此列表中获取有关枚举设备的信息。
# device ID
devidEExplorer = c_int(1)
devidDiscovery = c_int(2)
devidDiscovery2 = c_int(3)
devidDDiscovery = c_int(4)
devidADP3X50 = c_int(6)
devidADP5250 = c_int(8)
devidDPS3340 = c_int(9)
ENUMFILTER枚举过滤器 | int | |
---|---|---|
enumfilterAll | 0 | 枚举所有受支持的设备 |
DEVID | devid | 使用 devid 过滤特定设备 |
enumfilterType | 0x8000000 | 与以下过滤器结合使用 |
enumfilterUSB | 0x0000001 | USB 设备 |
enumfilterNetwork | 0x0000002 | 网络设备 |
enumfilterAXI | 0x0000004 | 嵌入式设备 |
enumfilterRemote | 0x1000000 | 远程表设备 |
enumfilterAudio | 0x2000000 | 声卡设备 |
enumfilterDemo | 0x4000000 | 演示设备 |
# device enumeration filters
enumfilterAll = c_int(0)
enumfilterType = c_int(0x8000000)
enumfilterUSB = c_int(0x0000001)
enumfilterNetwork = c_int(0x0000002)
enumfilterAXI = c_int(0x0000004)
enumfilterRemote = c_int(0x1000000)
enumfilterAudio = c_int(0x2000000)
enumfilterDemo = c_int(0x4000000)
3.1.2 参数
- enumfilter – 用于设备枚举的筛选器值。使用 enumfilterAll 常量发现所有兼容设备或“enumfilterType|enumfilterUSB“
- pnDevice – 整数指针,用于按引用返回找到的设备的计数。
3.1.3 示例
- FDwfEnum(enumfilterAll, &nDev) # 列出所有设备
- FDwfEnum(devidDiscovery3, &nDev) # 列出 Analog Discovery 3 设备
- FDwfEnum(enumfilterType|enumfilterUSB|enumfilterAXI, &nDev) # 列出 USB 和 AXI 设备
3.2 FDwfEnumStart
FDwfEnumStart(ENUMFILTER enumfilter)
说明:开始枚举设备。FDwfEnum 的非阻塞替代方案。
参数: - enumfilter – 用于设备枚举的筛选器值。使用 enumfilterAll 常量可发现所有兼容设备。
3.3 FDwfEnumStop
FDwfEnumStop(int *pnDevice)
说明:停止枚举并转动检测到的设备数。在 FDwfEnumStart 之后调用此函数。
参数:
- pnDevice – 整数指针,用于按引用返回找到的设备的计数
3.4 FDwfEnumDeviceType
FDwfEnumDeviceType(int idxDevice, DEVID *pDeviceId, DEVVER *pDeviceRevision)
说明:返回设备 ID 和版本 ID。
参数:
- idxDevice – 要返回其类型和修订版本的枚举设备的从零开始的索引。
- pDeviceId – 返回设备 ID 的变量。
- pDeviceRevision – 指向 DEVVER 实例的指针,用于通过引用返回设备修订。
3.5 FDwfEnumDeviceIsOpened
FDwfEnumDeviceIsOpened(int idxDevice, int *pfIsUsed)
说明:检索一个布尔值,该布尔值指定设备是否已由此进程或任何其他进程打开。
参数: - idxDevice – 枚举设备的索引。- pfIsUsed – 指向变量的指针,用于接收指示设备是否正在使用的布尔值。
3.6 FDwfEnumUserName
FDwfEnumUserName(int idxDevice, char szUserName[32]) 说明:检索枚举设备的用户名。
3.6.1 参数
- idxDevice – 枚举设备的索引。
- szUserName – 指向字符数组的指针,以通过引用返回用户名字符串。
3.7 FDwfEnumDeviceName
FDwfEnumDeviceName(int idxDevice, char szDeviceName[32])
3.7.1 说明
检索枚举设备的设备名称。
3.7.2 参数
- idxDevice – 枚举设备的索引。
- szDeviceName – 指向字符数组的指针,以通过引用返回设备名称。
3.8 FDwfEnumSN
FDwfEnumSN(int idxDevice, char szSN[32])
3.8.1 说明
检索枚举设备的 12 位唯一序列号。
3.8.2 参数
- idxDevice – 枚举设备的索引。- szSN – 指向字符数组的指针,用于通过引用返回序列号
3.9 FDwfEnumConfig
FDwfEnumConfig(int idxDevice, int *pcConfig)
3.9.1 说明
为所选设备生成检测到的配置的内部列表。在使用其他 FDwfEnumConfigInfo 函数之前,必须调用上述函数,因为这会从配置索引标识的此列表中获取有关配置的信息。
3.9.2 参数
- idxDevice – 枚举设备的索引。
- pcConfig – 整数指针,用于按引用返回找到的配置的计数.
3.10 FDwfEnumConfigInfo
FDwfEnumConfigInfo(int idxConfig, DwfEnumConfigInfo info, int *pValue)
说明:返回有关配置的信息。这些用于在打开设备之前提供初步信息。有关各种 FDwf#Info 函数的更多信息。
参数: - idxConfig – 要返回信息的配置索引。- info – 信息类型。- pValue – 整数指针,用于按引用返回所选信息类型。
4 设备控制
请参阅Device_Synchronization.py示例。
4.1 FDwfDeviceOpen
FDwfDeviceOpen(int idxDevice, HDWF *phdwf)
说明:
打开枚举索引标识的设备并检索句柄。若要自动枚举所有连接的设备并打开第一个发现的设备,请使用索引 -1。
参数:
idxDevice – 枚举设备的从零开始的索引。
phdwf – 指向 HDWF 变量的指针,用于通过引用接收打开的接口句柄.
4.2 FDwfDeviceConfigOpen
FDwfDeviceConfigOpen(int idxDevice, int idxCfg, HDWF *phdwf)
说明:使用所选配置打开由枚举索引标识的设备,并检索句柄。
参数:
idxDevice – 枚举设备的索引。
idxCfg – 设备配置的索引。
phdwf – 指向 HDWF 变量的指针,用于通过引用接收打开的接口句柄.
4.3 FDwfDeviceOpenEx
FDwfDeviceOpenEx (const char *szOpt, HDWF *phdwf)
说明:打开设备并检索句柄。
参数: - szOpt – 用换行符分隔的选项,如“index:0nconfig:1”。- phdwf – 指向 HDWF 变量的指针,用于通过引用接收打开的接口句柄.
4.4 FDwfDeviceClose
FDwfDeviceClose (HDWF hdwf)
说明:当不再需要访问设备时关闭接口句柄。返回上述功能后,无法再使用指定的接口句柄访问设备。
参数: - hdwf – 要关闭的接口句柄。
4.5 FDwfDeviceCloseAll
FDwfDeviceCloseAll()
说明:通过调用过程关闭所有打开的设备。它不会关闭所有进程中的所有设备。
参数:无。
4.6 FDwfDeviceEnableSet
FDwfDeviceEnableSet (HDWF hdwf, int fEnable)
说明:启用(默认)或禁用设备输出。
参数: - hdwf – 要关闭的接口句柄。- fEnable – 将 TRUE 设置为启用,将 FALSE 设置为禁用。
4.7 FDwfDeviceAutoConfigureSet
FDwfDeviceAutoConfigureSet (HDWF hdwf, int fAutoConfigure) 说明:启用或禁用特定设备的自动配置设置。启用此设置后,每次设置仪器参数时都会自动配置设备。例如,启用 AutoConfigure 后,不需要在 FDwfAnalogOutRunSet 之后调用 FDwfAnalogOutConfigure。这会增加每个 Set 函数的延迟;延迟与之后直接调用相应的 Configure 函数一样多。当值为 3 时,模拟输出配置将动态应用,而无需停止仪器。
参数:
- hdwf – 接口句柄。
- fAutoConfigure– 此选项的值:0 禁用、1 启用、3 动态
4.8 FDwfDeviceAutoConfigureGet
FDwfDeviceAutoConfigureGet (HDWF hdwf, int *pfAutoConfigure)
说明:返回设备中的自动配置设置。有关此设置的详细信息,请参阅 FDwfDeviceAutoConfigureSet 的函数说明。参数: - hdwf – 接口句柄。- pfAutoConfigure – 指向变量的指针以接收此选项的当前值。
4.9 FDwfDeviceReset
FDwfDeviceReset(HDWF hdwf) 说明:重置所有设备和仪器参数并将其配置(默认情况下,启用自动配置)为默认值。参数: - hdwf – 接口句柄
4.10 FDwfDeviceParamSet
FDwfDeviceParamSet (HDWF hdwf, DwfParam param, int value) 描述:为相应设备配置各种参数。参数: - param – 指向缓冲区的指针以接收版本字符串。- value – 要设置的值
4.11 FDwfDeviceParamGet
FDwfDeviceParamGet (HDWF hdwf, DwfParam param, int *pValue) 说明:检索参数值。参数: - param – 参数。- pValue – 指向值的指针。
全局触发总线允许多个仪器相互触发。这些触发源选项包括:
TRIGSRC | BYTE | |
---|---|---|
5.2 配置
5.2.1 FDwfAnalogInFrequencyInfo
FDwfAnalogInFrequencyInfo (HDWF hdwf, double *phzMin, double *phzMax)
描述: 检索最小和最大(ADC 频率)可设置的采样频率。
参数: - hdwf – 接口句柄。- phzMin – 返回最小允许频率的指针.- phzMax – 返回最大允许频率的指针.
5.2.2 FDwfAnalogInFrequencySet
FDwfAnalogInFrequencySet(HDWF hdwf, double hzFrequency)
描述: 设置仪器的采样频率。
参数: - hdwf – 接口句柄。- hzFrequency – 要设置的采集频率。
5.2.3 FDwfAnalogInFrequencyGet
FDwfAnalogInFrequencyGet (HDWF hdwf, double *phzFrequency)
说明:读取配置的采样频率。AnalogIn ADC始终以最大频率运行,但可以使用FDwfAnalogInChannelFilterSet功能为每个通道单独配置存储样本的方法。
参数: - hdwf – 接口句柄。- phzFrequency – 接收采集频率的变量
5.2.4 FDwfAnalogInBitsInfo
FDwfAnalogInBitsInfo(HDWF hdwf, int *pnBits)
描述:检索AnalogIn ADC使用的位数。
参数: - hdwf – 接口句柄。- pnBits – 用于接收ADC位数的变量。
5.2.5 FDwfAnalogInBufferSizeInfo
FDwfAnalogInBufferSizeInfo(HDWF hdwf, int *pnSizeMin, int *pnSizeMax)
说明:返回仪器的最小和最大允许缓冲区大小。
参数: - hdwf – 接口句柄。- pnMin – 返回最小缓冲区大小的指针.- pnMax – 返回最大缓冲区大小的指针.
5.2.6 FDwfAnalogInBufferSizeSet
FDwfAnalogInBufferSizeSet (HDWF hdwf, int nSize)
说明: 调整 AnalogIn 仪器缓冲区大小。
参数: - hdwf – 接口句柄。- nSize – 要设置的缓冲区大小。
FDwfAnalogInBufferSizeGet (HDWF hdwf, int *pnSize) 说明:返回使用的 AnalogIn 仪器缓冲区大小。参数: - hdwf – 接口句柄。- pnSize – 用于接收当前缓冲区大小的变量。
5.2.11 FDwfAnalogInAcquisitionModeInfo
FDwfAnalogInAcquisitionModeInfo(HDWF hdwf, int *pfsacqmode)
描述:返回支持的 AnalogIn 采集模式。它们作为位字段返回(通过引用)。可以使用 IsBitSet 宏分析此位字段。使用 dwf.h 中的 ACQMODE 常量定义各个位。采集模式选择以下模式之一,即 ACQMODE:
ACQMODE模式 | int | 恒定的能力 |
---|---|---|
acqmodeSingle | 0 | 执行单个缓冲区采集,并在使用 FDwfAnalogInStatus 或 FDwfDigitalInStatus 函数将数据提取到主机后重新武装仪器以进行下一次捕获。这是默认设置。 |
acqmodeScanShift | 1 | 以 FIFO 样式执行连续采集。触发器设置将被忽略。最后一个示例位于缓冲区的末尾。 The FDwfAnalog|DigitalInStatusSamplesValid 函数用于显示采集的样本数,该样本数将一直增长,直到达到 BufferSize。 然后,每个新样本的波形“图片”都会发生偏移。 |
acqmodeScanScreen | 2 | 执行连续采集,循环将样品写入缓冲液。触发器设置将被忽略。IndexWrite 显示缓冲区写入位置。这类似于心脏监护仪显示器。 |
acqmodeRecord | 3 | 通过将数据流式传输到主机来执行记录采集。 |
acqmodeOvers | 4 | 对于ADP3000器件系列,相对于其他乐器(模拟输出、数字输入/输出),连续捕获在四个阶段中移动,或者它与 acqmoeSingle 相同。 |
acqmodeSingle1 | 5 | 在不重新武装仪器的情况下执行单个缓冲液采集。 |
参数:
- hdwf – 接口句柄。
- pfsacqmode – 返回支持的采集模式的指针.
6.3 状态
请参阅 FDwfDeviceTriggerInfo 的说明。
6.3.1 FDwfAnalogOutTriggerSourceSet
FDwfAnalogOutTriggerSourceSet(HDWF hdwf, int idxChannel, TRIGSRC trigsrc)
描述:设置仪器上通道的触发源。
参数: - hdwf – 设备上的开放接口句柄。- idxChannel – 通道索引。- trigsrc – 要设置的触发源。
6.3.2 FDwfAnalogOutTriggerSourceGet
FDwfAnalogOutTriggerSourceGet (HDWF hdwf, int idxChannel, TRIGSRC *ptrigsrc)
说明:获取仪器上通道的当前触发源设置。
参数: - hdwf – 设备上的开放接口句柄。- idxChannel – 通道索引。- ptrigsrc – 指向变量的指针以接收触发源.
FDwfAnalogOutTriggerSlopeSet( HDWF hdwf, int idxChannel, DwfTriggerSlope slope)
说明:设置仪器上通道的触发斜率。参数: - hdwf – 设备上的开放接口句柄。- idxChannel – 通道索引。- slope – 触发要设置的斜率。
9 Digital In(逻辑分析仪)
Digital In 仪器状态:
状态在 dwf.h DwfState 类型中定义
"""
// instrument states:
typedef unsigned char DwfState;
const DwfState DwfStateReady = 0;
const DwfState DwfStateConfig = 4;
const DwfState DwfStatePrefill = 5;
const DwfState DwfStateArmed = 1;
const DwfState DwfStateWait = 7;
const DwfState DwfStateTriggered = 3;
const DwfState DwfStateRunning = 3;
const DwfState DwfStateDone = 2;
const DwfState DwfStateNotDone = 6;
"""
- 仪器配置或设置
- 就绪Ready:初始状态。FDwfDigitalInConfigure 或任何 FDwfDigitalIn*Set 函数调用进入此状态后。使用 FDwfDigitalInConfigure,重新配置将进入“配置”状态。
- 配置:数字输入自动触发被重置。
- 预填充:在触发之前用所需的样品预填充缓冲液。
- 武装:等待触发。
- 运行中:对于single acquisition单次采集模式,保持此状态,以便在 FDwfDigitalInTriggerPositionSet 设置触发后采集样本。扫描屏幕和移位模式一直保持,直到配置或设置本仪器的任何功能。
- 完成Done:最终状态。
请参阅以下示例:DigitalIn_Acquisition/Record.py。
9.1 控制
9.1.1 FDwfDigitalInReset
FDwfDigitalInReset(HDWF hdwf)
说明:将所有 DigitalIn 仪器参数重置并配置(默认情况下,启用自动配置)为默认值。
参数:
hdwf – 接口句柄。
9.1.2 FDwfDigitalInConfigure
FDwfDigitalInConfigure(HDWF hdwf, int fReconfigure, int fStart)
描述:配置仪器并启动或停止采集。要重置自动触发超时,请将 fReconfigure 设置为 "true"
参数:
hdwf - 接口句柄。
fReconfigure - 配置设备。
fStart - 开始采集。
9.1.3 FDwfDigitalInStatus
FDwfDigitalInStatus(HDWF hdwf, int fReadData, DwfState *psts)
描述:检查仪器的状态。要从设备读取数据,将 fReadData 设为 TRUE。对于单次采集模式,只有在采集完成后才会读取数据。
参数:
hdwf - 接口句柄。
fReadData - 如果要读取数据,则设置为 TRUE。
psts - 用于接收采集状态的变量。
9.1.4 FDwfDigitalInStatusSamplesLeft
FDwfDigitalInStatusSamplesLeft(HDWF hdwf, int *pcSamplesLeft)
描述:读取采集过程中剩余的样本数。
参数:
hdwf - 接口句柄。
pcSamplesLeft - 用于接收剩余采集样本的变量。
9.1.5 FDwfDigitalInStatusSamplesValid
FDwfDigitalInStatusSamplesValid(HDWF hdwf, int *pcSamplesValid)
描述: 读取有效/已获取数据采样的数量。
参数:
hdwf - 接口句柄。
pcSamplesValid - 接收有效采样数量的变量。
9.1.6 FDwfDigitalInStatusIndexWrite
FDwfDigitalInStatusIndexWrite(HDWF hdwf, int *pidxWrite)
描述: 读取缓冲区写指针。在 ScanScreen 采集模式下需要使用该指针来显示扫描条。
参数:
hdwf - 接口句柄。
pidxWrite - 用于接收采集位置的变量。
9.1.7 FDwfDigitalInStatusAutoTriggered
FDwfDigitalInStatusAutoTriggered(HDWF hdwf, int *pfAuto)
描述:验证采集是否自动触发。
参数:
hdwf - 接口句柄。
pfAuto - 如果采集是自动触发的,则返回 "true"。
9.1.8 FDwfDigitalInStatusTime
FDwfDigitalInStatusTime(HDWF hdwf, unsigned int * psecUtc, unsigned int * ptick, unsigned int * pticksPerSecond)
描述: 检索仪器触发时间信息。With ADP3000 返回高精度设备计数值。这在器件之间无法精确同步,但可用于测量系统频率(如100或125MHz)的触发距离,分辨率为10或8ns。使用其他设备返回主机时间。
参数:
- hdwf – 接口句柄。
- psecUtc –自当地时区 Epoch 1970-01-01T00:00:00Z 以来经过的秒数。
- pTick – 自第二次计数以来的其他刻度,例如 0 到 999,999,999 或 124,999,999 - pticksPerSecond – 秒内的刻度数,如 100M 或 125M。
9.1.9 FDwfDigitalInStatusData
FDwfDigitalInStatusData(HDWF hdwf, void *rgData, int countOfDataBytes)
描述:从仪器获取数据样本。它将数据采样复制到提供的缓冲区中。采样格式由FDwfDigitalInSampleFormatSet 函数指定。
参数:hdwf - 接口句柄。
rgData - 分配用于复制采集数据的缓冲区指针。
countOfDataBytes - 要复制的字节数。
9.1.10 FDwfDigitalInStatusData2
FDwfDigitalInStatusData2(HDWF hdwf, void *rgData, int idxSample, int countOfDataBytes)
说明:它将数据样本复制到提供的缓冲区。示例格式由 FDwfDigitalInSampleFormatSet 函数指定。
参数:
hdwf – 接口句柄。
rgData – 指向分配的缓冲区的指针,用于复制采集数据.
idxSample – 要复制的第一个示例索引。
countOfDataBytes – 要复制的字节数。
9.1.11 FDwfDigitalInStatusNoise2
FDwfDigitalInStatusNoise2 (HDWF hdwf, void *rgData, int idxSample, int countOfDataBytes)
描述:它将噪声样本复制到提供的缓冲区。可以使用 DwfDigitalInSampleModeNoise 启用噪声捕获。
参数:
hdwf – 接口句柄。
rgData – 指向分配的缓冲区的指针,用于复制采集数据.
idxSample – 要复制的第一个示例索引。
countOfDataBytes – 要复制的字节数
9.1.12 FDwfDigitalInStatusRecord
FDwfDigitalInStatusRecord 函数是一个用于检索有关录制过程信息的函数。这个函数主要用于在数字信号录制过程中捕捉和分析数据损失和数据损坏的情况。
数据损失:当设备的数据采集速度超过了数据传输到电脑的速度时,会发生数据损失。这种情况通常是因为设备的录制缓冲区被填满,导致新的数据样本覆盖了旧的数据样本。
数据损坏:如果在上一次读取过程中,数据采集过程覆盖了数据样本,那么这些样本就会被标记为损坏。这表明数据样本在被读取之前已经被新的采集数据覆盖。
FDwfDigitalInStatusRecord(HDWF hdwf, int *pcdDataAvailable, int *pcdDataLost, int *pcdDataCorrupt)
描述:读取有关记录过程的信息。当设备采集速度快于向 PC 的读取速度时,就会发生数据丢失。在这种情况下,设备记录缓冲区被填满,数据样本被覆盖。损坏的样本表明样本已在上次读取过程中被采集过程覆盖。在这种情况下,可尝试优化循环过程以加快执行速度,或降低采集频率或记录长度,使其小于或等于设备缓冲区大小(记录长度 ⇐ 缓冲区大小/频率)。
参数:
hdwf - 接口句柄。
pcdDataAvailable - 用于接收可用采样数的变量指针。
pcdDataLost - 变量指针,用于接收上次检查后丢失的采样。
pcdDataCorrupt - 变量指针,用于接收可能损坏的采样数目。
函数的参数说明如下:
- `hdwf`:接口句柄,用于标识与设备的连接。
- `pcdDataAvailable`:指向整数的指针,该整数用于接收可用的样本数量。
- `pcdDataLost`:指向整数的指针,该整数用于接收自上次检查后丢失的样本数量。
- `pcdDataCorrupt`:指向整数的指针,该整数用于接收可能已损坏的样本数量。
通过调用此函数,可以有效地监控和调整数字输入设备的数据录制过程,以确保数据的完整性和准确性。
为了减少数据损失和损坏的情况,可以尝试以下几种优化方法:
1. 优化循环处理过程,使其执行更快。
2. 减少数据采集的频率。
3. 将记录长度设置为不大于设备缓冲区大小的限制(记录长度应小于等于缓冲区大小除以频率)。
9.2 配置
9.2.1 FDwfDigitalInInternalClockInfo
FDwfDigitalInInternalClockInfo(HDWF hdwf, double *phzFreq)
9.2.1.1 描述
检索内部时钟频率。
9.2.1.2 参数
- hdwf – 接口句柄。
- phzFreq – 返回内部时钟频率的指针.
9.2.2 FDwfDigitalInClockSourceInfo
FDwfDigitalInClockSourceInfo(HDWF hdwf, int *pfsDwfDigitalInClockSource)
9.2.2.1 说明
返回数字输入仪器支持的时钟源。它们作为位字段返回(通过引用)。可以使用 IsBitSet 宏分析此位字段。使用 dwf.h 中的 DwfDigitalInClockSource 常量定义各个位: • DwfDigitalInClockSourceInternal:内部时钟。• DwfDigitalInClockSourceExternal:外部时钟源。
9.2.2.2 参数
hdwf – 设备上的开放接口句柄。
pfsDwfDigitalInClockSource– 指向变量的指针以返回可用的时钟源选项。
9.2.3 FDwfDigitalInClockSourceSet
FDwfDigitalInClockSourceSet(HDWF hdwf, DwfDigitalInClockSource v)
9.2.3.1 描述
设置仪器的时钟源。
9.2.3.2 参数
hdwf – 设备上的开放接口句柄。
v – 时钟源。
9.2.4 FDwfDigitalInClockSourceGet
FDwfDigitalInClockSourceGet(HDWF hdwf, DwfDigitalInClockSource *pv)
说明:获取仪器的时钟源。
参数:
- hdwf – 设备上的开放接口句柄。
- pv – 指向变量的指针以返回配置的值
9.2.5 FDwfDigitalInDividerInfo
FDwfDigitalInDividerInfo(HDWF hdwf, unsigned int *pdivMax)
说明:返回支持的最大时钟分频器值。这指定采样率。
参数:
- hdwf –接口句柄。
- pdivMax – 指向变量的指针以返回可用的最大除法值.
9.2.6 FDwfDigitalInDividerSet(HDWF hdwf, unsigned int div)
说明:设置时钟分频器值。
参数:
- hdwf – 接口句柄。
- div – 分隔线值。
9.2.7 FDwfDigitalInDividerGet
FDwfDigitalInDividerGet (HDWF hdwf, unsigned int *pdiv)
说明:获取配置的时钟分频器值。
参数:
- hdwf – 接口句柄。
- pdiv – 返回配置值的指针。
9.2.8 FDwfDigitalInBitsInfo
FDwfDigitalInBitsInfo(HDWF hdwf, int *pnBits)
说明:返回数字输入位数。
参数:
- hdwf – 接口句柄。
- pnBits – 指向变量的指针以返回位数.
9.2.9 FDwfDigitalInInputOrderSet
FDwfDigitalInInputOrderSet (HDWF hdwf, int fDioFirst)
说明:配置采样数组中存储的值的顺序。如果 fDIOFirst = true DIO24..39 放在数组的开头,后跟 DIN0。23. 使用 fDIOFirst = false DIN0..23 放在开头,然后是 DIO24。31. 仅对数字检索设备有效。
参数:
- hdwf – 接口句柄。
- fDioFirst – DIO 或 DIN 线从索引零开始
9.2.10 FDwfDigitalInSampleFormatSet
FDwfDigitalInSampleFormatSet(HDWF hdwf, int nBits)
说明:设置采样格式,从最低有效位开始的位数。有效选项为 8、16 和 32。
9.2.10.2 参数
- hdwf – 接口句柄。
- nBits – 示例格式。
9.2.11 FDwfDigitalInSampleFormatGet
FDwfDigitalInSampleFormatGet (HDWF hdwf, int *pnBits)
9.2.11.1 说明
返回配置的示例格式。
9.2.11.2 参数
- hdwf – 接口句柄。
- pnBits – 返回配置值的指针.
9.2.12 FDwfDigitalInBufferSizeInfo
FDwfDigitalInBufferSizeInfo (HDWF hdwf, int *pnSizeMax)
说明:返回 Digital In 最大缓冲区大小。
参数:
hdwf – 接口句柄。
pnSizeMax – 指向变量的指针以返回最大缓冲区大小
9.2.13 FDwfDigitalInBufferSizeSet
FDwfDigitalInBufferSizeSet (HDWF hdwf, int nSize)
9.2.13.1 说明
设置缓冲区大小。
9.2.13.2 参数
- hdwf – 接口句柄。
- nSize – 缓冲区大小。
9.2.14 FDwfDigitalInBufferSizeGet
FDwfDigitalInBufferSizeGet (HDWF hdwf, int *pnSize)
说明:返回配置的缓冲区大小。
参数:
hdwf – 接口句柄。
nSize – 返回配置值的指针
9.2.15 FDwfDigitalInSampleModeInfo
FDwfDigitalInSampleModeInfo(HDWF hdwf, int *pfsDwfDigitalInSampleMode)
9.2.15.1 说明
返回支持的采样模式。它们作为位字段返回(通过引用)。可以使用 IsBitSet 宏分析此位字段。使用 dwf.h 中的 DwfDigitalInSampleMode 常量定义单个位: DwfDigitalInSampleModeSimple:在每个分频器时钟脉冲上存储一个样本。
DwfDigitalInSampleModeNoise:存储交替的噪声和采样值,其中噪声是两个采样之间的多个转换。这可能表示出现故障或振铃。当采样率小于最大时钟频率,分频器大于 1 时可用。
9.2.15.2 参数
hdwf – 接口句柄。
pfsDwfDigitalInSampleMode – 返回支持的采样模式的指针.
9.2.16 FDwfDigitalInSampleModeSet
FDwfDigitalInSampleModeSet(HDWF hdwf, DwfDigitalInSampleMode v)
9.2.16.1 说明
设置采样模式。
9.2.16.2 参数
- hdwf – 设备上的开放接口句柄。
- v – 采样模式。
9.2.17 FDwfDigitalInSampleModeGet
FDwfDigitalInSampleModeGet (HDWF hdwf, DwfDigitalInSampleMode *pv)
描述: 返回配置的采样模式。
参数: -
hdwf – 设备上的开放接口句柄。- pv – 返回配置值的指针。
9.2.18 FDwfDigitalInAcquisitionModeInfo
FDwfDigitalInAcquisitionModeInfo(HDWF hdwf, int *pfsacqmode)
说明:返回支持的 DigitalIn 采集模式。它们作为位字段返回(通过引用)。可以使用 IsBitSet 宏分析此位字段。使用 DWF.h 中的 ACQMODE 常量定义各个位。采集模式选择以下模式之一,即 ACQMODE:
参数:
- hdwf – 接口句柄。
9.2.19 FDwfDigitalInAcquisitionModeSet
FDwfDigitalInAcquisitionModeSet(HDWF hdwf, ACQMODE acqmode)
9.2.19.1 描述
设置采集模式。
9.2.19.2 参数
- hdwf – 接口句柄。
- acqmode – 要设置的采集模式。
9.2.20 FDwfDigitalInAcquisitionModeGet
FDwfDigitalInAcquisitionModeGet (HDWF hdwf, ACQMODE *pacqmode)
9.2.20.1 说明
检索采集模式。
9.2.20.2 参数
- hdwf – 接口句柄。
- pacqmode – 用于接收当前采集模式的变量。
9.2.21 FDwfDigitalInSampleSensibleSet
FDwfDigitalInSampleSensibleSet (HDWF hdwf, unsigned int fs)
9.2.21.1 说明
在记录采集模式下选择用于数据压缩的信号。
参数: - hdwf – 接口句柄。- fs – 用于查找压缩的信号的位场集。
9.2.22 FDwfDigitalInSampleSensibleGet
FDwfDigitalInSampleSensibleGet (HDWF hdwf, unsigned int *pfs)
说明:在记录采集模式下检索用于数据压缩的信号。
参数: - hdwf – 接口句柄。- pfs – 指向变量的指针以接收配置的值
9.2.23 FDwfDigitalInBuffersInfo
FDwfDigitalInBuffersInfo(HDWF hdwf, int *pMax)
说明:返回 acqmodeSingle 支持的最大设备缓冲区(内存分段),用于低延迟顺序捕获的过采样。参数: - hdwf – 接口句柄。- pnMax – 返回最大缓冲区的指针.
9.2.24 FDwfDigitalInBuffersSet
FDwfDigitalInBuffersSet (HDWF hdwf, int n)
说明:设置所需的缓冲区数。参数: - hdwf – 接口句柄。- n – 设备缓冲区的数量,0 和 1 禁用设备缓冲,-1 设置最大值
9.2.25 FDwfDigitalInBuffersGet
FDwfDigitalInBuffersGet (HDWF hdwf, int *pn)
说明:返回设备缓冲区的数量。
参数: - hdwf – 接口句柄。- pn – 用于接收当前设备缓冲区数量的变量。
9.2.24 FDwfDigitalInBuffersStatus
FDwfDigitalInBuffersStatus(HDWF hdwf, int *pn)
说明:返回已填充的设备缓冲区数。
参数: - hdwf – 接口句柄。- pn – 用于接收当前填充设备缓冲区数量的变量
9.3 触发器
请参阅 FDwfDeviceTriggerInfo 的说明。
9.3.1 FDwfDigitalInTriggerSourceSet
FDwfDigitalInTriggerSourceSet(HDWF hdwf, TRIGSRC trigsrc)
9.3.1.1 说明
设置仪器的触发源。
9.3.1.2 参数
hdwf – 接口句柄。
trigsrc – 要设置的触发源。
9.3.1.3 触发源
# trigger source
trigsrcNone = c_ubyte(0)
trigsrcPC = c_ubyte(1)
trigsrcDetectorAnalogIn = c_ubyte(2)
trigsrcDetectorDigitalIn = c_ubyte(3)
trigsrcAnalogIn = c_ubyte(4)
trigsrcDigitalIn = c_ubyte(5)
trigsrcDigitalOut = c_ubyte(6)
trigsrcAnalogOut1 = c_ubyte(7)
trigsrcAnalogOut2 = c_ubyte(8)
trigsrcAnalogOut3 = c_ubyte(9)
trigsrcAnalogOut4 = c_ubyte(10)
trigsrcExternal1 = c_ubyte(11)
trigsrcExternal2 = c_ubyte(12)
trigsrcExternal3 = c_ubyte(13)
trigsrcExternal4 = c_ubyte(14)
trigsrcHigh = c_ubyte(15)
trigsrcLow = c_ubyte(16)
trigsrcClock = c_ubyte(17)
9.3.2 FDwfDigitalInTriggerSourceGet
FDwfDigitalInTriggerSourceGet (HDWF hdwf, TRIGSRC *ptrigsrc)
说明:获取仪器的当前触发源设置。
参数:
hdwf – 接口句柄。
ptrigsrc – 指向变量的指针以接收触发源.
9.3.3 DwfDigitalInTriggerSlopeSet
DwfDigitalInTriggerSlopeSet(HDWF hdwf, DwfTriggerSlope slope)
描述: 设置仪器的触发斜率。
参数:
hdwf – 接口句柄。
slope – 要设置的触发源。
9.3.4 FDwfDigitalInTriggerSlopeGet
FDwfDigitalInTriggerSlopeGet (HDWF hdwf, DwfTriggerSlope *pslope)
说明:获取仪器的当前触发源设置。
参数:
hdwf – 接口句柄。
pslope – 指向变量的指针以接收触发斜率。
9.3.5 FDwfDigitalInTriggerPositionInfo
FDwfDigitalInTriggerPositionInfo( HDWF hdwf, unsigned int *pnSamplesAfterTriggerMax)
说明:返回样本中触发器位置的最大值。这可以大于指定的缓冲区大小。
参数:
hdwf – 接口句柄。
pnSamplesAfterTriggerMax – 接收最大触发位置的变量。
9.3.6 FDwfDigitalInTriggerPositionSet
FDwfDigitalInTriggerPositionSet(HDWF hdwf, unsigned int cSamplesAfterTrigger)
9.3.6.1 描述
设置触发后要采集的样本数。
9.3.6.2 参数
- hdwf – 接口句柄。
- cSamplesAfterTrigger – 触发后的样本。
9.3.7 FDwfDigitalInTriggerPositionGet
FDwfDigitalInTriggerPositionGet( HDWF hdwf, unsigned int *pcSamplesAfterTrigger)
说明:获取配置的触发器位置。
参数:
- hdwf – 接口句柄。- pcSamplesAfterTrigger – 指向变量的指针以接收配置的值
9.3.8 FDwfDigitalInTriggerPrefillSet
FDwfDigitalInTriggerPrefillSet(HDWF hdwf, unsigned int cSamplesBeforeTrigger)
9.3.8.1 描述
设置在记录采集模式下布防前要采集的样本数。预填充用于触发器记录,以确保在布防之前,在寻找触发事件之前,最终收集到所需数量的样本。使用预填充 0,记录过程将仅在触发事件后流式传输数据。当预填充大于零时,录音将流式传输,直到触发发生以及触发位置指定的样本。
9.3.8.2 参数
hdwf – 接口句柄。
cSamplesBeforeTrigger – 触发前的样本
9.3.9 FDwfDigitalInTriggerPrefillGet
FDwfDigitalInTriggerPrefillGet ( HDWF hdwf, unsigned int *pcSamplesBeforeTrigger)
说明:获取配置的触发器预填充。
参数: - hdwf – 接口句柄。- pcSamplesBeforeTrigger – 指向变量的指针以接收配置的值
9.3.10 FDwfDigitalInTriggerAutoTimeoutInfo
FDwfDigitalInTriggerAutoTimeoutInfo( HDWF hdwf, double *psecMin, double *psecMax, double *pnSteps)
9.3.10.1 说明
返回最小和最大自动触发超时值,以及可调整的步数。
9.3.10.2 参数
- hdwf – 接口句柄。- psecMin – 接收最小超时的变量。- psecMax – 接收最大超时的变量。- pnSteps – 返回步数的变量。
9.3.11 FDwfDigitalInTriggerAutoTimeoutSet
FDwfDigitalInTriggerAutoTimeoutSet(HDWF hdwf, double secTimeout)
描述:
配置自动触发超时值(以秒为单位)。
参数: - hdwf – 接口句柄。- secTimeout – 要设置的超时
9.3.12 FDwfDigitalInTriggerAutoTimeoutGet
FDwfDigitalInTriggerAutoTimeoutGet (HDWF hdwf, double *psecTimeout) 说明:返回配置的自动触发超时值(以秒为单位)。当指定的时间过去时,采集会自动触发。当值为零时,超时将被禁用,执行“正常”采集。参数: - hdwf – 接口句柄。- psecTimeout – 接收当前超时的变量。
9.4 触发检测器
为了在数字输入引脚上使用触发器,请使用 FDwfDigitalInTriggerSourceSet 将触发源设置为 trigsrcDetectorDigitalIn。
9.4.1 FDwfDigitalInTriggerInfo
FDwfDigitalInTriggerInfo(HDWF hdwf, unsigned int *pfsLevelLow, unsigned int *pfsLevelHigh, unsigned int *pfsEdgeRise, unsigned int *pfsEdgeFall)
说明:返回触发器中支持的数字。参数的位表示引脚。
参数: - hdwf – 接口句柄。- pfsLevelLow – 用于接收支持的低状态触发器的变量。- pfsLevelHigh – 用于接收支持的低状态触发器的变量。- pfsEdgeRise – 用于接收支持的上升沿触发器的变量。- pfsEdgeFall – 用于接收支持的下降沿触发器的变量。
9.4.2 FDwfDigitalInTriggerSet
FDwfDigitalInTriggerSet(HDWF hdwf, unsigned int fsLevelLow, unsigned int fsLevelHigh, unsigned int fsEdgeRise, unsigned int fsEdgeFall)
9.4.2.1 描述
配置数字输入触发检测器。触发位的逻辑为:低和高以及(上升或下降)。在上升和下降中设置一点将在任何边缘、任何过渡上触发。
例如,当 DIO-0 为低电平且 DIO-1 为高电平且 DIO-2 上升或 DIO-3 下降时,FDwfDigitalInTriggerInfo(hdwf, 1, 2, 4, 8) 将生成触发器。
9.4.2.2 参数
- hdwf – 接口句柄。
- fsLevelLow – 设置低状态条件。
- fsLevelHigh – 设置高状态条件。
- fsEdgeRise – 设置上升沿条件。
- fsEdgeFall – 设置下降沿条件。
9.4.3 FDwfDigitalInTriggerGet
FDwfDigitalInTriggerGet (HDWF hdwf, unsigned int *pfsLevelLow, unsigned int *pfsLevelHigh, unsigned int *pfsEdgeRise, unsigned int *pfsEdgeFall)
9.4.3.1 说明
返回配置的数字触发检测器选项。
9.4.3.2 参数
- hdwf – 接口句柄。
- pfsLevelLow – 用于接收配置值的变量。
- pfsLevelHigh – 用于接收配置值的变量。
- pfsEdgeRise – 用于接收配置值的变量。- pfsEdgeFall – 用于接收配置值的变量。
9.4.4 FDwfDigitalInTriggerResetSet
FDwfDigitalInTriggerResetSet(HDWF hdwf, unsigned int fsLevelLow, unsigned int fsLevelHigh, unsigned int fsEdgeRise, unsigned int fsEdgeFall)
9.4.4.1 描述
配置数字触发复位条件。
9.4.4.2 参数
- hdwf – 接口句柄。
- fsLevelLow – 设置低状态条件。
- fsLevelHigh – 设置高状态条件。
- fsEdgeRise – 设置上升沿条件。
- fsEdgeFall – 设置下降沿条件。
9.4.5 FDwfDigitalInTriggerCountSet
FDwfDigitalInTriggerCountSet (HDWF hdwf, int cCount, int fRestart)
9.4.5.1 说明
配置触发计数器。
9.4.5.2 参数
- hdwf – 接口句柄。
- cCount – 设置事件计数。
- fRestart – 设置为在过期或未过期后重新启动计数器,并等待下一个重置条件
9.4.6 FDwfDigitalInTriggerLengthSet
FDwfDigitalInTriggerLengthSet (HDWF hdwf, double secMin, double secMax, int idxSync)
9.4.6.1 说明
配置触发时序。同步模式如下:
0 – 正常
1 – 定时:用于 UART、CAN。最小长度指定位长度和最大超时长度。
2 – PWM:用于1-Wire。最小长度指定采样时间和最大超时长度。
9.4.6.2 参数
- hdwf – 接口句柄。
- secMin – 设置最小长度(以秒为单位),最多 20 秒。
- secMax – 设置最大长度(以秒为单位),最多 20 秒。
- idxSync – 设置同步模式
10 数字输出(码型发生器)
DigitalOut 仪器状态:
在 dwf.h DwfState 类型中定义了这些状态。
- 仪器配置或设置
- 就绪:初始状态。在 FDwfDigitalOutConfigure 或任何 FDwfDigitalOut*Set 函数调用进入此状态后。使用数字输出时,configure start 命令进入 Armed 状态
- Armed:等待触发。
- 等待:在 FDwfDigitalOutWaitSet 函数指定的时间段内保持此状态。- 正在运行:在 FDwfDigitalOutRunSet 函数指定的时间段内保持此状态。
- 重复:根据 FDwfDigitalOutRepeatTriggerSet 指定的次数,根据 FDwfDigitalOutRepeatTriggerSet 设置进入 Armed 或 Wait 状态。
- 完成:最终状态。
这说明机器控制所有数字输出通道。
请参阅以下示例:DigitalOut_BinaryCounter/Pins.py
通道配置;
除法器和计数器的初始值指定进入运行状态时的初始加载值,即初始延迟。分频器指定时钟划分。此速率将是计数器的自定义采样频率和步长。进入 Running 状态时,将加载使用 FDwfDigitalOutDividerInitSet 指定的初始值。当此值过期时,将在每次过期时加载 FDwfDigitalOutDividerSet 指定的值。Counter 初始值由 FDwfDigitalOutCounterInitSet 函数设置。此函数还设置初始级别。此过期后,FDwfDigitalOutCounterSet 指定的级别值将在进一步过期时加载。在计数器到期时,级别被切换,这指导低值或高值加载。如果其中一个为零,则不会切换级别。
计数器用于:
- 脉冲生成低状态长度和高状态长度。
- 随机设置更新速率。
- 自定义寻址缓冲区。
示例由 FDwfDigitalOutDataSet 函数配置。这还会根据 countOfBits 参数配置计数器低/高。在 TS 模式下,计数器步长为双精度,为输出提供两个位样本:value 和 enable。
输出模式 (FDwfDigitalOutModeSet) 在以下两者之间进行选择:PP、OS、OD 和 TS。空闲输出 (FDwfDigitalOutIdleSet) 在未处于“正在运行”状态时选择输出。
脉冲信号:
分隔线的每个到期时间都是计数器的一个步骤
对于脉冲信号,初始电平和初始值使用 FDwfDigitalOutCounterInitSet 函数指定。这些在进入“正在运行”状态时加载。
10.1 控制
10.1.1 FDwfDigitalOutReset
FDwfDigitalOutReset(HDWF hdwf)
说明:将所有仪器参数重置并配置(默认情况下,启用自动配置)为默认值。
参数:
- hdwf – 接口句柄。
10.1.2 FDwfDigitalOutConfigure
FDwfDigitalOutConfigure(HDWF hdwf, int fStart)
说明:启动或停止仪器。
参数:
- hdwf – 接口句柄。
- fStart – 启动仪器。若要停止,请设置为 FALSE。
10.1.3 FDwfDigitalOutStatus
FDwfDigitalOutStatus(HDWF hdwf, DwfState *psts)
10.1.3.1 描述
检查仪器的状态。
10.1.3.2 参数
- hdwf – 接口句柄。
- psts – 指向变量的指针以返回状态。
10.2 配置
10.2.1 FDwfDigitalOutInternalClockInfo
FDwfDigitalOutInternalClockInfo(HDWF hdwf, double *phzFreq)
10.2.1.1 说明
检索内部时钟频率。
参数: - hdwf – 接口句柄。- phzFreq – 返回内部时钟频率的指针.
请参阅 FDwfDeviceTriggerInfo 的说明。
10.2.2 FDwfDigitalOutTriggerSourceSet
FDwfDigitalOutTriggerSourceSet(HDWF hdwf, TRIGSRC trigsrc)
说明:设置仪器的触发源。默认设置为 trigsrcNone。
参数: - hdwf – 接口句柄。- trigsrc – 要设置的触发源。
10.2.3 FDwfDigitalOutTriggerSourceGet
FDwfDigitalOutTriggerSourceGet (HDWF hdwf, TRIGSRC *ptrigsrc)
描述: 获取仪器的当前触发源设置。
参数: - hdwf – 接口句柄。- ptrigsrc – 指向变量的指针以接收触发源.
10.2.4 FDwfDigitalOutTriggerSlopeSet
FDwfDigitalOutTriggerSlopeSet(HDWF hdwf, DwfTriggerSlope slope)
说明:设置仪器的触发斜率。
参数: - hdwf – 接口句柄。- slope – 要设置的触发源。
10.2.5 FDwfDigitalOutTriggerSlopeGet
FDwfDigitalOutTriggerSlopeGet (HDWF hdwf, DwfTriggerSlope *pslope) 说明:获取仪器的当前触发源设置。
参数: - hdwf – 接口句柄。- pslope – 指向变量的指针以接收触发斜率。
FDwfDigitalOutEnableSet
FDwfDigitalOutEnableSet(HDWF hdwf, int idxChannel, int fEnable)
描述: 启用或禁用 idxChannel 指定的通道。
参数:
- hdwf – 接口句柄。
- idxChannel – 通道索引。
- fEnable – TRUE 启用,FALSE 禁用
FDwfDigitalOutDividerSet
FDwfDigitalOutDividerSet(HDWF hdwf, int idxChannel, unsigned int v)
描述: 设置指定通道的分频器值。
参数: - hdwf – 接口句柄。
- idxChannel – 通道索引。
- v – 除法值。
FDwfDigitalOutCounterSet( HDWF hdwf, int idxChannel, unsigned int vLow, unsigned int vHigh) 说明: 设置指定通道的计数器低值和高值。
参数: - hdwf – 接口句柄。- idxChannel – 通道索引。- vLow – 计数器低值。- vHigh – 计数器高值。
13 数字协议
这些协议使用数字输入/输出设备资源来创建各种通信协议。一次只能使用其中一种协议。Digital-Out 用于生成输出信号,Digital-In 用于捕获接收到的数据。使用 Digital-IO 覆盖协议使用的信号可能会扰乱通信。
注意:Digital Discovery 的 DIO channe 索引从 0 开始,0 是 DIO-24,1 是 DIO-25...
13.1 UART
See Digital_Uart.py example.
13.1.1 FDwfDigitalUartReset
FDwfDigitalUartReset(HDWF hdwf)
13.1.1.1 说明
将 UART 配置重置为默认值。使用 FDwfDigitalOutReset 重置输出。
13.1.1.2 参数
- hdwf – 接口句柄。
FDwfDigitalUartRateSet(HDWF hdwf, double hz)
描述:设置数据速率。参数: - hdwf – 接口句柄。- hz – 要设置的数据速率
13.2 SPI
参见示例:Digital_Spi.py、Digital_Spi_Dual.py、Digital_Spi_Quad.py Digital_Spi_Siso.py
如果选择信号由 FDwfDigitalSpiSelectSet 配置,并且未使用 FDwfDigitalSpiSelect 激活,则自动控制该信号以进行传输功能,具有相同的 DIO 和活动电平。
13.2.1 FDwfDigitalSpiReset
FDwfDigitalSpiReset(HDWF hdwf)
描述:将 SPI 配置重置为默认值。使用 FDwfDigitalOutReset 重置输出。
参数: - hdwf – 接口句柄
13.2.2 FDwfDigitalSpiFrequencySet
FDwfDigitalSpiFrequencySet(HDWF hdwf, double hz)
描述: 设置 SPI 频率。
参数: - hdwf – 接口句柄。- hz – 要设置的比特率(默认为 1kHz)
13.2.3 FDwfDigitalSpiClockSet
FDwfDigitalSpiClockSet(HDWF hdwf, int idxChannel)
说明:指定用于 SPI 时钟的 DIO 通道。
参数: - hdwf – 接口句柄。- idxChannel – 用于 SPI 时钟的 DIO 通道(默认 DIO1)
13.2.4 FDwfDigitalSpiDataSet
FDwfDigitalSpiDataSet (HDWF hdwf, int idxDQ, int idxChannel)
说明:指定用于 SPI 数据的 DIO 通道。
参数: - hdwf – 接口句柄。
- idxDQ – 指定要设置的数据索引,0 = DQ0_MOSI_SISO,1 = DQ1_MISO,2 = DQ2,3 = DQ3
- idxChannel – 用于 SPI 数据的 DIO 通道
13.2.5 FDwfDigitalSpiIdleSet
FDwfDigitalSpiIdleSet(HDWF hdwf, int idxDQ, DwfDigitalOutIdle 空闲)
描述: 指定 DQ 单次空闲输出状态。DQ2 和 3 可用于其他用途,例如写保护(应驱动低电平)或保持(应处于高阻抗状态)。
参数:
- hdwf – 接口句柄。
- idxDQ – 指定数据索引
- idle – 通道的空闲状态
13.2.6 FDwfDigitalSpiModeSet
FDwfDigitalSpiModeSet (HDWF hdwf, int iMode)
描述: 设置 SPI 模式
参数:
hdwf – 接口句柄。
iMode – 指定 SPI 模式、bit1 CPOL 和 bit0 CPHA。当 bit2=1 时,MISO 将在活动边沿上采样
13.2.7 FDwfDigitalSpiOrderSet
FDwfDigitalSpiOrderSet (HDWF hdwf, int fMSBLSB)
说明: 设置 SPI 数据的位顺序。
参数:
hdwf – 接口句柄。- fMSB – 指定位顺序,1 MSB 优先(默认),0 LSB 优先
13.2.8 FDwfDigitalSpiDelaySet
FDwfDigitalSpiDelaySet (HDWF hdwf, int cStart, int cCmd, int cWord, int cStop)
说明:设置 FDwfDigitalSpiCmdWrite/Read* 函数使用的延迟。
参数: - hdwf – 接口句柄。- cStart – 在时钟周期长度中指定启动后的延迟。- cCmd – 在命令后指定延迟。- cWord – 指定单词之间的延迟。- cStop – 指定停止前的延迟。
13.2.9 FDwfDigitalSpiSelectSet
FDwfDigitalSpiSelectSet(HDWF hdwf, int idxChannel, int fIdle)
描述: 指定 SPI 芯片选择信号。参数: - hdwf – 接口句柄。- idxChannel – 指定 DIO 通道 - fIdle – 设置空闲级别:0 低,1 高
13.2.10 FDwfDigitalSpiWriteRead
FDwfDigitalSpiWriteRead(HDWF hdwf, int cDQ, int cBitPerWord, unsigned char *rgTX, int cTX, unsigned char *rgRX, int cRX)
描述: 执行最多 8 位字的 SPI 传输。此函数适用于标准 MOSI/MISO (cDQ 1) 操作,但只要指定了仅写入 (rgTX/cTX) 或读取 (rgRX/cRX),它就可以用于其他模式。生成的时钟信号数是 cTX 和 cRX 的最大值。
参数:
- hdwf – 接口句柄。
- cDQ – 指定用于传输数据的 DQ 行:
- cBitPerWord – 指定要为每个字传输的位数。
- rgTX – 要写入的 8 位值(字节字)数组。
- cTX – 要写的字数。
- rgRx – 用于读取单词的缓冲区。
- cRx – 要阅读的字数。
FDwfDigitalSpiWrite32
FDwfDigitalSpiWrite32 (HDWF hdwf, int cDQ, int cBitPerWord, unsigned int *rgTX, int cTX)
描述: 执行最多 32 位字的 SPI 读取。有关详细信息,请参阅 FDwfDigitalSpiWriteRead。
参数:
- hdwf – 接口句柄。
- cDQ – 指定用于传输数据的 DQ 行。
- cBitPerWord – 指定要为每个字传输的位数。
- rgTX – 要写入的 32 位值 (int) 数组。
- cTX – 要写入的字节数。