主页 > 软件开发  > 

8-PSXADC接口实验

8-PSXADC接口实验

文章目录 1 实验任务2 系统框图3 软件设计

1 实验任务

本实验任务是通过PS侧的XADC接口,读取PL侧的XADC硬核测量的芯片温度、供电电压等信息, 并通过串口打印出来。

2 系统框图

3 软件设计

注意事项:无。

/***************************** Include Files ********************************/ #include "stdio.h" #include "xparameters.h" #include "xadcps.h" #include "xstatus.h" #include "sleep.h" /************************** Constant Definitions ****************************/ #define XADC_DEVICE_ID XPAR_XADCPS_0_DEVICE_ID /**************************** Type Definitions ******************************/ /***************** Macros (Inline Functions) Definitions ********************/ /************************** Function Prototypes *****************************/ int XadcInit(XAdcPs* XadcInstPtr); /************************** Variable Definitions ****************************/ XAdcPs XadcInst; /****************************************************************************/ int XadcInit(XAdcPs* XadcInstPtr) { // int Status; XAdcPs_Config* XadcConfigPtr; // XadcConfigPtr = XAdcPs_LookupConfig(XPAR_XADCPS_0_DEVICE_ID); if (XadcConfigPtr == NULL) { return XST_FAILURE; } Status = XAdcPs_CfgInitialize(XadcInstPtr, XadcConfigPtr, XadcConfigPtr->BaseAddress); if (Status != XST_SUCCESS) { return XST_FAILURE; } // XAdcPs_SetSequencerMode(XadcInstPtr, XADCPS_SEQ_MODE_SAFE); // return XST_SUCCESS; } int main() { // int Status; u32 TempRawData; // 温度 原始数据 u32 VccPintRawData; // PS侧内核电压 原始数据 u32 VccPauxRawData; // PS侧辅助电压 原始数据 u32 VccoDdrRawData; // PS侧DDR电压 原始数据 u32 VccIntRawData; // PL侧内核电压 原始数据 u32 VccAuxRawData; // PL侧辅助电压 原始数据 u32 VccBramRawData; // PL侧BRAM电压 原始数据 float TempRealData; // 温度 真实数据 float VccPintRealData; // PS侧内核电压 真实数据 float VccPauxRealData; // PS侧辅助电压 真实数据 float VccoDdrRealData; // PS侧DDR电压 真实数据 float VccIntRealData; // PL侧内核电压 真实数据 float VccAuxRealData; // PL侧辅助电压 真实数据 float VccBramRealData; // PL侧BRAM电压 真实数据 // printf("PS XADC Test\n"); // Status = XadcInit(&XadcInst); if (Status == XST_FAILURE) { printf("PS XADC Initialization Failed.\n"); } // while(1) { sleep(5); // printf("\n\n"); // 获取温度 TempRawData = XAdcPs_GetAdcData(&XadcInst, XADCPS_CH_TEMP); TempRealData = XAdcPs_RawToTemperature(TempRawData); printf("温度 = %f C.\n", TempRealData); // 获取PS侧内核电压 VccPintRawData = XAdcPs_GetAdcData(&XadcInst, XADCPS_CH_VCCPINT); VccPintRealData = XAdcPs_RawToVoltage(VccPintRawData); printf("PS侧内核电压\t\t= %.3f V.\n", VccPintRealData); // 获取PS侧辅助电压 VccPauxRawData = XAdcPs_GetAdcData(&XadcInst, XADCPS_CH_VCCPAUX); VccPauxRealData = XAdcPs_RawToVoltage(VccPauxRawData); printf("PS侧辅助电压\t\t= %.3f V.\n", VccPauxRealData); // 获取PS侧DDR电压 VccoDdrRawData = XAdcPs_GetAdcData(&XadcInst, XADCPS_CH_VCCPDRO); VccoDdrRealData = XAdcPs_RawToVoltage(VccoDdrRawData); printf("PS侧DDR电压\t\t= %.3f V.\n", VccoDdrRealData); // 获取PL侧内核电压 VccIntRawData = XAdcPs_GetAdcData(&XadcInst, XADCPS_CH_VCCINT); VccIntRealData = XAdcPs_RawToVoltage(VccIntRawData); printf("PL侧内核电压\t\t= %.3f V.\n", VccIntRealData); // 获取PL侧辅助电压 VccAuxRawData = XAdcPs_GetAdcData(&XadcInst, XADCPS_CH_VCCAUX); VccAuxRealData = XAdcPs_RawToVoltage(VccAuxRawData); printf("PL侧辅助电压\t\t= %.3f V.\n", VccAuxRealData); // 获取PL侧BRAM电压 VccBramRawData = XAdcPs_GetAdcData(&XadcInst, XADCPS_CH_VBRAM); VccBramRealData = XAdcPs_RawToVoltage(VccBramRawData); printf("PL侧BRAM电压\t= %.3f V.\n", VccBramRealData); } // return 0; }
标签:

8-PSXADC接口实验由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“8-PSXADC接口实验