stm32h743 ADC+DMA 采样时间出现问题

2019-07-20 01:11发布

已经在板子上实现了ADC+DMA,但发现一个问题,就是ADC+DMA只工作在采样时间为810.5个adc时钟周期,程序如下:  sConfig.Channel =  ADC_CHANNEL_15;  sConfig.Rank = 1;
sConfig.SamplingTime=ADC_SAMPLETIME_810CYCLES_5;             //采样时间      

HAL_ADC_ConfigChannel(&hadcx, &sConfig);
  sConfig.Channel = ADC_CHANNEL_18;
  sConfig.Rank = 2;

HAL_ADC_ConfigChannel(&hadcx, &sConfig);
  sConfig.Channel =  ADC_CHANNEL_19;
  sConfig.Rank = 3;
  HAL_ADC_ConfigChannel(&hadcx, &sConfig);

只要一改变采样时间,ADC+DMA就停止工作,ADC的配置如下:

ADC_ChannelConfTypeDef sConfig;
    hadcx.Instance=ADC1;
    hadcx.Init.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV4;         //
    hadcx.Init.Resolution=ADC_RESOLUTION_12B;                   //
    hadcx.Init.ScanConvMode=ENABLE;                            //
    hadcx.Init.EOCSelection=DISABLE;               //
     hadcx.Init.LowPowerAutoWait=DISABLE;                                        //                       
    hadcx.Init.ContinuousConvMode=ENABLE;               //
    hadcx.Init.NbrOfConversion=3;                        //1¸
    hadcx.Init.DiscontinuousConvMode=DISABLE;            //
    hadcx.Init.NbrOfDiscConversion=0;                    /
    hadcx.Init.ExternalTrigConv=ADC_SOFTWARE_START;      /
    hadcx.Init.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE;//
    hadcx.Init.BoostMode=ENABLE;                                                        //
    hadcx.Init.Overrun=ADC_OVR_DATA_OVERWRITTEN;                        //
    hadcx.Init.OversamplingMode=DISABLE;                                        //过采样班
    hadcx.Init.ConversionDataManagement=ADC_CONVERSIONDATA_DMA_CIRCULAR; //ADC在dma工作模式下循环
      HAL_ADC_Init(&hadcx);                                 //初始化ˉ  
      HAL_ADCEx_Calibration_Start(&hadcx,ADC_CALIB_OFFSET,ADC_SINGLE_ENDED); //ADC校准
我认为应该是ADC设置的那个时钟分频有问题,但找不出来,哪位大哥给小弟看看吧





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
peng1554
1楼-- · 2019-07-20 07:00
 精彩回答 2  元偷偷看……
jwcai
2楼-- · 2019-07-20 09:14
大佬,能发下源码吗,我搞了几天都搞不定

一周热门 更多>