ADP3450/ADP3250在Linux模式下的自动测试
概述
本指南演示在Linux模式下使用模拟发现专业版自动测试PmodAD5, SPI-enabledADC.自动化是通过使用WaveForms SDK来测量进入Pmod和SPI控制读取数据的模拟信号来完成的,比较两种结果。
请注意,虽然这里提供的设置和脚本是用Pmod AD5创建的,但它们可以用于您自己的项目测试。
库存
-
模拟发现职业
-
1 12×2 MTE线缆
-
1个bnc端接示波器探头
-
-
一个FAT/FAT32 USB驱动器
-
Pmod AD5模块采用AD7193模数转换器芯片
-
k热电偶
-
电路试验板
-
面包板跳线和male-to-male引脚头易于访问
-
ZIP下载在模拟发现专业版上运行一个测试脚本
-
装有下列软件的电脑:
-
Digilent波形,这里仅用于将您的模拟发现专业版进入Linux模式
-
终端仿真器,如PuTTY或TeraTerm
-
注意:对于不熟悉串口终端的用户,建议使用terterm。
演示设置
硬件设置
将示波器探头的bnc连接器插入示波器Channel 1,将MTE电缆插入数字MTE连接器。将DIO通道、地面和VIO从模拟发现专业版连接到PmodAD5如右图所示。下面提供了DIO通道连接以供参考。
-
di0连接到Pmod AD5上的引脚1
-
DIO1连接到Pmod AD5上的引脚4
-
DIO2连接到Pmod AD5上的引脚2
-
DIO3连接到Pmod AD5上的引脚3
将黄色热电偶引线连接到接头J2的引脚1上PmodAD5红色热电偶连接头J2上的引脚2。然后将BNC探针连接到黄色热电偶导线上,探针接地夹连接到红色热电偶导线上。
软件设置
中链接的项目ZIP下载库存部分,并将内容解压到USB驱动器。
将USB插头插入模拟发现专业版的背面。在终端中输入
sudo fdisk - l
查找USB设备路径。它应该是这样的/dev/sd <驱动器> <分区号>.本指南将在其文本和图像中使用/dev/sda1,并且必须小心匹配您的USB驱动器的驱动器号和分区号。
下面的下拉列表详细描述了测试脚本的内容。浏览该脚本,找到适合您自己项目的脚本所需的信息。
- 脚本的概述
-
在脚本的开始,必要的模块被导入,波形动态库被加载。
DWF Python示例版本:21-02-11 require: 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频率为6000000hzdwf。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))#开启模拟通道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))时间.睡眠(0。)#写入模式寄存器,设置平均值为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))时间.睡眠(0。)
测试通过模拟采集开始,以测量热电偶结处的电压。
随着收购的进行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读写操作,使用8位字的MOSI/MISO,使用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转换成合适的电压值,计算出采集到的样品的平均值,然后在标准输出上显示结果。
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论坛.