歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

STM32處理器的AD難點整理

1.STM32的AD轉換,可以將轉換任務組織為兩個組:規則組和注入組。在任意多個通道上以任意順序進行的一系列轉換構成成組轉換。例如,可以如下順序完成轉換:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。在執行規則通道組掃描轉換時,如有例外處理則可啟用注入通道組的轉換。可以模糊的將注入組的轉換理解為AD轉換的中斷一樣,規則通道組的轉換是普通轉換,然而注入組的轉換條件滿足的情況下,注入組的轉換會打斷規則組的轉換。如果規則轉換已經在運行,為了在注入轉換後確保同步,所有的ADC(主和從)的規則轉換被停止,並在注入轉換結束時同步恢復。規則轉換和注入轉換均有外部觸發選項,規則通道轉換期間有DMA請求產生,而注入轉換則無DMA請求,需要用查詢或中斷的方式保存轉換的數據。

Ubuntu下用Eclipse CDT開發STM32  http://www.linuxidc.com/Linux/2011-05/35966.htm

STM32串口寄存器操作 http://www.linuxidc.com/Linux/2013-03/81955.htm

STM32 CRC寄存器操作 http://www.linuxidc.com/Linux/2013-03/81956.htm

2.規則組:此模式通過設置ADC_CR1寄存器上的DISCEN位激活。它可以用來執行一個短序列的n次轉換(n<=8),此轉換是ADC_SQRx寄存器所選擇的轉換序列的一部分。數值n由ADC_CR1寄存器的DISCNUM[2:0]位給出。 一個外部觸發信號可以啟動ADC_SQRx寄存器中描述的下一輪n次轉換,直到此序列所有的轉換完成為止。總的序列長度由ADC_SQR1寄存器的L[3:0]定義。 舉例: n=3,被轉換的通道 = 0、1、2、3、6、7、9、10 第一次觸發:轉換的序列為 0、1、2 第二次觸發:轉換的序列為 3、6、7 第三次觸發:轉換的序列為 9、10,並產生EOC事件 第四次觸發:轉換的序列 0、1、2,依次類推;
 注入組:此模式通過設置ADC_CR1寄存器的JDISCEN位激活。在一個外部觸發事件後,該模式按通道順序逐個轉換ADC_JSQR寄存器中選擇的序列。 一個外部觸發信號可以啟動ADC_JSQR寄存器選擇的下一個通道序列的轉換,直到序列中所有的轉換完成為止。總的序列長度由ADC_JSQR寄存器的JL[1:0]位定義。 例子: n=1,被轉換的通道 = 1、2、3 第一次觸發:通道1被轉換 第二次觸發:通道2被轉換 第三次觸發:通道3被轉換,並且產生EOC和JEOC事件 第四次觸發:通道1被轉換,也是依次類推。

3.STM32的ADC的工作模式:
 單次轉換模式:轉換一次則停止;
 連續轉換模式:轉換完一次後即開始下一次轉換;
 掃描模式:掃描一組模擬通道;
 間斷模式:每觸發一次,轉換序列中n個通道。

4.因為規則通道轉換的值儲存在一個僅有的數據寄存器中,所以當轉換多個規則通道時需要使用DMA,這可以避免丟失已經存儲在ADC_DR寄存器中的數據。只有在規則通道的轉換結束時才產生DMA請求,並將轉換的數據從ADC_DR寄存器傳輸到用戶指定的目的地址。
 注:  只有ADC1和ADC3擁有DMA功能。由ADC2轉化的數據可以通過雙ADC模式,利用ADC1的DMA功能傳輸。

5.雙ADC模式
 (1)同步注入模式:此模式轉換一個注入通道組。外部觸發來自ADC1的注入組多路開關(由ADC1_CR2寄存器的JEXTSEL[2:0]選擇),它同時給ADC2提供同步觸發。
 注意:  不要在2個ADC上轉換相同的通道(兩個ADC在同一個通道上的采樣時間不能重疊)。
 (2)同步規則模式:此模式在規則通道組上執行。外部觸發來自ADC1的規則組多路開關(由ADC1_CR2寄存器的EXTSEL[2:0]選擇),它同時給ADC2提供同步觸發。
 (3)快速交叉模式:此模式只適用於規則通道組(通常為一個通道)。外部觸發來自ADC1的規則通道多路開關。外部觸發產生後:
 A.ADC2立即啟動並且
 B.ADC1在延遲7個ADC時鐘周期後啟動
 注意:最大允許采樣時間<7個ADCCLK周期,避免ADC1和ADC2轉換相同通道時發生兩個采樣周期的重疊。
 (4)慢速交叉模式:此模式只適用於規則通道組(只能為一個通道)。外部觸發來自ADC1的規則通道多路開關。外部觸發產生後:
 A.ADC2立即啟動並且
 B.ADC1在延遲14個ADC時鐘周期後啟動
 C.在延遲第二次14個ADC周期後ADC2再次啟動,如此循環。
 (5)交替觸發模式:此模式只適用於注入通道組。外部觸發源來自ADC1的注入通道多路開關。
 A.當第一個觸發產生時,ADC1上的所有注入組通道被轉換。
 B.當第二個觸發到達時,ADC2上的所有注入組通道被轉換。
 C.如此循環……
(6)獨立模式:此模式裡,雙ADC同步不工作,每個ADC接口獨立工作。
 (7)混合的規則/注入同步模式:規則組同步轉換可以被中斷,以啟動注入組的同步轉換。
 (8)混合的同步規則+交替觸發模式:規則組同步轉換可以被中斷,以啟動注入組交替觸發轉換。 顯示了一個規則同步轉換被交替觸發所中斷。
 (9)混合同步注入+ 交叉模式:一個注入事件可以中斷一個交叉轉換。這種情況下,交叉轉換被中斷,注入轉換被啟動,在注入序列轉換結束時,交叉轉換被恢復。

Copyright © Linux教程網 All Rights Reserved