<tfoot id="ygvxt"><menuitem id="ygvxt"></menuitem></tfoot>
    • <kbd id="ygvxt"></kbd>
      <th id="ygvxt"><progress id="ygvxt"></progress></th>

      您好,歡迎訪問上海意泓電子科技有限責(zé)任公司網(wǎng)站!
      4新聞資訊
      您的位置: 首頁 ->  新聞資訊 -> 單片機

      ?STM32的ADC1+ADC3 16路采集 DMA傳輸 數(shù)據(jù)不錯位

      文章出處:單片機 責(zé)任編輯:上海意泓電子科技有限責(zé)任公司 發(fā)表時間:
      2020
      11-10

      1) ADC多通道采集:(多通道采集必須用掃描模式,掃描模式時規(guī)則組的通道共用一個寄存器,so必須用DMA傳輸;為防止數(shù)據(jù)錯位,不能用連續(xù)模式,而應(yīng)在查詢或中斷中先關(guān)閉ADC轉(zhuǎn)換,再開啟ADC轉(zhuǎn)換)so應(yīng)采用掃描、非連續(xù)的方式、DMA正常模式,DMA的EOC中斷或查詢;

      上述的配置下,ADC運行流程如下:

      每個規(guī)則通道采集之后,每個ADC_DR會更新,這個更新會啟動一次DMA,同時會產(chǎn)生EOC,然后DMA會傳輸此數(shù)據(jù),DMA的傳輸會清除EOC標(biāo)志,然后DMA的傳輸量計數(shù)器--,so,每一組規(guī)則通道轉(zhuǎn)換完成后也不會產(chǎn)生EOC(詳情看英文版STM32手冊V15版本-Page220,而非V9版本),so利用這個EOC產(chǎn)生ADC中斷或查詢時,標(biāo)志位已為RESET,so根本就辦不到,但可利用DMA正常模式,DMA_EOC標(biāo)志被置位在中斷或查詢中ADC轉(zhuǎn)換先關(guān)閉,對應(yīng)的DMACmd關(guān)閉,然后重新寫入DMA的傳輸數(shù)據(jù)量CNDTR,再打開DMACmd,再清除DMA標(biāo)志位,再打開ADC轉(zhuǎn)換,同時,存儲模擬量的變量或數(shù)組需要用volatile修飾

      DMA查詢的代碼如下

         if(DMA_GetFlagStatus(DMA1_FLAG_TC1)!=RESET)       //?D??í¨μà1′?ê?íê3é

         {

                  ADC_SoftwareStartConvCmd(ADC1,DISABLE);

                  DMA_Cmd(DMA1_Channel1,DISABLE);

                          DMA_SetCurrDataCounter(ADC1_DMA_CHANNLE,ADC1_DMA_BUFFER_SIZE);    DMA_Cmd(DMA1_Channel1,ENABLE);

                         DMA_ClearFlag(DMA1_FLAG_TC1);//

                  ADC_SoftwareStartConvCmd(ADC1,ENABLE);

          }

      同時也可以ADC1、ADC3同時使用,ADC3利用PF6-9,可復(fù)用為Channel4-7,頁要為掃描模式,非連續(xù)模式;代碼如下:

      ADC_InitStructure.ADC_NbrOfChannel = 4;

      ADC_Init(ADC3, &ADC_InitStructure);

      ADC_RegularChannelConfig(ADC3,ADC_Channel_4,1,ADC_SampleTime_239Cycles5);

               ADC_RegularChannelConfig(ADC3,ADC_Channel_5, 2, ADC_SampleTime_239Cycles5 );           ADC_RegularChannelConfig(ADC3,ADC_Channel_6, 3, ADC_SampleTime_239Cycles5 ); 

      ADC_RegularChannelConfig(ADC3, ADC_Channel_7, 4,ADC_SampleTime_239Cycles5 ); 

               ADC_DMACmd(ADC3, ENABLE);

               ADC_Cmd(ADC3,ENABLE);    

               ADC_ResetCalibration(ADC3);       

               while(ADC_GetResetCalibrationStatus(ADC3));    

               ADC_StartCalibration(ADC3);

               while(ADC_GetCalibrationStatus(ADC3));     

              

        ADC_SoftwareStartConvCmd(ADC3, ENABLE);  


      上海意泓電子科技有限責(zé)任公司 版權(quán)所有 未經(jīng)授權(quán)禁止復(fù)制或鏡像

      CopyRight 2020-2025 www.hljhgw.com All rights reserved   滬ICP備2021005866號

      国产强伦姧在线观看,…中文天堂在线一区,亚洲欧洲精品污网站在线观看,在线视频综合站 亚太影院 柯西贝尔-游戏赚网
      <tfoot id="ygvxt"><menuitem id="ygvxt"></menuitem></tfoot>
        • <kbd id="ygvxt"></kbd>
          <th id="ygvxt"><progress id="ygvxt"></progress></th>

          无码av免费一区二区三区五区蜜臀| 国产国语刺激对白毛片黄色| 久久亚洲精品国产精品| 国产午夜免费啪视频观看视频男男| 久久国产精品久久国产| 91亚洲自偷观看高清| 日韩精品人妻系列一区二区三区| 免费国产女人高潮抽搐网站| 99久久99久久久精品综合色| 2020久久超碰欧美精品最新| 中文字幕亚洲欧美丝袜| 99国产精品久久久久久久成人热| 亚洲无码2020每日更新| 亚洲无码在线播放| 亚洲一级在线播放a| 国产精品日产三级在线观看| 亚洲毛片不卡aV在线播放一区| 国产又粗又猛又大爽色婷婷| 亚洲欧美日韩久久精品第一区| 亚欧无码视频在线播放| 91精品国产免费自在线观看| 亚洲真人无码一区|