使用模拟发现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探头导线连接到黄色热电偶导线上,探头接地夹连接到红色热电偶导线上。
软件设置
中链接的项目ZIP下载库存节并将内容提取到USB驱动器上。
将USB接口插入Analog Discovery Pro的背面。在终端中,键入
sudo fdisk - l
查找USB设备路径。它应该是这样的/dev/sd <驱动器> <分区号>.本指南将在其文本和图像中使用/dev/sda1,必须注意匹配您的USB驱动器的驱动器号和分区号。
下面的下拉列表详细描述了测试脚本的内容。浏览它以找到为您自己的项目调整脚本所需的信息。
- 脚本的概述
-
在脚本的开始,必要的模块被导入,并加载波形动态库。
DWF Python示例作者:Digilent, Inc。要求:Python 2.7, 3 ""从ctypes进口(c_int,c_byte,c_ubyte,cdll,byref,c_double,create_string_buffer,c_bool)进口数学进口sys进口时间从dwfconstants进口(filterDecimate,AnalogOutNodeCarrier,funcDC,DwfStateDone)进口随机如果sys.平台.startswith(“赢”): dwf=cdll。LoadLibrary(“dwf.dll”)elifsys.平台.startswith(“达尔文”): dwf=cdll。LoadLibrary(“/图书馆/框架/ dwf.framework / dwf”)其他的: dwf=cdll。LoadLibrary(“libdwf.so”)
使用测试测量设备前,需要先连接测试测量设备与主机。如果设备正在被其他软件使用或由于其他原因而不可用,这将通知用户并停止脚本执行。
hdwf=c_int()打印(“先打开设备”)dwf。FDwfDeviceConfigOpen(c_int(-1),c_int(0),byref(hdwf))如果hdwf。价值==0:打印("打开设备失败")szerr=create_string_buffer(512)dwf。FDwfGetLastErrorMsg(szerr)打印(str(szerr。价值))辞职()
数字IO、模拟输入和电压电源依次初始化。
打印(“配置工具”)打印(“配置SPI……”)#设置SPI频率为6000000 Hzdwf。FDwfDigitalSpiFrequencySet(hdwf,c_double(6 e6))#设置DIO通道1为SPI时钟dwf。FDwfDigitalSpiClockSet(hdwf,c_int(1))#设置DIO通道2为SPI MOSI引脚dwf。FDwfDigitalSpiDataSet(hdwf,c_int(0),c_int(2))#设置DIO通道3为SPI MISO引脚dwf。FDwfDigitalSpiDataSet(hdwf,c_int(1),c_int(3.))#设置SPI模式为3,其中CPOL = 1和CPHA = 1dwf。FDwfDigitalSpiModeSet(hdwf,c_int(3.))#设置SPI数据的位序为MSBdwf。FDwfDigitalSpiOrderSet(hdwf,c_int(1))#设置DIO通道0的值,作为SPI芯片选择连接,到高dwf。FDwfDigitalSpiSelect(hdwf,c_int(0),c_int(1))时间.睡眠(1)打印(“配置模拟……”)#设置采样频率为20mhzdwf。FDwfAnalogInFrequencySet(hdwf,c_double(20000000.0))#设置缓冲区大小为4000个样本dwf。FDwfAnalogInBufferSizeSet(hdwf,c_int(4000))# enable模拟通道1dwf。FDwfAnalogInChannelEnableSet(hdwf,c_int(-1),c_bool(真正的))#设置通道1输入范围为5伏dwf。FDwfAnalogInChannelRangeSet(hdwf,c_int(-1),c_double(5))#启用1通道模拟信号抽取dwf。FDwfAnalogInChannelFilterSet(hdwf,c_int(-1),filterDecimate)时间.睡眠(2)#等待偏移量稳定。打印(“配置电源……”)#启用正电源dwf。FDwfAnalogIOChannelNodeSet(hdwf,c_int(0),c_int(0),c_double(真正的))#设置电压为3.3Vdwf。FDwfAnalogIOChannelNodeSet(hdwf,c_int(0),c_int(1),c_double(3.3))#主启用dwf。FDwfAnalogIOEnableSet(hdwf,c_int(真正的))时间.睡眠(5)
的ADC将其放入单一转换模式并配置为增益100,然后进行校准。
打印(“配置ADC”)打印(“写配置……”)#写入配置寄存器,设置增益为8,激活通道为0b=(c_ubyte *4)(0 x10,0 x00,0 x01,0 * 13)#设置DIO通道0,作为SPI CS为低(0)dwf。FDwfDigitalSpiSelect(hdwf,c_int(0),c_int(0))#在DQ行0上执行SPI写操作,每字8位,发送上述缓冲区(b)dwf。FDwfDigitalSpiWrite(hdwf,c_int(0),c_int(8),b,c_int(len(b)))#设置DIO通道0,作为SPI CS高(1)dwf。FDwfDigitalSpiSelect(hdwf,c_int(0),c_int(1))时间.睡眠(.05)#写入模式寄存器,平均设置为100b=(c_byte *4)((,(,0 x00,0 x64)#设置DIO通道0,作为SPI CS为低(0)dwf。FDwfDigitalSpiSelect(hdwf,c_int(0),c_int(0))#在DQ行0上执行SPI写操作,每字8位,发送上述缓冲区(b)dwf。FDwfDigitalSpiWrite(hdwf,c_int(0),c_int(8),b,c_int(len(b)))#设置DIO通道0,作为SPI CS高(1)dwf。FDwfDigitalSpiSelect(hdwf,c_int(0),c_int(1))时间.睡眠(.05)
测试通过开始模拟采集来测量热电偶连接处的电压来开始。
随着收购的进行,该公司ADC指示执行转换。
试一试:而真正的: dwf。FDwfAnalogInConfigure(hdwf,c_int(1),c_int(1))#读取数据并计算温度b=(c_ubyte *4)(0 x58,0 x00,0 x00,0 x00)r=(c_ubyte *4)()#设置DIO通道0,作为SPI CS为低(0)dwf。FDwfDigitalSpiSelect(hdwf,c_int(0),c_int(0))#执行SPI写/读操作使用MOSI/MISO 8位字,使用b发送和r接收dwf。FDwfDigitalSpiWriteRead(hdwf,c_int(1),c_int(8),b,c_int(len(b)),r,c_int(len(b)))#设置DIO通道0,作为SPI CS高(1)dwf。FDwfDigitalSpiSelect(hdwf,c_int(0),c_int(1))将字节数组转换为数值ch0Data=0为我在范围(1,4): ch0Data=ch0Data<<8| r[我]
如果没有,则允许采集完成,然后检索数据。
#完成收购而真正的: dwf。FDwfAnalogInStatus(hdwf,c_int(1),byref(sts))如果sts。价值==DwfStateDone。价值:打破时间.睡眠(0.1)打印(“获得”)样品=(c_double *4000)()#将采集的样本读入样本dwf。FDwfAnalogInStatusData(hdwf,0,样品,4000)
给出的数据PmodAD5转换成合适的电压值,并计算采集样品的平均值,然后将结果显示在stdout上。
mVref=2.5PGAGain=8#将数据转换为数字电压值thermoVoltage=(((ch0Data /8388608)-1.0)*(mVref / PGAGain))#求样本的平均值avg=总和(样品)/len(样品)
测试持续运行,直到按下Ctrl+C并关闭设备。
除了KeyboardInterrupt:通过打印("\ n清理……”)dwf。FDwfDeviceCloseAll()
通过输入来运行脚本
sudo python3。/ pmodad5-test.py
在终端。此脚本配置PmodAD5通过SPI,并在用于设置来自Wavegen的直流信号的电压列表上迭代。然后,它在SPI上发出一个读命令,记录结果,并继续到下一个电压,直到没有剩下。完成后,结果输出到终端。
其他资源
要了解更多的指南和模拟发现专业版的示例项目,请查看它Digilent论坛.








