当前位置:   article > 正文

53_ZYNQ7020开发板SDK_逻辑XADC的使用_zynq7020 xadc

zynq7020 xadc

实现Vivado工程为"ps_xadc"
ZYNQ7020的XADC内嵌在PS端,容许CPU或其他主机连接XADC,而不用使用PL端。XADC最大采样率为1MSPS,精度为12bits,内置电压和温度传感器,可监测芯片的电压及温度信息。
电压传感器可监测芯片的有VCCINT、VCCAUX、VCCBRAM等,VP_0和VN_0为一对专用的ADC模拟输入口。VAUXP[*]和VAUXN[]也是ADC输入口,但是不用做ADC输入口时,可用作普通IO使用。在AX7015/AX7021/AX7010/AX7020/AX7Z035/AX7Z100开发板上这些引脚均未引出。因此本实验主要测量温度传感器Temperature Sensor以及电压传感器Supply Sensors的值。
本实验介绍三种读取传感器信息的值的方法。首先需要新建Vivado工程,同样以"ps_hello",工程为基础,另存一个工程。
在这里插入图片描述
一、打开工程,连接好开发板电源,JTAG下载器,并将开发板调整为JTAG模式,开发板上电,点击
Open Hardware Manager,再点击Auto Connect,发现硬件。
在这里插入图片描述
二、右键选择XADC,新建Dashboard
在这里插入图片描述
修改名称,点击OK
在这里插入图片描述

默认会有温度
在这里插入图片描述
点击+将电压值添加到窗口
在这里插入图片描述
显示如下
在这里插入图片描述
此方法优点是图形化显示,较为直观,但缺点是无法得到数据值。下面介绍PS读取XADC信息。

三、打开SDK,新建应用程序名字为"ps_xadc_test”
在这里插入图片描述
在这里插入图片描述
main.c

/* ------------------------------------------------------------ */
/*				Include File Definitions						*/
/* ------------------------------------------------------------ */

#include <stdio.h>
#include "xil_printf.h"
#include "xadcps.h"
#include "sleep.h"
#include "xscugic.h"

#define ADC_DEVICE_ID     XPAR_PS7_XADC_0_DEVICE_ID

XAdcPs XAdc ;

int main()
{
    u16 raw_data ;

    float Temp ;
    float vccint ;
    float vccaux ;
    float vccbram ;
    float vccpint ;
    float vccpaux ;
    float vccpdro ;

    XAdcPs_Config *Config ;
    int Status ;


   Config = XAdcPs_LookupConfig(ADC_DEVICE_ID) ;

   Status = XAdcPs_CfgInitialize(&XAdc, Config, Config->BaseAddress) ;
   if (Status != XST_SUCCESS)
         return XST_FAILURE ;


    while(1)
    {
    	raw_data = XAdcPs_GetAdcData(&XAdc, XADCPS_CH_TEMP) ;
    	Temp = XAdcPs_RawToTemperature(raw_data) ;
    	raw_data = XAdcPs_GetAdcData(&XAdc, XADCPS_CH_VCCINT) ;
    	vccint = XAdcPs_RawToVoltage(raw_data) ;
    	raw_data = XAdcPs_GetAdcData(&XAdc, XADCPS_CH_VCCAUX) ;
    	vccaux = XAdcPs_RawToVoltage(raw_data) ;
    	raw_data = XAdcPs_GetAdcData(&XAdc, XADCPS_CH_VBRAM) ;
    	vccbram = XAdcPs_RawToVoltage(raw_data) ;
    	raw_data = XAdcPs_GetAdcData(&XAdc, XADCPS_CH_VCCPINT) ;
    	vccpint = XAdcPs_RawToVoltage(raw_data) ;
    	raw_data = XAdcPs_GetAdcData(&XAdc, XADCPS_CH_VCCPAUX) ;
    	vccpaux = XAdcPs_RawToVoltage(raw_data) ;
    	raw_data = XAdcPs_GetAdcData(&XAdc, XADCPS_CH_VCCPDRO) ;
    	vccpdro = XAdcPs_RawToVoltage(raw_data) ;
    	printf("Temperature : %.2fC\t\nVCCINT : %.2fV\t\nVCCAUX : %.2fV\t\n"
    			"VBRAM : %.2fV\t\nVCCPINT : %.2fV\t\nVCCPAUX : %.2fV\t\nVCCPDRO : %.2fV\t\n", Temp, vccint, vccaux ,vccbram,vccpint, vccpaux,vccpdro) ;
    	sleep(1) ;
    }
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

点击Run Configure
在这里插入图片描述
点击run
在这里插入图片描述
连接好串口,COM2,波特率115200
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/509928
推荐阅读
相关标签
  

闽ICP备14008679号