<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          STM32學習筆記之ADC

          作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
          一、基礎(chǔ)知識

          1.18個通道,可測16個外部和2個內(nèi)部信號源,可設(shè)置成單側(cè)、連續(xù)、掃描、間斷模式執(zhí)行

          本文引用地址:http://www.ex-cimer.com/article/201611/322993.htm

          2.12位精度

          3.掃描模式,通道0到通道n的自動轉(zhuǎn)化

          4.自校準

          5.按通道配置采樣時間

          6.間斷模式?

          7.ADC模式?

          8.供電要求2.4~3.6V

          9.輸入范圍0~3.6V

          二、功能描述

          1.通道選擇:

          STM32的每個ADC模塊通過內(nèi)部的模擬多路開關(guān),可以切換到不同的輸入通道并進行轉(zhuǎn)換。在任意多個通道上以任意順序進行的一系列轉(zhuǎn)換構(gòu)成成組轉(zhuǎn)換。例如,可以如下順序完成轉(zhuǎn)換:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。

          有2種劃分轉(zhuǎn)換組的方式:規(guī)則通道組和注入通道組。通常規(guī)則通道組中可以安排最多16個通道,而注入通道組可以安排最多4個通道。

          在執(zhí)行規(guī)則通道組掃描轉(zhuǎn)換時,如有例外處理則可啟用注入通道組的轉(zhuǎn)換。規(guī)則轉(zhuǎn)換和注入轉(zhuǎn)換均有外部觸發(fā)選項,規(guī)則通道轉(zhuǎn)換期間有DMA請求產(chǎn)生,而注入轉(zhuǎn)換則無DMA請求,需要用查詢或中斷的方式保存轉(zhuǎn)換的數(shù)據(jù)。

          一個不太恰當?shù)谋扔魇牵阂?guī)則通道組的轉(zhuǎn)換好比是程序的正常執(zhí)行,而注入通道組的轉(zhuǎn)換則好比是程序正常執(zhí)行之外的一個中斷處理程序。 規(guī)則組由多達16個轉(zhuǎn)換組成。規(guī)則通道和它們的轉(zhuǎn)換順序在ADC_SQRx寄存器中選擇。規(guī)則組中轉(zhuǎn)換的總數(shù)寫入ADC_SQR1寄存器的L[3:0]位中。
          注入組由多達4個轉(zhuǎn)換組成。注入通道和它們的轉(zhuǎn)換順序在ADC_JSQR寄存器中選擇。注入組里的轉(zhuǎn)換總數(shù)目寫入ADC_JSQR寄存器的L[1:0]位中。
          如果規(guī)則轉(zhuǎn)換已經(jīng)在運行,為了在注入轉(zhuǎn)換后確保同步,所有的ADC(主和從)的規(guī)則轉(zhuǎn)換被停止,并在注入轉(zhuǎn)換結(jié)束時同步恢復(fù),見圖示。

          2.單次轉(zhuǎn)換模式:

          單次轉(zhuǎn)換模式里,ADC 只執(zhí)行一次轉(zhuǎn)換。

          3.連續(xù)轉(zhuǎn)換模式:

          在連續(xù)轉(zhuǎn)換模式中,當前面ADC 轉(zhuǎn)換一結(jié)束馬上就啟動另一次轉(zhuǎn)換。

          4.掃描模式:

          此模式用來掃描一組模擬通道。

          5.注入模式管理:

          (1)觸發(fā)注入。詳見參考手冊

          (2)自動注入。如果設(shè)置了 JAUTO 位,在規(guī)則組通道之后,注入組通道被自動轉(zhuǎn)換。這可以用
          來轉(zhuǎn)換在ADC_SQRx 和ADC_JSQR 寄存器中設(shè)置的多至20 個轉(zhuǎn)換序列。
          在此模式里,必須禁止注入通道的外部觸發(fā)。

          6.間斷模式:

          (1)規(guī)則組
          此模式通過設(shè)置 ADC_CR1 寄存器上的DISCEN 位激活。它可以用來執(zhí)行一個短序列的n 次轉(zhuǎn)換(n<=8),此轉(zhuǎn)換是ADC_SQRx 寄存器所選擇的轉(zhuǎn)換序列的一部分。N 由ADC_CR1 寄存器的DISCNUM[2:0]位給出。一個外部觸發(fā)信號可以啟動ADC_SQRx 寄存器中描述的下一輪 n 次轉(zhuǎn)換,直到此序列所有的轉(zhuǎn)換完成為止??偟男蛄虚L度由ADC_SQR1 寄存器的L[3:0]定義。
          舉例:
          n=3,被轉(zhuǎn)換的通道 = 0, 1, 2, 3, 6, 7, 9, 10
          第一次觸發(fā):轉(zhuǎn)換的序列為 0,1,2
          第二次觸發(fā):轉(zhuǎn)換的序列為 3,6,7
          第三次觸發(fā):轉(zhuǎn)換的序列為 9,10,并產(chǎn)生EOC 事件
          第四次觸發(fā):轉(zhuǎn)換的序列 0,1,2
          注意: 當一規(guī)則組以間斷模式轉(zhuǎn)換時,轉(zhuǎn)換序列結(jié)束后不自動從頭開始。當所有子組被轉(zhuǎn)換完成,下一次觸發(fā)啟動第一個子組的轉(zhuǎn)換。在上面的例子中,第四次觸發(fā)重新轉(zhuǎn)換第一子組的通道 0,1 和2。

          (2)注入組

          此模式通過設(shè)置 ADC_CR1 寄存器的JDISCEN 位激活。在一個外部觸發(fā)事件后,給模式按序轉(zhuǎn)換ADC_JSQR 寄存器中選擇的序列。
          一個外部觸發(fā)信號可以啟動ADC_JSQR 寄存器選擇的下一個通道序列的轉(zhuǎn)換,直到序列中所有的轉(zhuǎn)換完成為止??偟男蛄虚L度ADC_JSQR 寄存器的JL[1:0]位定義。
          例子:
          n=1,被轉(zhuǎn)換的通道 = 1,2,3
          第一次觸發(fā):通道1 被轉(zhuǎn)換
          第二次觸發(fā):通道2 被轉(zhuǎn)換
          第三次觸發(fā):通道3 被轉(zhuǎn)換,并且產(chǎn)生EOC 和JEOC 事件
          第四次觸發(fā):通道1 被轉(zhuǎn)換
          注意:1 當完成所有注入通道轉(zhuǎn)換,下個觸發(fā)啟動第1 個注入通道的轉(zhuǎn)換。在上述例子中,第四個觸發(fā)重新轉(zhuǎn)換第1 個注入通道1。
          2 不能同時使用自動注入和間斷模式。3 必須避免同時為規(guī)則和注入組設(shè)置間斷模式。間斷模式只能作用于一組轉(zhuǎn)換。

          7.雙ADC模式

          8.數(shù)據(jù)對齊
          ADC_CR2 寄存器中的ALIGN位選擇轉(zhuǎn)換后數(shù)據(jù)儲存的對齊方式。數(shù)據(jù)可以左對齊或右對齊,如圖146 和圖147 所示。
          注入組通道轉(zhuǎn)換的數(shù)據(jù)值已經(jīng)減去了在ADC_JOFRx 寄存器中定義的偏移量,因此結(jié)果可以是一個負值。SEXT 位是擴展的符號值。
          對于規(guī)則組通道,不需減去偏移值,因此只有12 個位有效。
          數(shù)據(jù)右對齊:
          注入組
          SEXT SEXT SEXT SEXT D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
          規(guī)則組
          0 0 0 0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
          數(shù)據(jù)左對齊:

          注入組
          SEXT D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0
          規(guī)則組
          D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0

          三、 程序設(shè)計與軟件配置

          1.

          void ADC_Config(void)
          {
          ADC_InitTypeDef ADC_InitStructure;//定義ADC初始化結(jié)構(gòu)體變量
          ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC1和ADC2工作在獨立模式
          ADC_InitStructure.ADC_ScanConvMode = ENABLE; //使能掃描
          ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//ADC轉(zhuǎn)換工作在連續(xù)模式
          ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//由軟件控制轉(zhuǎn)換
          ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//轉(zhuǎn)換數(shù)據(jù)右對齊
          ADC_InitStructure.ADC_NbrOfChannel = 1;//轉(zhuǎn)換通道數(shù)目為1
          ADC_Init(ADC1, &ADC_InitStructure); //初始化ADC
          ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_28Cycles5);
          //ADC1選擇通道14,規(guī)則組采樣順序(1~16),采樣時間239.5個周期
          ADC_DMACmd(ADC1, ENABLE);//使能ADC1模塊DMA
          ADC_Cmd(ADC1, ENABLE);//使能ADC1
          ADC_ResetCalibration(ADC1); //重置ADC1校準寄存器
          while(ADC_GetResetCalibrationStatus(ADC1));//等待ADC1校準重置完成
          ADC_StartCalibration(ADC1);//開始ADC1校準
          while(ADC_GetCalibrationStatus(ADC1));//等待ADC1校準完成
          ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能ADC1軟件開始轉(zhuǎn)換
          }



          關(guān)鍵詞: STM32學習筆記AD

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();