使用模拟发现Pro (ADP3450/ADP3250)在Linux模式下进行自动化测试

概述

本指南演示了在Linux模式下使用Analog Discovery Pro来自动测试PmodAD5, SPI-enabledADC.使用WaveForms SDK来测量进入Pmod和SPI控件的模拟信号,并读出数据,比较两种结果,从而实现自动化。

请注意,虽然这里提供的设置和脚本是用Pmod AD5创建的,但它们可以适用于您自己的项目的测试。


库存

  • 模拟发现职业
    • 1 12×2 MTE线缆
    • 1个bnc端接示波器探头
  • 一个FAT/FAT32 USB驱动器
  • Pmod AD5模块,采用AD7193模数转换器芯片
  • k热电偶
  • 电路试验板
  • 面包板跳线和公对公针头,方便访问
  • ZIP下载在模拟发现专业版上运行一个测试脚本
  • 装有下列软件的计算机:
    • Digilent WaveForms,在这里只用来放置你的模拟发现Pro到Linux模式
    • 终端仿真程序,如PuTTY或TeraTerm

注意:对于不熟悉串口的用户,建议使用TeraTerm。


演示设置

硬件设置

将示波器探头的bnc连接器插入示波器1通道,将MTE电缆插入数字MTE连接器。将DIO通道、地面和VIO从Analog Discovery Pro连接到PmodAD5如右图所示。下面提供了DIO通道连接以供参考。

  • DIO0连接到Pmod AD5的引脚1
  • DIO1连接到Pmod AD5的引脚4
  • DIO2连接到Pmod AD5的引脚2
  • DIO3连接到Pmod AD5上的引脚3

连接黄色热电偶引线到连接器头部J2的引脚1PmodAD5而红色热电偶通向头J2上的引脚2。然后将BNC探头导线连接到黄色热电偶导线上,探头接地夹连接到红色热电偶导线上。

演示设置应该与右边的照片类似。用一块面包板使热电偶的接点容易暴露在示波器上。

注意:接线图显示了两者之间的联系PmodAD5,热电偶和ADP3450。如果使用ADP3250,连接数相同。

软件设置

通过USB连接Analog Discovery Pro到主机,打开WaveForms,进入Linux模式。关于如何引导到Linux模式的详细说明可以在

找到Analog Discovery Pro连接的串行端口并记录它。

打开终端仿真程序(如PuTTY或TeraTerm),使用115200波特率、8个数据、1个停止位和无奇偶校验位连接到指定的串口。

以用户名:digilent和密码:digilent登录。

中链接的项目ZIP下载库存节并将内容提取到USB驱动器上。

将USB接口插入Analog Discovery Pro的背面。在终端中,键入

sudo fdisk - l

查找USB设备路径。它应该是这样的/dev/sd <驱动器> <分区号>.本指南将在其文本和图像中使用/dev/sda1,必须注意匹配您的USB驱动器的驱动器号和分区号。

通过输入命令使驱动器内容可以访问

Sudo mount /dev/sda1 /mnt

然后

cd / mnt

导航到USB的目录。


下面的下拉列表详细描述了测试脚本的内容。浏览它以找到为您自己的项目调整脚本所需的信息。

脚本的概述

在脚本的开始,必要的模块被导入,并加载波形动态库。

DWF Python示例作者:Digilent, Inc。要求:Python 2.7, 3 ""ctypes进口c_intc_bytec_ubytecdllbyrefc_doublecreate_string_bufferc_bool进口数学进口sys进口时间dwfconstants进口filterDecimateAnalogOutNodeCarrierfuncDCDwfStateDone进口随机如果sys平台startswith“赢”: dwfcdll。LoadLibrary“dwf.dll”elifsys平台startswith“达尔文”: dwfcdll。LoadLibrary“/图书馆/框架/ dwf.framework / dwf”其他的: dwfcdll。LoadLibrary“libdwf.so”

使用测试测量设备前,需要先连接测试测量设备与主机。如果设备正在被其他软件使用或由于其他原因而不可用,这将通知用户并停止脚本执行。

hdwfc_int打印“先打开设备”dwf。FDwfDeviceConfigOpenc_int-1c_int0byrefhdwf如果hdwf。价值==0打印"打开设备失败"szerrcreate_string_buffer512dwf。FDwfGetLastErrorMsgszerr打印strszerr。价值辞职

数字IO、模拟输入和电压电源依次初始化。

