STM32H743-梳理ADC模数转换器在CubeMX上的配置
文章目錄
- 一、前言
- 二、Cloack Configuration
- 三、ADC1 Mode and Configuration
- 四、Configuration
- 4.1、ADC_Setting
- 4.1.1、Clock Prescaler(時鐘預分頻)
- 4.1.2、Resolution(分辨率)
- 4.1.3、Scan Conversion Mode(掃描模式)
- 4.1.4、Continuous Conversion Mode(連續轉換模式)
- 4.1.5、Discontinuous Conversion Mode(不連續序列轉換模式)
- 4.1.6、End of Conversion Selection(結束轉換的選擇)
- 4.1.7、Overrun behaviour(溢出處理行為)
- 4.1.8、Left Bit Shift(左移位數)
- 4.1.9、Conversion Data Managerment Mode(轉換數據管理模式)
- 4.1.10、Low Power Auto Wait(低功耗自動等待)
- 4.2、ADC Regular ConversionMode
- 4.2.1、Enable Regular Conversions(使能規則轉換)
- 4.2.2、Enable Regular Oversamping(使能規則過采樣)
- 4.2.3、Oversamping Right Shift(過采樣位右移)
- 4.2.4、Oversamping Ratio(過采樣率)
- 4.2.5、Regular Oversamping Mode(規則過采樣模式)
- 4.2.6、Triggered Regular Oversampling(規則過采樣捕捉)
- 4.2.7、Numer of Conversion(轉換通道的數量)
- 4.2.8、External Trigger Conversion Soure(觸發轉換的外部來源)
- 4.2.9、External Trigger Conversion Edge(觸發轉換的外部沿)
- 4.2.10、Rank
- 4.3、ADC Injected Conversion Mode ( ADC注入轉換模式)
- 4.4、Analog Watchdog
一、前言
為了正確使用STM32H7上的ADC模數轉換器,必須先把CubeMX上的ADC配置梳理一遍。為此,在ADC1上開啟通道IN2與通道IN6為例學習如何配置CubeMX。
二、Cloack Configuration
配置ADC的時鐘源adc_ker_ck的頻率為72M。有了72M的時鐘源,ADC1,ADC2,ADC3就能經過異步時鐘模式2分頻得到36M的最高的工作頻率。下面介紹Parameter Settings配置時講到如何配置異步時鐘模式2分頻。
三、ADC1 Mode and Configuration
四、Configuration
Parameter Settings的細節有一點多,學習ADC的重點。
4.1、ADC_Setting
4.1.1、Clock Prescaler(時鐘預分頻)
目的是讓ADC的工作頻率達到36M(ADC工作頻率超過36M會不穩定)。異步時鐘模式(基于PLL2P時鐘)可以選擇Asynchronous clock mode divided by 1,2,4,6,8,10,12,16,32,64,128,256,同步時鐘模式(基于AHB時鐘)可以選擇Synchronous clock mode divided by 1,2,4。在上面的時鐘配置上,adc_ker_ck的時鐘頻率為70M,所以使用Asynchronous clock mode divided by 2就能讓ADC的工作頻率為36M。
值得注意,同步時鐘模式任何選項都會讓ADC的工作頻率超過36M。STM32H743的時鐘頻率是480M,所以AHB時鐘頻率是240M。就算選擇Synchronous clock mode divided by 4, ADC的工作頻率也超過36M(240M/4 = 60M)。那么同步時鐘模式就那么沒有使用的價值嗎?查看官方手冊,同步模式的優點在于ADC與定時器都基于AHB時鐘,那么定時器觸發定時器時,ADC的同步觸發能更加精確。
4.1.2、Resolution(分辨率)
分辨率越高,逐次逼近轉換時間越長。根據實際的項目要求選擇分辨率即可。
4.1.3、Scan Conversion Mode(掃描模式)
當使能一個以上通道時,默認開啟。
4.1.4、Continuous Conversion Mode(連續轉換模式)
選擇是否使能連續轉換模式。不使能相當于單次轉換模式,ADC會將通道的所有轉換執行一次。使能的話,相當于連續轉換模式,該模式用于常規通道。在連續轉換模式下,如果發生軟件或者硬件觸發,ADC會執行所有常規通道的轉換,隨后會自動重啟并繼續執行每一個通道的轉換。若想使用ADC+DMA的話,必須先使能連續轉換模式。
4.1.5、Discontinuous Conversion Mode(不連續序列轉換模式)
配置ADC規則組轉換序列的不連續方式。這里的不連續含義是指每次觸發進行一個子組的轉換,跟Continuous Conversion Mode的連續含義不一樣。例如使能了該配置,該參數的下方就立馬出現Number Of Discontinuous Conversions,如果它設為2,且ADC1使能了通道1,2,5,7,10,11的話,那么第一次觸發ADC1采樣時,就會采樣通道1與通道2的值,再一次觸發ADC1采樣的話,就會采樣通道5與通道7值,如此類推。值得注意的是,Continuous Conversion Mode與Discontinuous Conversion Mode不能同時使能,兩者不能共存。
4.1.6、End of Conversion Selection(結束轉換的選擇)
選擇結束轉換的事件。有End of single conversion(EOC) 與 End of sequence of conversion(EOS)兩種選擇。這兩個事件會觸發中斷與DMA。一般選擇EOS,等所有通道轉換完畢后,產生中斷后將全部數據取出來,或者使用DMA將全部數據取出來。
4.1.7、Overrun behaviour(溢出處理行為)
選擇Overrun data overwritten。ADC+DMA是很好的組合,根據安富萊的解釋,有了DMA的話,不管怎樣都會溢出錯誤。
4.1.8、Left Bit Shift(左移位數)
選擇No bit shift即可。可以選擇0 ~ 15bit shift,一般不使用它。
4.1.9、Conversion Data Managerment Mode(轉換數據管理模式)
不使用DMA的話,不使用DFSDM數字濾波器做后期處理的話,選擇Regular Conversion data stored in DR register only即可。其實就是選擇存放轉換完成的模擬量數據的地方而已。
4.1.10、Low Power Auto Wait(低功耗自動等待)
有低功耗要求的話,就使能。
4.2、ADC Regular ConversionMode
4.2.1、Enable Regular Conversions(使能規則轉換)
使能它才能采集各個通道上的模擬量。
4.2.2、Enable Regular Oversamping(使能規則過采樣)
使能過采樣。有一些細節稍微需要注意一下。
4.2.3、Oversamping Right Shift(過采樣位右移)
過采樣器能將累加的采樣值進行右移。有什么用?比如過采樣設置15,那么將采集16個值進行累加。接著配置右移動4位的話,相當于將剛才的累加值除以16,得到平均值。不需要在程序里求平均了。當然,如果大家喜歡在程序里求平均值也是可以的。
4.2.4、Oversamping Ratio(過采樣率)
過采樣器會進行數據預處理,以減輕CPU的負擔。例如過采樣設置15,將采樣16個值,將16個值進行累加。一般的單片機可能不支持過采樣,那么只能用程序實現累加了。總得來說,Oversamping Ratio幫助CPU累加采樣值,Oversamping Right Shift幫助CPU求平均值。
4.2.5、Regular Oversamping Mode(規則過采樣模式)
一般使用Oversampling Continued Mode。另外一個Oversamping Resumed Mode不知道是什么意思,后續繼續研究。
4.2.6、Triggered Regular Oversampling(規則過采樣捕捉)
選擇捕捉的方式,捕捉等待所有過采樣轉換結束(Signal Trigger for all oversampled conversions)。另外一個是捕捉每一個過采樣轉換結束。
4.2.7、Numer of Conversion(轉換通道的數量)
轉換通道的數量(支持1 - 16)。
4.2.8、External Trigger Conversion Soure(觸發轉換的外部來源)
選擇觸發轉換的來源:
… (各種定時器觸發來源)
除軟件觸發外,其他基本都是定時器觸發。關于定時器的使用筆記如下:
STM32H743+CubeMX-定時器TIM輸出PWM(PWM Generation模式)
STM32H743+CubeMX-定時器TIM輸出PWM(Output Compare模式)
4.2.9、External Trigger Conversion Edge(觸發轉換的外部沿)
選擇定時器觸發時,需要進一步選擇觸發的沿。選擇軟件觸發時,該項為None。
- Trigger detection on the rising edge(上升沿)
- Trigger detection on the falling edge(下降沿)
- Trigger detection on the rising and falling edge(上升與下降沿)
4.2.10、Rank
- Channel
選擇采樣的通道 - Sampling Time
過采樣的時間。ADC的采樣速度 = 過采樣時間 + 逐次逼近時間
- Offset Number
摘自安富萊教程
- Offset Signed Saturation
摘自安富萊教程
4.3、ADC Injected Conversion Mode ( ADC注入轉換模式)
先不管。
4.4、Analog Watchdog
比如使用模擬窗口看門狗監控CPU的溫度,超過設定的閥值就產生看門狗中斷,防止CPU的溫度過高。在監控CPU的溫度上有一定的使用價值。
總結
以上是生活随笔為你收集整理的STM32H743-梳理ADC模数转换器在CubeMX上的配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32H743+CubeMX-定时器
- 下一篇: html5jqueryl轮播图,基于JQ