55 #include "IfxVadc_bf.h"
59 #include "IfxCcu6_reg.h"
60 #include "IfxCcu6_bf.h"
1708 group->QINR0.U = channel | options;
1716 ticks = (
uint32)(sampleTime * analogFrequency) - 2;
1720 ticks = (ticks / 16) + 15;
1723 ticks =
__minu(ticks, 0xFFu);
1731 vadcG->REFCLR.U = 0x0000FFFF
u;
1737 vadcG->CEFCLR.U = 1 << channelId;
1743 vadcG->QMR0.B.FLUSH = flushQueue;
1749 group->RCR[resultIdx].B.WFR = waitForRead;
1755 vadc->GLOBRCR.B.WFR = waitForRead;
1763 vadc->CLC.B.DISR = 1;
1770 vadcG->QMR0.B.ENTR = 0;
1776 vadcG->ASMR.B.ENTR = 0;
1782 vadc->BRSMR.B.ENTR = 1;
1788 vadcG->RCR[resultRegister].B.FEN = fifoMode;
1797 vadc->CLC.U = 0x00000000;
1804 vadcG->QMR0.B.ENTR = 1;
1810 vadcG->ASMR.B.ENTR = 1;
1816 vadcG->RCR[resultRegister].B.SRGEN = 1;
1823 status = vadc->G[adcCalGroupNum].ARBCFG.B.CAL;
1836 Ifx_VADC_G_CHASS assignChannels;
1837 assignChannels.U = vadcG->CHASS.U;
1838 return assignChannels;
1880 Ifx_VADC_CHCTR tempChctr;
1881 tempChctr.U = vadcG->CHCTR[channelIndex].U;
1894 Ifx_VADC_G_REVNP0 resultServiceRequestNodePtr0;
1895 resultServiceRequestNodePtr0.U = vadcG->REVNP0.U;
1896 return resultServiceRequestNodePtr0;
1902 Ifx_VADC_G_REVNP1 resultServiceRequestNodePtr1;
1903 resultServiceRequestNodePtr1.U = vadcG->REVNP1.U;
1904 return resultServiceRequestNodePtr1;
1910 Ifx_VADC_G_CEVNP0 serviceRequestNodePtr;
1911 serviceRequestNodePtr.U = vadcG->CEVNP0.U;
1912 return serviceRequestNodePtr;
1918 Ifx_VADC_G_CEVNP1 serviceRequestNodePtr;
1919 serviceRequestNodePtr.U = vadcG->CEVNP1.U;
1920 return serviceRequestNodePtr;
1950 Ifx_VADC_GLOBCFG globCfg;
1951 globCfg.U = vadc->GLOBCFG.U;
1964 Ifx_VADC_GLOBRES tmpGlobalResult;
1966 tmpGlobalResult.U = vadc->GLOBRES.U;
1968 return tmpGlobalResult;
1974 uint32 sampleTime = vadc->GLOBICLASS[inputClassNum].B.STCS;
1976 if (sampleTime > 16)
1978 sampleTime = (sampleTime - 15) * 16;
1995 for (idx = 0; idx < numResults; idx++)
1997 results[idx].U = group->RES[resultOffset + idx].U;
2004 uint32 sampleTime = vadcG->ICLASS[inputClassNum].B.STCS;
2006 if (sampleTime > 16)
2008 sampleTime = (sampleTime - 15) * 16;
2017 uint8 masterIndex = 0;
2018 masterIndex = vadcG->SYNCTR.B.STSEL;
2061 Ifx_VADC_RES tmpResult;
2063 tmpResult.U = group->RES[resultIdx].U;
2107 return (
boolean)vadc->GLOBCFG.B.SUCAL;
2127 vadc->GLOBCFG.B.SUCAL = 1;
2133 return (
boolean)vadc->BRSMR.B.SCAN;
2139 return (
boolean)vadcG->ASMR.B.SCAN;
2145 return (
boolean)vadcG->ARBPR.B.ASEN2;
2151 return (
boolean)vadcG->ARBPR.B.ASEN0;
2157 return (
boolean)vadcG->ARBPR.B.ASEN1;
2169 vadcG->ARBCFG.B.ANONC = analogConverterMode;
2175 vadcG->ARBCFG.B.ARBRND = arbiterRoundLength;
2181 vadc->BRSMR.B.SCAN = autoBackgroundScanEnable;
2187 vadcG->ASMR.B.SCAN = autoscanEnable;
2193 vadcG->CHASS.U &= ~(1 << channelIndex);
2199 vadcG->CHCTR[channelIndex].B.RESTBS = globalResultUsage;
2205 channels = (vadc->BRSSEL[groupId].U & ~mask) | channels;
2206 vadc->BRSSEL[groupId].U = channels;
2212 Ifx_VADC_BRSCTRL brsctrl;
2213 brsctrl.U = vadc->BRSCTRL.U;
2215 brsctrl.B.GTSEL = gatingSource;
2216 vadc->BRSCTRL.U = brsctrl.U;
2217 vadc->BRSMR.B.ENGT = gatingMode;
2223 Ifx_VADC_BRSCTRL brsctrl;
2224 brsctrl.U = vadc->BRSCTRL.U;
2226 brsctrl.B.XTMODE = triggerMode;
2227 brsctrl.B.XTSEL = triggerSource;
2228 vadc->BRSCTRL.U = brsctrl.U;
2234 vadcG->CHCTR[channelIndex].B.BNDSELX = boundaryMode;
2240 vadcG->CEVNP0.U &= ~(IFX_VADC_G_CEVNP0_CEV0NP_MSK << (channel * 4));
2241 vadcG->CEVNP0.U |= (channelSrcNr << (channel * 4));
2247 vadcG->CEVNP1.U &= ~(IFX_VADC_G_CEVNP1_CEV8NP_MSK << (channel * 4));
2248 vadcG->CEVNP1.U |= (channelSrcNr << (channel * 4));
2254 vadcG->CHCTR[channelIndex].B.ICLSEL = inputClass;
2260 vadcG->CHCTR[channelIndex].B.CHEVMODE = limitCheck;
2266 vadc->GLOBICLASS[inputClassNum].B.CME = resolution;
2278 vadcG->ICLASS[inputClassNum].B.CME = resolution;
2292 vadc->EMUXSEL.B.EMUXGRP0 = group;
2296 vadc->EMUXSEL.B.EMUXGRP1 = group;
2303 vadc->GLOBICLASS[inputClassNum].B.CMS = resolution;
2315 vadcG->CHASS.U |= (1 << channelIndex);
2321 vadcG->ICLASS[inputClassNum].B.CMS = resolution;
2333 vadcG->CHCTR[channelIndex].B.BNDSELL = lowerBoundary;
2339 vadcG->SYNCTR.B.STSEL = (masterIndex % 4);
2340 vadcG->SYNCTR.U |= (0x00000008U << (masterIndex % 4));
2346 Ifx_VADC_G_QCTRL0 qctrl0;
2347 qctrl0.U = vadcG->QCTRL0.U;
2349 qctrl0.B.GTSEL = gatingSource;
2350 vadcG->QCTRL0.U = qctrl0.U;
2351 vadcG->QMR0.B.ENGT = gatingMode;
2357 Ifx_VADC_G_QCTRL0 qctrl0;
2358 qctrl0.U = vadcG->QCTRL0.U;
2360 qctrl0.B.XTMODE = triggerMode;
2361 qctrl0.B.XTSEL = triggerSource;
2362 vadcG->QCTRL0.U = qctrl0.U;
2368 vadcG->CHCTR[channelIndex].B.REFSEL = reference;
2374 vadcG->REVNP0.U &= ~(IFX_VADC_G_REVNP0_REV0NP_MSK << (resultRegister * 4));
2375 vadcG->REVNP0.U |= (resultSrcNr << (resultRegister * 4));
2388 vadcG->CHCTR[channelIndex].B.RESPOS = rightAlignedStorage;
2394 Ifx_VADC_G_ASCTRL asctrl;
2395 asctrl.U = vadcG->ASCTRL.U;
2397 asctrl.B.GTSEL = gatingSource;
2398 vadcG->ASCTRL.U = asctrl.U;
2399 vadcG->ASMR.B.ENGT = gatingMode;
2405 Ifx_VADC_G_ASCTRL asctrl;
2406 asctrl.U = vadcG->ASCTRL.U;
2408 asctrl.B.XTMODE = triggerMode;
2409 asctrl.B.XTSEL = triggerSource;
2410 vadcG->ASCTRL.U = asctrl.U;
2418 vadc->CLC.B.EDIS = mode;
2425 vadcG->CHCTR[channelIndex].B.SYNC = synchonize;
2431 vadcG->CHCTR[channelIndex].B.BNDSELU = upperBoundary;
2437 vadc->BRSMR.B.LDEV = 1;
2443 group->QMR0.B.TREV = 1;
2449 group->ASMR.B.LDEV = 1;
2455 vadcG->CHCTR[channelIndex].B.RESREG = resultRegister;