玩转Zynq连载39 | 您所在的位置:网站首页 › vivado生成模块图diagram › 玩转Zynq连载39 |
特权同学玩转Zynq连载39——[ex58] 基于Zynq的XADC采集控制实例
2 电压换算关系 模拟电压值换算 对于1个独立的模拟电压输入通道(VP_0/VN_0)和16个复用的模拟电压输入通道(VAUXP/VAUXN),它的输入范围是0~1V,参考电压1V。因此它读出的数据和实际电压值之间的换算关系如下: 对于12bit的ADC值,Vactual = Vdigital/4096 对于16bit的ADC值,Vactual = Vdigital/65536 温度值换算 从XADC的温度传感器读出的温度值,通过以下公式可以换算为实际的摄氏温度: 对于12bit的ADC值,Tactual = Tdigital503.975/4096 – 273.15 对于16bit的ADC值,Tactual = Tdigital503.975/65536 – 273.15 供电电压的换算公式 对于XADC中供电传感器读取的供电电压值,其量程范围是0~3V,参考电压3V。所以读取的值与实际电压之间的换算关系如下: 对于12bit的ADC值,Vactual = Vdigital3/4096 对于16bit的ADC值,Vactual = Vdigital3/65536 3 XADC IP添加与配置 在zstar_ex56工程实例的基础上,下面我们看看如何对XADC IP进行添加和配置。在Block Design的Diagram页面空白处单击右键,如图所示,点击Add IP…。 4嵌入式软件编程 参考文档《玩转Zynq-工具篇:导出PS硬件配置和新建SDK工程.pdf》导出PS硬件工程,并打开EDK新建一个HelloWorld的模板工程。 重新编辑helloworld.c源码如下。在系统初始化(init_platform)后,依次读取XADC的温度采样值并转成实际温度值打印、读取XADC的VCCINT采样值并转成实际电压值打印、读取XADC的VCCAUX采样值并转成实际电压值打印、读取XADC的VP/VN采样值并转成实际电压值打印、读取XADC的VBRAM采样值并转成实际电压值打印。每隔5s做一次读取打印操作。 #include #include “platform.h” #include “xil_printf.h” #include “sleep.h” #include “xil_io.h” #define XPAR_AXI_GP0_BASEADDR 0x43c00000 #define XPAR_XADC_TEMPERATURE 0x200 #define XPAR_XADC_VCCINT 0x204 #define XPAR_XADC_VCCAUX 0x208 #define XPAR_XADC_VPVN 0x20c #define XPAR_XADC_VBRAM 0x218 int main() { u32 temp; float voltage; init_platform(); printf(“XADC TEST\n\r”); while(1) { printf("\n\r"); temp = Xil_In32(XPAR_AXI_GP0_BASEADDR + XPAR_XADC_TEMPERATURE); temp = temp*503.975/65535 - 273.15; printf(“Temperature is %d degree\n\r”,temp); voltage = Xil_In32(XPAR_AXI_GP0_BASEADDR + XPAR_XADC_VCCINT); voltage = voltage/65536*3;printf(“VCCINT is %f\n\r”,voltage); voltage = Xil_In32(XPAR_AXI_GP0_BASEADDR + XPAR_XADC_VCCAUX); voltage = voltage/65536*3;printf(“VCCAUX is %f\n\r”,voltage); voltage = Xil_In32(XPAR_AXI_GP0_BASEADDR + XPAR_XADC_VPVN); voltage = voltage/65536;printf(“VPVN is %f\n\r”,voltage); voltage = Xil_In32(XPAR_AXI_GP0_BASEADDR + XPAR_XADC_VBRAM); voltage = voltage/65536*3;printf(“VBRAM is %f\n\r”,voltage); sleep(5); }cleanup_platform(); return 0; } 5 板级调试 在Zstar板子上,设置跳线帽P3为JTAG模式,即PIN2-3短接。 连接好串口线(USB线连接PC的USB端口和Zstar板的UART接口)和Xilinx下载线(下载器连接PC的USB端口和Zstar板的JTAG插座)。使用5V电源给板子供电。 接着参考《玩转Zynq-工具篇:SDK在线运行裸跑程序.pdf》将zstar.bit文件和helloworld.elf文件烧录到Zynq中运行起来。 打开Putty,并设置好串口,可以看到如图缩回,每隔5s不断的打印采样到的当前温度和电压值。温度传感器在FPGA器件内部,因此采样到的Temperature值达到了52°C。 |
CopyRight 2018-2019 实验室设备网 版权所有 |