• 0
Antonio Fasano

XADC problem running on Arty-Z7-20

Question

Hi Guys,

I havve been trying to read  analog Inputs using the XADC input.

II used Lab3 as a starting point and defined 06 inputs. Vaux0 up to Vaux5

When I apply 0.25 V to pin A0 on teh XADC connector, I get answers like this

The Current Vaux0 is 0.016 Volts.
The Current Vaux1 is 0.285 Volts.  (It says the voltage appears on Vaux1  !!!)
The Current Vaux2 is 0.000 Volts.
The Current Vaux3 is 0.001 Volts.
The Current Vaux4 is 0.000 Volts.
The Current Vaux5 is 0.002 Volts.

 

When I apply 0.25 V to pin A1 on teh XADC connector, I get answers like this

The Current Vaux0 is 0.015 Volts.
The Current Vaux1 is 0.001 Volts.
The Current Vaux2 is 0.000 Volts.
The Current Vaux3 is 0.001 Volts.
The Current Vaux4 is 0.000 Volts.
The Current Vaux5 is 0.002 Volts.         (It reads no voltage at all !!)

When I apply 0.25 V to pin A2 on teh XADC connector, just like above, it shows no voltage

When I apply 0.25 V to pin A3 on teh XADC connector, just like above, it shows no voltage

 

When I apply 0.25 V to pin A4 on teh XADC connector:

The Current Vaux0 is 0.256 Volts.
The Current Vaux1 is 0.002 Volts.
The Current Vaux2 is 0.000 Volts.
The Current Vaux3 is 0.001 Volts.
The Current Vaux4 is 0.000 Volts.
The Current Vaux5 is 0.286 Volts.   (It says it is on both VAux0 and Vaux5 !!!!!)

 

When I apply 0.25 V to pin A5 on teh XADC connector, it shows no Voltage in any pins !!

I am using the following commands in XADC

ExtVolRawData = XSysMon_GetAdcData(SysMonInstPtr, XSM_CH_AUX_MIN);
    ExtVolData = XSysMon_RawToExtVoltage(ExtVolRawData);
    printf("The Current Vaux0 is %0d.%03d Volts. \r\n", (int)(ExtVolData), SysMonFractionToInt(ExtVolData));

    ExtVolRawData = XSysMon_GetAdcData(SysMonInstPtr, XSM_CH_AUX_MIN+1);
    ExtVolData = XSysMon_RawToExtVoltage(ExtVolRawData);
    printf("The Current Vaux1 is %0d.%03d Volts. \r\n", (int)(ExtVolData), SysMonFractionToInt(ExtVolData));

    ExtVolRawData = XSysMon_GetAdcData(SysMonInstPtr, XSM_CH_AUX_MIN+12);
    ExtVolData = XSysMon_RawToExtVoltage(ExtVolRawData);
    printf("The Current Vaux2 is %0d.%03d Volts. \r\n", (int)(ExtVolData), SysMonFractionToInt(ExtVolData));


    ExtVolRawData = XSysMon_GetAdcData(SysMonInstPtr, XSM_CH_AUX_MIN+3);
    ExtVolData = XSysMon_RawToExtVoltage(ExtVolRawData);
    printf("The Current Vaux3 is %0d.%03d Volts. \r\n", (int)(ExtVolData), SysMonFractionToInt(ExtVolData));


    ExtVolRawData = XSysMon_GetAdcData(SysMonInstPtr, XSM_CH_AUX_MIN+4);
    ExtVolData = XSysMon_RawToExtVoltage(ExtVolRawData);
    printf("The Current Vaux4 is %0d.%03d Volts. \r\n", (int)(ExtVolData), SysMonFractionToInt(ExtVolData));


    ExtVolRawData = XSysMon_GetAdcData(SysMonInstPtr, XSM_CH_AUX_MIN+5);
    ExtVolData = XSysMon_RawToExtVoltage(ExtVolRawData);
    printf("The Current Vaux5 is %0d.%03d Volts. \r\n", (int)(ExtVolData), SysMonFractionToInt(ExtVolData));
 

 

I am using VIVADO 2018.1

I have configured the XADC Wizard as per the pictures below. Has anyone seen this strange behaviour so far ?

Thanks

Antonio

 

1724995402_XADCWIZARD.png.3b040b695b7ee3b6c0ef76aefd6cecb2.png1658904103_XADCWIZARD3.png.b6eadaecb4790053435b6dacb9194ecb.png

1954544919_XADCWIZARD2.thumb.png.a31eff3727624bfcabb182b6ccf53126.png2146936490_XADCWIZARD5.thumb.png.d3629bf3ff870eef6976bbff84f87560.png

 

 

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Hi @Antonio Fasano,

Here is the HDL XADC Arty-Z7-20 demo. As it shows in the demo's wiki page only a few of the vaux channels are available to use on the XADC. They would be 12, 0, and 8. You can see this on the schematic here on page 9 bank 35.  can you please  attach a screen shot of  your block design , wrapper and xdc files. Here is a forum thread that uses the XADC in the PS on the zedboard. It has a complete project attached in the thread that could be a good reference for your project.

thank you,

Jon

Share this post


Link to post
Share on other sites
  • 0

Hi Jon,

 

I just checked unchecked all others and checked VAUX0 VAUX8 and VAUX12 and the project ran without problems. I thought the readable analog voltage range would be from 0 to 2.5V, but it actually reads from 0V to 1V and clips outside that range ...  But it works ...

Thank you once again !!

Antonio

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now