简介
Zynq内部自带的XADC硬核,可用于测量和监控内部重要节点的电压和芯片温度等,并且还带有外部引脚可测量外部电压,其分辨率为12bit,单端测量范围为0~1V
工程配置
(1)添加PS端IP核,使用常规配置,并添加串口外设
(2)添加XADC IP核,其它保持默认,只修改通道为VAUX2
(3)自动连线,并引出Vaux端口
(4)引脚分配,由于XADC是硬核,管脚已经固定,因此这里只能选择以下两个管脚
(5)生成比特流并导出hdf文件
软件代码
创建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
(2)使用两根杜邦线连接开发板的PL端扩展口,红色接正极,黑色接负极或地
(3)这里我接的是一台直流稳压电源,设置为0.6V左右
(4)串口每隔一秒打印一次电压,测量的很准,也比较稳定
附件 |