精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

實戰經驗 | STM32U5 ADC 自校準不成功的問題分析

STM32單片機 ? 來源:未知 ? 2023-12-10 16:45 ? 次閱讀

wKgZomV1e7qAZlHJAAHUHXdxAL4922.gif

關鍵詞:STM32U5,ADC

目錄預覽

1、引言

2、問題

3、問題解決

4、小結

01

引言

很多 STM32 系列中的 ADC 都帶有自校準的功能。它提供了一個自動校準的過程,用于驅動包括 ADC 上電/掉電序列在內的所有校準動作。在這個過程中,ADC 計算出一個校準因子,并在內部應用到此 ADC 模塊,直到下一次 ADC 掉電。在執行任何 ADC 操作之前必須校準,以消除芯片之間 ADC 結果的偏差。

02

問題

2.1. 問題詳情

客戶使用 STM32U575ZIT6Q 驗證 ADC4 時,使用 STM32CubeMX 配置后生成工程項目。因為使用 ADC 進行采樣轉換前,必須要做 ADC 的自校準。于是在 main 函數中加入自校準代碼,如圖 1 所示。

wKgZomV1e7qAY1wgAABT0CW0xu8134.jpg

圖1.代碼:ADC 自校準

然而,在運行代碼的情況下,發現 PC 指針最后跑到這個 Calibration Error 的Error_Handler()里。也就是說,執行自校準失敗了!

再檢查進入 Error_Handler()發生的問題,發現在執行HAL_ADCEx_Calibration_Start()時陷在了下面這個 Loop 當中,如圖 2 所示。

wKgZomV1e7qATXCCAACJk9sCAkM641.jpg

圖2.代碼:等待 ADC 自校準完成

也就是說,ADCAL 位被置 1 后,始終沒有被硬件清 0,代表自校準始終不成功。

2.2. 問題分析

查看 STM32U5 的參考手冊 RM0456 中關于自校準的描述。考慮到校準沒有成功,那么應該看看是不是自校準需要哪些條件,而這些條件并沒有成立。

于是,在 ADC 章節中的 Calibration 小節找到了這么一段話,如圖 3 所示。

wKgZomV1e7uAdIIgAACWubvvays217.jpg

圖3.ADC 自校準要求條件

也就是說,在初始化自校準之前,需要保證 3 個條件:

1) ADC 的電壓調整器已經使能并正常工作(ADVREGEN = 1 且 LDORDY =1)

2) ADC 沒有打開(ADEN=0)

3) 自動掉電模式沒有使能(AUTOFF = 0)

回到剛才等待 ADC 自校準完成的代碼,當指針停留到這邊時,在線調試檢查各個標志位情況,發現 ADVREGEN=1,ADEN=0,AUTOFF=0,LDORDY=0。所以,可以肯定的是就是 LDORDY 不為 1,也就是說 ADC 的電壓調整器還沒有準備好,導致了自校準無法成功并退出。

在 STM32U5 中,引入了一個新的 ADC 特性,叫 ADC 電壓調整器(ADC voltageregulator)。在使用 ADC 之前,這個電壓調整器必須被使能并且能夠穩定工作??梢酝ㄟ^將 ADC_CR 寄存器中的 ADVREGEN 位置 1 來使能它,然后必須要等這個電壓調整器的啟動時間之后,才可以正常啟動自校準或者使用 ADC。這個 LDO 有沒有準備好,可以通過 ADC_ISR 寄存器中的 LDORDY 這個位來判斷。LDORDY=1 才代表了 LDO 已經準備好了。

回到客戶的問題,可以知道即使 ADVREGEN 置 1 了,LDORDY 始終沒有置起來,電壓調整器沒有啟動工作,難道是 ADC 的這個電壓調整器壞掉了?

別急,想到電源的問題,還不能忘了參考手冊的另一個章節 :電源控制 PWR。翻到PWR 這一章,先要考慮到,與 ADC 相關的電源為 VDDA,所以要重點查看 VDDA 的內容。找到 Independent analog peripherals supply 這一小節,可以看以下關鍵的句子,如圖 4。

wKgZomV1e7uAZofaAAG5GJGPf38431.jpg

