YTM32B1L05, 上下电测试中,ADC输出值异常。
-
问题:
YTM32B1L05, 上下电测试中,会随机的出现ADC输出值异常情况。
故障出现后,不断电,故障会一直保持,断电再上电故障消失。debug获取DMA目标地址数据发现,出现大量连续的 2048/1023 数值。中间掺杂几个正常的数据。

ADC模块使用简介:
1)先 pTMR 触发 ADC采样0或1通道 DMA搬运,250组数据,再 pTMR 触发 ADC采样3或5通道 DMA搬运 1000组数据。
2)每500ms,执行1次 1)操作。基本配置
ADC模块配置/* adc_config0 */
const adc_converter_config_t adc_config0={
.clockDivider=0,
.startTime=48,
.sampleTime=200,
.overrunMode=false,
.autoOffEnable=false,
.waitEnable=false,
.trigger=ADC_TRIGGER_HARDWARE,
.align=ADC_ALIGN_RIGHT,
.resolution=ADC_RESOLUTION_12BIT,
.dmaWaterMark=1,
.dmaEnable=true,
.sequenceConfig={
.sequenceMode=ADC_CONV_LOOP,
.sequenceIntEnable=false,
.convIntEnable=false,
.readyIntEnable=false,
.ovrunIntEnable=false,
.sampIntEnable=false,
.channels={
ADC_INPUTCHAN_EXT3,
ADC_INPUTCHAN_EXT5,
},
.totalChannels=2,
},
.compareConfig={
.compareEnable=false,
.compareAllChannelEnable=false,.compHigh=4095, .compLow=0, .compIntEnable=false, },};
/* adc_config1 */
const adc_converter_config_t adc_config1={
.clockDivider=0,
.startTime=48,
.sampleTime=200,
.overrunMode=false,
.autoOffEnable=false,
.waitEnable=false,
.trigger=ADC_TRIGGER_HARDWARE,
.align=ADC_ALIGN_RIGHT,
.resolution=ADC_RESOLUTION_12BIT,
.dmaWaterMark=1,
.dmaEnable=true,
.sequenceConfig={
.sequenceMode=ADC_CONV_LOOP,
.sequenceIntEnable=false,
.convIntEnable=false,
.readyIntEnable=false,
.ovrunIntEnable=false,
.sampIntEnable=false,
.channels={
ADC_INPUTCHAN_EXT1,
ADC_INPUTCHAN_EXT0,
},
.totalChannels=2,
},
.compareConfig={
.compareEnable=false,
.compareAllChannelEnable=false,.compHigh=4095, .compLow=0, .compIntEnable=false, },};
DMA模块配置
dma_loop_transfer_config_t adcTransferConfigLoopConfig = {
.triggerLoopIterationCount=1000,
.srcOffsetEnable=false,
.dstOffsetEnable=true,
.triggerLoopOffset=0,
.transferLoopChnLinkEnable=false,
.transferLoopChnLinkNumber=0,
.triggerLoopChnLinkEnable=false,
.triggerLoopChnLinkNumber=0,
};dma_transfer_config_t adcTransferConfig = {
.srcAddr=(uint32_t)0,
.destAddr=(uint32_t)0,
.srcOffset=0,
.destOffset=0x02U,
.srcTransferSize=DMA_TRANSFER_SIZE_2B,
.destTransferSize=DMA_TRANSFER_SIZE_2B,
.srcModulo=DMA_MODULO_OFF,
.destModulo=DMA_MODULO_OFF,
.transferLoopByteCount=4,
.srcLastAddrAdjust=4,
.destLastAddrAdjust=-4,
.interruptEnable=true,
.loopTransferConfig=&adcTransferConfigLoopConfig,
};
pTMR 配置
const ptmr_user_channel_config_t ptmr_channel_0={
.periodUnits=pTMR_PERIOD_UNITS_COUNTS,
.period=625,
.chainChannel=false,
.isInterruptEnabled=false,
};时钟频率
内核&DMA 48M
ADC = 16M
pTMR = 8MADC链路配置

ADC链路启动

快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...