【Zynq】【XADC】Zynq使用XADC测量外部电压

简介

Zynq内部自带的XADC硬核,可用于测量和监控内部重要节点的电压和芯片温度等,并且还带有外部引脚可测量外部电压,其分辨率为12bit,单端测量范围为0~1V

工程配置

(1)添加PS端IP核,使用常规配置,并添加串口外设

(2)添加XADC IP核,其它保持默认,只修改通道为VAUX2

image.png

(3)自动连线,并引出Vaux端口

image.png

(4)引脚分配,由于XADC是硬核,管脚已经固定,因此这里只能选择以下两个管脚

image.png

(5)生成比特流并导出hdf文件

image.png

软件代码

创建SDK工程,在工程中新建main.c文件,将以下代码拷贝到main.c文件中

#include "xparameters.h"
#include "xadcps.h"
#include "stdio.h"
#include "sleep.h"

static XAdcPs XAdcInst;
static XAdcPs_Config *ConfigPtr;

int main()
{
        u16 ADC_Data;
        float Voltage;

        //初始化XAdc驱动
        ConfigPtr = XAdcPs_LookupConfig(XPAR_XADCPS_0_DEVICE_ID);
        XAdcPs_CfgInitialize(&XAdcInst, ConfigPtr,ConfigPtr->BaseAddress);

        XAdcPs_SetSequencerMode(&XAdcInst, XADCPS_SEQ_MODE_SAFE);
        XAdcPs_SetSeqChEnables (&XAdcInst, XADCPS_SEQ_CH_AUX02);
        XAdcPs_SetSequencerMode (&XAdcInst, XADCPS_SEQ_MODE_CONTINPASS);

        while(1)
        {
                ADC_Data = XAdcPs_GetAdcData(&XAdcInst, XADCPS_AUX02_OFFSET);
                Voltage = ADC_Data*1.0f/65536.0f;
                printf("The Current Voltage is %.3f Volts. \n",Voltage);
                sleep(1);
         }

        return 0;
}

保存并编译之后,将程序和比特流下载到开发板

验证设计

(1)将开发板串口连接到电脑并打开“SDK Terminal”连接串口,波特率为115200

image.png

(2)使用两根杜邦线连接开发板的PL端扩展口,红色接正极,黑色接负极或地

image.png

(3)这里我接的是一台直流稳压电源,设置为0.6V左右

image.png

(4)串口每隔一秒打印一次电压,测量的很准,也比较稳定

image.png


-----------------------------附件已置顶------------------------


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值