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

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

板上的电压,如下图所示

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

在底板上就是这两个脚了

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

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

四个测试点的电压),这里我只是进行单通道的连续采集模式。(这里模式和寄存器的配置请参考xilinx的ug480和pg091手册)

step1 调用一个zynq核并且配置

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

step2 调用一个xadc核并且配置

配置xadc

这里全部都不勾选

配置完成后如下图所示

引出Vp和Vn管脚

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

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

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

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

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

新建fsbl

step5  新建一个xadc_test工程

使用hello_world工程模板

主程序

/*
 * 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;
}

生成一个BOOT.bin文件

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

Vp接的第一个测试点

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

第三个测试点100mv左右

第四个测试点135mv左右

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

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

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

  • 8
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 37
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值