打印“配置工具”打印“配置SPI……”#设置SPI频率为6000000 Hzdwf。FDwfDigitalSpiFrequencySethdwfc_double6 e6#设置DIO通道1为SPI时钟dwf。FDwfDigitalSpiClockSethdwfc_int1#设置DIO通道2为SPI MOSI引脚dwf。FDwfDigitalSpiDataSethdwfc_int0c_int2#设置DIO通道3为SPI MISO引脚dwf。FDwfDigitalSpiDataSethdwfc_int1c_int3.#设置SPI模式为3,其中CPOL = 1和CPHA = 1dwf。FDwfDigitalSpiModeSethdwfc_int3.#设置SPI数据的位序为MSBdwf。FDwfDigitalSpiOrderSethdwfc_int1#设置DIO通道0的值,作为SPI芯片选择连接,到高dwf。FDwfDigitalSpiSelecthdwfc_int0c_int1时间睡眠1打印“配置模拟……”#设置采样频率为20mhzdwf。FDwfAnalogInFrequencySethdwfc_double20000000.0#设置缓冲区大小为4000个样本dwf。FDwfAnalogInBufferSizeSethdwfc_int4000# enable模拟通道1dwf。FDwfAnalogInChannelEnableSethdwfc_int-1c_bool真正的#设置通道1输入范围为5伏dwf。FDwfAnalogInChannelRangeSethdwfc_int-1c_double5#启用1通道模拟信号抽取dwf。FDwfAnalogInChannelFilterSethdwfc_int-1filterDecimate时间睡眠2#等待偏移量稳定。打印“配置电源……”#启用正电源dwf。FDwfAnalogIOChannelNodeSethdwfc_int0c_int0c_double真正的#设置电压为3.3Vdwf。FDwfAnalogIOChannelNodeSethdwfc_int0c_int1c_double3.3#主启用dwf。FDwfAnalogIOEnableSethdwfc_int真正的时间睡眠5

ADC将其放入单一转换模式并配置为增益100,然后进行校准。

打印“配置ADC”打印“写配置……”#写入配置寄存器,设置增益为8,激活通道为0bc_ubyte *40 x100 x000 x010 * 13#设置DIO通道0,作为SPI CS为低(0)dwf。FDwfDigitalSpiSelecthdwfc_int0c_int0#在DQ行0上执行SPI写操作,每字8位,发送上述缓冲区(b)dwf。FDwfDigitalSpiWritehdwfc_int0c_int8bc_intlenb#设置DIO通道0,作为SPI CS高(1)dwf。FDwfDigitalSpiSelecthdwfc_int0c_int1时间睡眠.05#写入模式寄存器,平均设置为100bc_byte *4((0 x000 x64#设置DIO通道0,作为SPI CS为低(0)dwf。FDwfDigitalSpiSelecthdwfc_int0c_int0#在DQ行0上执行SPI写操作,每字8位,发送上述缓冲区(b)dwf。FDwfDigitalSpiWritehdwfc_int0c_int8bc_intlenb#设置DIO通道0,作为SPI CS高(1)dwf。FDwfDigitalSpiSelecthdwfc_int0c_int1时间睡眠.05

测试通过开始模拟采集来测量热电偶连接处的电压来开始。

随着收购的进行,该公司ADC指示执行转换。

试一试真正的: dwf。FDwfAnalogInConfigurehdwfc_int1c_int1#读取数据并计算温度bc_ubyte *40 x580 x000 x000 x00rc_ubyte *4#设置DIO通道0,作为SPI CS为低(0)dwf。FDwfDigitalSpiSelecthdwfc_int0c_int0#执行SPI写/读操作使用MOSI/MISO 8位字,使用b发送和r接收dwf。FDwfDigitalSpiWriteReadhdwfc_int1c_int8bc_intlenbrc_intlenb#设置DIO通道0,作为SPI CS高(1)dwf。FDwfDigitalSpiSelecthdwfc_int0c_int1将字节数组转换为数值ch0Data0范围14: ch0Datach0Data<<8| r

如果没有,则允许采集完成,然后检索数据。

#完成收购真正的: dwf。FDwfAnalogInStatushdwfc_int1byrefsts如果sts。价值==DwfStateDone。价值打破时间睡眠0.1打印“获得”样品c_double *4000#将采集的样本读入样本dwf。FDwfAnalogInStatusDatahdwf0样品4000

给出的数据PmodAD5转换成合适的电压值,并计算采集样品的平均值,然后将结果显示在stdout上。

mVref2.5PGAGain8#将数据转换为数字电压值thermoVoltagech0Data /8388608-1.0mVref / PGAGain#求样本的平均值avg总和样品/len样品

测试持续运行,直到按下Ctrl+C并关闭设备。

除了KeyboardInterrupt通过打印\ n清理……”dwf。FDwfDeviceCloseAll

通过输入来运行脚本

sudo python3。/ pmodad5-test.py

在终端。此脚本配置PmodAD5通过SPI,并在用于设置来自Wavegen的直流信号的电压列表上迭代。然后,它在SPI上发出一个读命令,记录结果,并继续到下一个电压,直到没有剩下。完成后,结果输出到终端。


其他资源

要了解更多的指南和模拟发现专业版的示例项目,请查看它Digilent论坛