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文件,因为这里是两个专用的管脚,这里只需约束电压就可以了


   
   
  1. set_property IOSTANDARD LVCMOS 33 [get_ports Vp_Vn_v_n]
  2. set_property IOSTANDARD LVCMOS 33 [get_ports Vp_Vn_v_p]

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

新建fsbl

step5  新建一个xadc_test工程

使用hello_world工程模板

主程序


   
   
  1. /*
  2. * main.c
  3. */
  4. #include "xsysmon.h"
  5. #include "xparameters.h"
  6. #include "xstatus.h"
  7. #include "xil_exception.h"
  8. #include "xil_printf.h"
  9. #include "sleep.h"
  10. #define XPAR_AXI_XADC_0_DEVICE_ID 0
  11. #define C_BASEADDR 0x43C00000
  12. int main()
  13. {
  14. u16 data;
  15. u32 data1;
  16. Xil_Out32(C_BASEADDR + 0x300 , 0x9103); //40
  17. Xil_Out32(C_BASEADDR + 0x304 , 0x3F0F); //41
  18. Xil_Out32(C_BASEADDR + 0x308 , 0x0400); //42
  19. Xil_Out32(C_BASEADDR + 0x320 , 0x800); //48
  20. while( 1)
  21. {
  22. data = Xil_In32(C_BASEADDR + 0x20C);
  23. data = data >> 4;
  24. data = data* 0.244;
  25. xil_printf( "data = %03dmv\n\r",data);
  26. sleep( 2);
  27. }
  28. return 0;
  29. }

生成一个BOOT.bin文件

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

Vp接的第一个测试点

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

第三个测试点100mv左右

第四个测试点135mv左右

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

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

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

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值