VADC Problem

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Not applicable
Hi Guys

I just started using the VADC-Core in my project at work. I'm using multible ADC-Groups and Channels in Scan-Mode
Group 0: Channel 0-7
Group 1: Channel 5-7
Group 2: Channel 7
Group 3: Channel 2-3.

Every Channel works fine but the Channel 1 of Group 0. This channel shows always the same value as Channel 0 of Group 0.

I have checked all the input voltages and every output channel shows the correct output value except Channel 1 of Group 0.

I couldn't find any solution to fix the problem, but to modificate the hardware to use the G1CH4 instead of G0Ch1.
With that change the G1Ch4 shows now the correct output value to the input voltage.

Do you have any suggestions?

Thank you in advance

Cheers

Sven

Here is my configuration:

VADC_GLOBAL_TypeDef *ADC_Reg = VADC;
VADC_G_TypeDef *ADC_Group[4] =
{
VADC_G0, VADC_G1, VADC_G2, VADC_G3 };

ADC_CH_Conf_t ADC_Conf[MAX_ADC_CH] =
{
{ .group = VADC_G0, .channel = 0, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 0,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(3.3 * 1.0 / 4095.0), .analogOffset = double2q(0.0) },
{ .group = VADC_G0, .channel = 1, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 1,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(3.3 * 1.0 / 4095.0), .analogOffset = double2q(0.0) },
{ .group = VADC_G0, .channel = 2, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 2,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(3.3 * 5.7 / 4095.0), .analogOffset = double2q(0.0) },
{ .group = VADC_G0, .channel = 3, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 3,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(3.3 * 2.0 / 4095.0), .analogOffset = double2q(0.0) },
{ .group = VADC_G0, .channel = 4, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 4,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(3.3 * 5.7 / 4095.0), .analogOffset = double2q(0.0) },
{ .group = VADC_G0, .channel = 5, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 5,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(3.3 * -4.59 / 4095.0), .analogOffset = double2q(2780.0) },
{ .group = VADC_G0, .channel = 6, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 6,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(3.3 * 10.915 / 4095.0), .analogOffset = double2q(0.0) },
{ .group = VADC_G0, .channel = 7, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 7,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(51.28 * 3.3 / 4095.0), .analogOffset = double2q(-496.0) },

{ .group = VADC_G1, .channel = 4, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 3,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(1.0), .analogOffset = double2q(0.0) },

{ .group = VADC_G1, .channel = 5, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 0,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(1.0), .analogOffset = double2q(0.0) },
{ .group = VADC_G1, .channel = 6, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 1,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(1.0), .analogOffset = double2q(0.0) },
{ .group = VADC_G1, .channel = 7, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 2,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(1.0), .analogOffset = double2q(0.0) },

{ .group = VADC_G2, .channel = 7, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 0,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(1.0), .analogOffset = double2q(0.0) },
//Check DAC-Level
{ .group = VADC_G3, .channel = 2, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 0,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(1.0), .analogOffset = double2q(0.0) },
{ .group = VADC_G3, .channel = 3, .reference = XMC_VADC_CHANNEL_REF_INTREF, .convMode = XMC_VADC_CONVMODE_12BIT, .convClass = XMC_VADC_CHANNEL_CONV_GROUP_CLASS0, .resultRegNumber = 1,
.resultUseGlobReg = 0, .resultAlignment = XMC_VADC_RESULT_ALIGN_RIGHT, .addToScan = 1, .analogGain = double2q(1.0), .analogOffset = double2q(0.0) } };

ADC_Scan_Conf_t Scan_Conf[MAX_ADC_GROUP] =
{
{ .group = VADC_G0, .startMode = XMC_VADC_STARTMODE_WFS, .loadMode = XMC_VADC_SCAN_LOAD_OVERWRITE, .priority = XMC_VADC_GROUP_RS_PRIORITY_1, .enAutoScan = 0, .enInterruptAfterScan = 1,
.interrruptLine = XMC_VADC_SR_GROUP_SR0, .interruptPriority = 63 },
{ .group = VADC_G1, .startMode = XMC_VADC_STARTMODE_WFS, .loadMode = XMC_VADC_SCAN_LOAD_OVERWRITE, .priority = XMC_VADC_GROUP_RS_PRIORITY_3, .enAutoScan = 0, .enInterruptAfterScan = 1,
.interrruptLine = XMC_VADC_SR_GROUP_SR0, .interruptPriority = 63 },
{ .group = VADC_G2, .startMode = XMC_VADC_STARTMODE_WFS, .loadMode = XMC_VADC_SCAN_LOAD_OVERWRITE, .priority = XMC_VADC_GROUP_RS_PRIORITY_2, .enAutoScan = 0, .enInterruptAfterScan = 1,
.interrruptLine = XMC_VADC_SR_GROUP_SR0, .interruptPriority = 63 },
{ .group = VADC_G3, .startMode = XMC_VADC_STARTMODE_WFS, .loadMode = XMC_VADC_SCAN_LOAD_OVERWRITE, .priority = XMC_VADC_GROUP_RS_PRIORITY_0, .enAutoScan = 0, .enInterruptAfterScan = 1,
.interrruptLine = XMC_VADC_SR_SHARED_SR0, .interruptPriority = 63 } };

//!Global configuration of adc unit
XMC_VADC_GLOBAL_CONFIG_t ADC_Glob_Conf =
{ .clock_config =
{ .analog_clock_divider = 4, 0, .msb_conversion_clock = 0, .arbiter_clock_divider = 1 } };

//!Global class configuration of adc unit
XMC_VADC_GLOBAL_CLASS_t ADC_Glob_Class_Conf =
{ .sample_time_std_conv = 0, .conversion_mode_standard = XMC_VADC_CONVMODE_12BIT, .sampling_phase_emux_channel = 0, .conversion_mode_emux = 0 };

//!Global result register configuration
XMC_VADC_RESULT_CONFIG_t ADC_Glob_Res_Conf =
{ .data_reduction_control = XMC_VADC_DMM_REDUCTION_MODE, .post_processing_mode = 0, .wait_for_read_mode = 0, .part_of_fifo = 0, .event_gen_enable = 0

};
//!Global group configuration
XMC_VADC_GROUP_CONFIG_t ADC_Group_Conf =
{ .class0 =
{ .conversion_mode_standard = XMC_VADC_CONVMODE_12BIT, .sample_time_std_conv = 4U, }, //
.class1 =
{ .conversion_mode_standard = XMC_VADC_CONVMODE_12BIT, .sample_time_std_conv = 4U, } };
0 Likes
3 Replies
lock attach
Attachments are accessible only for community members.
Travis
Employee
Employee
First solution authored Welcome! 500 replies posted
Hi Sei,

Please refer to this working example.
0 Likes
Not applicable
Hi Travis

Thank you for the fast response.
I was able to locate and fix my error with the help of your working example

Thanks a lot!
0 Likes
Not applicable
Hi Sei,

Could you please let us know what the problem was?

Thank you.

Regards,
Andrey
0 Likes