圖4.獨立的模擬外設供電

從圖中黃色高亮的文字,我們可以了解到,STM32U5 的 VDDA 在控制上還跟其他系列不一樣,它有一個開關來選擇是否隔離。芯片復位后,VDDA 提供的 ADC 和模擬開關控制在邏輯和電氣上是隔離的,因此不可用。一旦 VDDA 電源存在,就必須在使用模擬外設之前,通過在 PWR_SVMCR 寄存器中將 ASV 置位來消除隔離。也就是說,要想使用ADC,必須先將 ASV 置位來消除隔離。

在 PWR_SVMCR 寄存器的解釋中,也可以看到 ASV 位的描述中要求將此位強制置 1才可以使用模擬外設,如圖 5。

wKgZomV1e7uAQJKdAAC6z9jcInY958.jpg

圖5.ASV 位描述

ASV 的配置是沒有在 STM32CubeMX 中進行配置的,所以需要在后期添加。所以,很可能就是因為沒有將 ASV 置位以使能 VDDA,導致 ADC 外設被隔離,并沒有得到供電,所以 ADC 的電壓調整器不可能正常工作,LDORDY 也不可能為 1。

03

問題解決

在工程項目中搜索 ASV,可以找到兩個 API,如圖 6。

wKgZomV1e7uAe3w2AADPvGnknRw460.jpg

圖6.VDDA 使能或禁用 API

也就是說,我們需要先將 HAL_PWREx_EnableVddA()添加到代碼中。因為其屬于MSP 硬件配置,所以將其加到 HAL_MspInit()函數,如圖 7 所示。

wKgZomV1e7uACC1ZAACpY3G4lvA520.jpg

圖7.修改過的 HAL_MspInit()函數

再重新編譯,然后執行指令代碼,就可以看到 ADC 的自校準可以正常完成,PC 指針已經可以正常跑到自校準后面的代碼了。

04

小結

在 STM32U5 中,為了更好地控制功耗,ADC 中加入電壓調整器和 VDDA 隔離功能。這與以往的 STM32 有所不同,需要注意一下。使用 ADC 等模擬外設前,需要注意將PWR_SVMCR 寄存器中將 ASV 置位來消除隔離。

其實不僅僅是 VDDA 可以隔離,VDDIO2 也是可以的,通過 PWR_SVMCR 寄存器的IO2SV 位進行控制。

如果仔細看過 STM32U5 的 ADC 例程,可以看到 HAL_MspInit()的內容是這么寫的,如圖 8 所示。

wKgZomV1e7yAZ9XYAAC98ziGubc031.jpg

圖8.例程的 HAL_MspInit()函數

可以看到,在 MSP 初始化里,不僅使能了 VDDA,還使能了 VDDIO2。所以要使用VDDIO2 相關 I/O 的,也需要注意一下。

wKgZomV1e7yACjBNAAHiBpzEGaQ725.png

完整內容請點擊“閱讀原文”下載原文檔。


原文標題:實戰經驗 | STM32U5 ADC 自校準不成功的問題分析

文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6023

    文章

    44378

    瀏覽量

    628606
  • STM32
    +關注

    關注

    2258

    文章

    10828

    瀏覽量

    352546

