MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压

开发板环境:vivado 2017.1 ,开发板型号xc7z020clg400-1,这里主要实现的功能是用xadc的Vp和Vn来测量我们输入到开发

板上的电压,如下图所示

工程链接:https://pan.baidu.com/s/1JFJOHf84dn6Yf2OWi3oYhw       提取码:54a6 
 

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第1张图片

在底板上就是这两个脚了

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第2张图片

并且我焊接了一个3.3v电源的一个简单分压电路,因这个xadc的测量电压范围只有1V,所以你自己做的分压

电路不要超过1V,因没有滑动变阻器所以只能手动焊接,虽然焊接得不好还能凑合(这里一共有16个测试点,我这里只测试

四个测试点的电压),这里我只是进行单通道的连续采集模式。(这里模式和寄存器的配置请参考xilinx的ug480和pg091手册)MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第3张图片

 

step1 调用一个zynq核并且配置

 

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第4张图片

如果不会配置我的工程里面提供一个配置文件大家导入就可以了

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第5张图片

step2 调用一个xadc核并且配置

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第6张图片

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第7张图片

配置xadc

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第8张图片

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第9张图片

这里全部都不勾选

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第10张图片

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第11张图片

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第12张图片

配置完成后如下图所示

 

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第13张图片

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第14张图片

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第15张图片

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第16张图片

引出Vp和Vn管脚

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第17张图片

这里分配的地址之后SDK里配置时会用到

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第18张图片

step3 综合、生成顶层文件、生成bit文件

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第19张图片

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第20张图片

xdc文件,因为这里是两个专用的管脚,这里只需约束电压就可以了

set_property IOSTANDARD LVCMOS33 [get_ports Vp_Vn_v_n]
set_property IOSTANDARD LVCMOS33 [get_ports Vp_Vn_v_p]

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第21张图片

step4 导出硬件配置、打开SDK、新建fsbl

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第22张图片

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第23张图片

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第24张图片

新建fsbl

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第25张图片

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第26张图片

step5  新建一个xadc_test工程

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第27张图片

使用hello_world工程模板

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第28张图片

主程序

/*
 * main.c
 */
#include "xsysmon.h"
#include "xparameters.h"
#include "xstatus.h"
#include "xil_exception.h"
#include "xil_printf.h"
#include "sleep.h"

#define XPAR_AXI_XADC_0_DEVICE_ID 0

#define C_BASEADDR 0x43C00000



int main()
{

  u16 data;
  u32 data1;


       Xil_Out32(C_BASEADDR +  0x300 , 0x9103);  //40
       Xil_Out32(C_BASEADDR +  0x304 , 0x3F0F);//41
       Xil_Out32(C_BASEADDR +  0x308 , 0x0400);//42
       Xil_Out32(C_BASEADDR +  0x320 , 0x800); //48

		while(1)
		{

			data = Xil_In32(C_BASEADDR +  0x20C);
			data = data >> 4;
			data = data*0.244;
			xil_printf("data = %03dmv\n\r",data);

			sleep(2);
		 }

		return 0;
}

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第29张图片

生成一个BOOT.bin文件

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第30张图片

四个测试点的电压如下图所示

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第31张图片

Vp接的第一个测试点

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第32张图片

切换到第二个测试点电压为70mv左右

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第33张图片

第三个测试点100mv左右

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第34张图片

第四个测试点135mv左右

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第35张图片

最后我们断开所有的测试点将Vp悬空

可以看到我悬空了后这个管脚可以采集到电压为667mv左右,我用数字万用表测试这个悬空的电压为500多mv和这测量也比较接近

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第36张图片

这个是将Vp接地后测量的电压,可以看到接地后这个Vp电压比较低为5mv左右,这就是这个xadc的所有的测量结果

MYIR-ZYNQ7000系列-zturn教程(21):用开发板上xadc的Vp和Vn测量输入的电压_第37张图片

你可能感兴趣的:(ZYNQ7000)