原文標題:實戰經驗 | STM32U5 ADC 自校準不成功的問題分析

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ESP-WROOM-02U用esptouch來配置路由器不成功怎么解決?

    我在官網上買了幾片 ESP-WROOM-02U模塊,用esptouch來配置路由器不成功,是不是需要重新下載ESP-WROOM-02U的固件?
    發表于 07-19 08:28

    STM32H5STM32U5在trustzone上有哪些不同?

    我要做空調的空中升級FOTA的方案,需要加密,對于trustzone功能,采用那款芯片比較合適?STM32H5STM32U5在trustzone上有哪些不同?
    發表于 07-05 07:03

    使用STM32CUBEMX創建一個基于RTOS的工程,互斥量創建不成功的原因?

    使用STM32CUBEMX創建一個基于RTOS的工程,使用了互斥量,但互斥量創建不成功
    發表于 05-15 07:22

    STM32在中斷中OSFlagPost不成功是為什么?

    STM32在中斷中OSFlagPost不成功,是為什么?
    發表于 04-23 07:44

    STM32F103RGT6位帶操作不成功的原因?

    各位大神,我是一個入門級的超級菜鳥,遇到一個問題: 為啥子我同樣的位帶操作在STM32F103C8T6上操作成功,但是在STM32F103RGT6位帶操作不成功。
    發表于 04-19 06:32

    STM32U5,STM32WB及STM32L4開發板,哪個開發板擁有較多數量的ADC?

    請問,我現在需要開發一個項目,在這個項目中需要使用較多數量的傳感器(至少8個),這些傳感器需要進行信號采集,現在在使用STM32U5,STM32WB及STM32L4芯片的開發板中,哪些開發板擁有較多數量的
    發表于 03-20 08:01

    STM32U5開發板ADC校準超時怎么解決?

    使用的代碼就是官方的例程,我把官方的Cubemx文件另存為另一個工程之后,重新生成代碼(這樣做是為了保證硬件配置是一致的)。調用HAL_ADCEx_Calibration_Start進行ADC校準的時候超時。同一個板子用例程就很快完成了
    發表于 03-18 07:36

    基于STM32U5片內溫度傳感器正確測算溫度實戰經驗分享

    STM32 在內部都集成了一個溫度傳感器,STM32U5 也不例外。這個位于晶圓上的溫度傳感器雖然不太適合用來測量外部環境的溫度,但是用于監控晶圓上的溫度還是挺好的,以防止芯片過溫運行。
    的頭像 發表于 02-22 17:27 ?3683次閱讀
    基于<b class='flag-5'>STM32U5</b>片內溫度傳感器正確測算溫度<b class='flag-5'>實戰經驗</b>分享

    盤點那些硬件+項目學習套件:STM32U5單片機開發板及入門常見問題解答

    型號STM32學習感興趣的朋友可以了解?;旧嫌辛?b class='flag-5'>STM32U5經驗,再去學習STM32G0/F1/F4核心,就會上手很快。STM32U5
    發表于 02-19 16:59

    基于LL庫實現STM32U5 LPTIM功能

    有人打算使用STM32U5系列片內LPTIM做低功耗模式喚醒?;?b class='flag-5'>STM32 LL庫組織代碼,折騰幾天后似乎連中斷都進不了,想找找是否有現存LL庫例程可以參考。
    的頭像 發表于 01-07 14:12 ?1262次閱讀
    基于LL庫實現<b class='flag-5'>STM32U5</b> LPTIM功能

    初始化AD7190的時候想進行內部零電位和內部滿量程校準,但是都不成功怎么解決?

    初始化AD7190的時候想進行內部零電位和內部滿量程校準,但是都不成功。 基本配置程序如下 initAD7190 () {u8 發送Data[4] /0,0,0} 無效; resetAD7190
    發表于 12-04 06:27

    navicat導入SQL文件不成功

    Navicat是一款功能強大的數據庫管理工具,可以幫助用戶輕松管理和操作數據庫。然而,有時用戶在導入SQL文件時可能會遇到問題,導致導入不成功。本文將詳細介紹導入SQL文件不成功的原因和解
    的頭像 發表于 11-21 11:01 ?5446次閱讀

    探秘STM32U5安全特性|硬件加解密引擎與軟件算法對比

    探秘STM32U5安全特性|硬件加解密引擎與軟件算法對比
    的頭像 發表于 10-27 10:23 ?1500次閱讀
    探秘<b class='flag-5'>STM32U5</b>安全特性|硬件加解密引擎與軟件算法對比

    STM32U5 LPBAM模式介紹

    STM32U5 LPBAM模式介紹
    的頭像 發表于 10-26 17:59 ?619次閱讀
    <b class='flag-5'>STM32U5</b> LPBAM模式介紹

    基于STM32U5的B-U585I-IOT02A開發板開箱

    基于STM32U5的B-U585I-IOT02A開發板開箱
    的頭像 發表于 09-26 16:20 ?1390次閱讀
    基于<b class='flag-5'>STM32U5</b>的B-<b class='flag-5'>U</b>585I-IOT02A開發板開箱