0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

實(shí)戰(zhàn)經(jīng)驗(yàn) | STM32U5 ADC 自校準(zhǔn)不成功的問(wèn)題分析

STM32單片機(jī) ? 來(lái)源:未知 ? 2023-12-10 16:45 ? 次閱讀

wKgZomV1e7qAZlHJAAHUHXdxAL4922.gif

關(guān)鍵詞:STM32U5,ADC

目錄預(yù)覽

1、引言

2、問(wèn)題

3、問(wèn)題解決

4、小結(jié)

01

引言

很多 STM32 系列中的 ADC 都帶有自校準(zhǔn)的功能。它提供了一個(gè)自動(dòng)校準(zhǔn)的過(guò)程,用于驅(qū)動(dòng)包括 ADC 上電/掉電序列在內(nèi)的所有校準(zhǔn)動(dòng)作。在這個(gè)過(guò)程中,ADC 計(jì)算出一個(gè)校準(zhǔn)因子,并在內(nèi)部應(yīng)用到此 ADC 模塊,直到下一次 ADC 掉電。在執(zhí)行任何 ADC 操作之前必須校準(zhǔn),以消除芯片之間 ADC 結(jié)果的偏差。

02

問(wèn)題

2.1. 問(wèn)題詳情

客戶使用 STM32U575ZIT6Q 驗(yàn)證 ADC4 時(shí),使用 STM32CubeMX 配置后生成工程項(xiàng)目。因?yàn)槭褂?ADC 進(jìn)行采樣轉(zhuǎn)換前,必須要做 ADC 的自校準(zhǔn)。于是在 main 函數(shù)中加入自校準(zhǔn)代碼,如圖 1 所示。

wKgZomV1e7qAY1wgAABT0CW0xu8134.jpg

圖1.代碼:ADC 自校準(zhǔn)

然而,在運(yùn)行代碼的情況下,發(fā)現(xiàn) PC 指針最后跑到這個(gè) Calibration Error 的Error_Handler()里。也就是說(shuō),執(zhí)行自校準(zhǔn)失敗了!

再檢查進(jìn)入 Error_Handler()發(fā)生的問(wèn)題,發(fā)現(xiàn)在執(zhí)行HAL_ADCEx_Calibration_Start()時(shí)陷在了下面這個(gè) Loop 當(dāng)中,如圖 2 所示。

wKgZomV1e7qATXCCAACJk9sCAkM641.jpg

圖2.代碼:等待 ADC 自校準(zhǔn)完成

也就是說(shuō),ADCAL 位被置 1 后,始終沒(méi)有被硬件清 0,代表自校準(zhǔn)始終不成功。

2.2. 問(wèn)題分析

查看 STM32U5 的參考手冊(cè) RM0456 中關(guān)于自校準(zhǔn)的描述??紤]到校準(zhǔn)沒(méi)有成功,那么應(yīng)該看看是不是自校準(zhǔn)需要哪些條件,而這些條件并沒(méi)有成立。

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

wKgZomV1e7uAdIIgAACWubvvays217.jpg

圖3.ADC 自校準(zhǔn)要求條件

也就是說(shuō),在初始化自校準(zhǔn)之前,需要保證 3 個(gè)條件:

1) ADC 的電壓調(diào)整器已經(jīng)使能并正常工作(ADVREGEN = 1 且 LDORDY =1)

2) ADC 沒(méi)有打開(kāi)(ADEN=0)

3) 自動(dòng)掉電模式?jīng)]有使能(AUTOFF = 0)

回到剛才等待 ADC 自校準(zhǔn)完成的代碼,當(dāng)指針停留到這邊時(shí),在線調(diào)試檢查各個(gè)標(biāo)志位情況,發(fā)現(xiàn) ADVREGEN=1,ADEN=0,AUTOFF=0,LDORDY=0。所以,可以肯定的是就是 LDORDY 不為 1,也就是說(shuō) ADC 的電壓調(diào)整器還沒(méi)有準(zhǔn)備好,導(dǎo)致了自校準(zhǔn)無(wú)法成功并退出。

在 STM32U5 中,引入了一個(gè)新的 ADC 特性,叫 ADC 電壓調(diào)整器(ADC voltageregulator)。在使用 ADC 之前,這個(gè)電壓調(diào)整器必須被使能并且能夠穩(wěn)定工作。可以通過(guò)將 ADC_CR 寄存器中的 ADVREGEN 位置 1 來(lái)使能它,然后必須要等這個(gè)電壓調(diào)整器的啟動(dòng)時(shí)間之后,才可以正常啟動(dòng)自校準(zhǔn)或者使用 ADC。這個(gè) LDO 有沒(méi)有準(zhǔn)備好,可以通過(guò) ADC_ISR 寄存器中的 LDORDY 這個(gè)位來(lái)判斷。LDORDY=1 才代表了 LDO 已經(jīng)準(zhǔn)備好了。

回到客戶的問(wèn)題,可以知道即使 ADVREGEN 置 1 了,LDORDY 始終沒(méi)有置起來(lái),電壓調(diào)整器沒(méi)有啟動(dòng)工作,難道是 ADC 的這個(gè)電壓調(diào)整器壞掉了?

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

wKgZomV1e7uAZofaAAG5GJGPf38431.jpg

圖4.獨(dú)立的模擬外設(shè)供電

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

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

wKgZomV1e7uAQJKdAAC6z9jcInY958.jpg

圖5.ASV 位描述

ASV 的配置是沒(méi)有在 STM32CubeMX 中進(jìn)行配置的,所以需要在后期添加。所以,很可能就是因?yàn)闆](méi)有將 ASV 置位以使能 VDDA,導(dǎo)致 ADC 外設(shè)被隔離,并沒(méi)有得到供電,所以 ADC 的電壓調(diào)整器不可能正常工作,LDORDY 也不可能為 1。

03

問(wèn)題解決

在工程項(xiàng)目中搜索 ASV,可以找到兩個(gè) API,如圖 6。

wKgZomV1e7uAe3w2AADPvGnknRw460.jpg

圖6.VDDA 使能或禁用 API

也就是說(shuō),我們需要先將 HAL_PWREx_EnableVddA()添加到代碼中。因?yàn)槠鋵儆贛SP 硬件配置,所以將其加到 HAL_MspInit()函數(shù),如圖 7 所示。

wKgZomV1e7uACC1ZAACpY3G4lvA520.jpg

圖7.修改過(guò)的 HAL_MspInit()函數(shù)

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

04

小結(jié)

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

其實(shí)不僅僅是 VDDA 可以隔離,VDDIO2 也是可以的,通過(guò) PWR_SVMCR 寄存器的IO2SV 位進(jìn)行控制。

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

wKgZomV1e7yAZ9XYAAC98ziGubc031.jpg

圖8.例程的 HAL_MspInit()函數(shù)

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

wKgZomV1e7yACjBNAAHiBpzEGaQ725.png

完整內(nèi)容請(qǐng)點(diǎn)擊“閱讀原文”下載原文檔。


原文標(biāo)題:實(shí)戰(zhàn)經(jīng)驗(yàn) | STM32U5 ADC 自校準(zhǔn)不成功的問(wèn)題分析

文章出處:【微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6037

    文章

    44558

    瀏覽量

    635399
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    356089

原文標(biāo)題:實(shí)戰(zhàn)經(jīng)驗(yàn) | STM32U5 ADC 自校準(zhǔn)不成功的問(wèn)題分析

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32項(xiàng)目實(shí)戰(zhàn):基于STM32U5的智能大棚溫控系統(tǒng)(LVGL),附項(xiàng)目教程/源碼

    《智能大棚溫控系統(tǒng)_STM32U5》項(xiàng)目完整文檔、項(xiàng)目源碼,點(diǎn)擊下方鏈接免費(fèi)領(lǐng)取。項(xiàng)目資料領(lǐng)取https://s.c1ns.cn/F5XyUSTM32項(xiàng)目實(shí)戰(zhàn)之“智能大棚溫控系統(tǒng)
    的頭像 發(fā)表于 11-13 17:08 ?618次閱讀
    <b class='flag-5'>STM32</b>項(xiàng)目<b class='flag-5'>實(shí)戰(zhàn)</b>:基于<b class='flag-5'>STM32U5</b>的智能大棚溫控系統(tǒng)(LVGL),附項(xiàng)目教程/源碼

    STM32項(xiàng)目實(shí)戰(zhàn):基于STM32U5的火災(zāi)報(bào)警系統(tǒng)(LVGL),附項(xiàng)目教程/源碼

    《火災(zāi)報(bào)警系統(tǒng)_STM32U5》項(xiàng)目完整文檔、項(xiàng)目源碼,點(diǎn)擊下方鏈接免費(fèi)領(lǐng)取。項(xiàng)目資料領(lǐng)取https://s.c1ns.cn/F5XyUSTM32項(xiàng)目實(shí)戰(zhàn)之“火災(zāi)報(bào)警系統(tǒng)”(基于STM32U5
    的頭像 發(fā)表于 11-13 14:18 ?623次閱讀
    <b class='flag-5'>STM32</b>項(xiàng)目<b class='flag-5'>實(shí)戰(zhàn)</b>:基于<b class='flag-5'>STM32U5</b>的火災(zāi)報(bào)警系統(tǒng)(LVGL),附項(xiàng)目教程/源碼

    ADS127L11配置ADC使用外部時(shí)鐘以及FILTER[4:0]都不成功,為什么?

    配置ADC使用外部時(shí)鐘以及FILTER[4:0]都不成功,spi的時(shí)序都是正常的,使用的是4線spi
    發(fā)表于 11-13 08:03

    STM32項(xiàng)目實(shí)戰(zhàn):基于STM32U5的智能燈光控制系統(tǒng)(LVGL),附項(xiàng)目教程/源碼

    《智能燈光控制系統(tǒng)_STM32U5》項(xiàng)目完整文檔、項(xiàng)目源碼,點(diǎn)擊免費(fèi)領(lǐng)取。項(xiàng)目資料領(lǐng)?。篽ttps://s.c1ns.cn/F5XyUSTM32項(xiàng)目實(shí)戰(zhàn)之“智能燈光控制系統(tǒng)”(基于STM32U
    的頭像 發(fā)表于 11-07 18:50 ?855次閱讀
    <b class='flag-5'>STM32</b>項(xiàng)目<b class='flag-5'>實(shí)戰(zhàn)</b>:基于<b class='flag-5'>STM32U5</b>的智能燈光控制系統(tǒng)(LVGL),附項(xiàng)目教程/源碼

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

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

    STM32H5STM32U5在trustzone上有哪些不同?

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

    使用STM32CUBEMX創(chuàng)建一個(gè)基于RTOS的工程,互斥量創(chuàng)建不成功的原因?

    使用STM32CUBEMX創(chuàng)建一個(gè)基于RTOS的工程,使用了互斥量,但互斥量創(chuàng)建不成功
    發(fā)表于 05-15 07:22

    STM32F103 USB枚舉不成功的原因?

    (NVIC_VectTab_FLASH,0x8800),但此時(shí)USB便枚舉不成功,此時(shí)其他中斷是正常的;但若把APP起始地址改為0X8000000不使用IAP進(jìn)行跳轉(zhuǎn)則枚舉沒(méi)有問(wèn)題.我比較懷疑中斷向量這塊的設(shè)置是不是還有問(wèn)題,跪求高手幫忙看看.我使用的MCU為STM32F
    發(fā)表于 04-29 06:29

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

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

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

    各位大神,我是一個(gè)入門級(jí)的超級(jí)菜鳥(niǎo),遇到一個(gè)問(wèn)題: 為啥子我同樣的位帶操作在STM32F103C8T6上操作成功,但是在STM32F103RGT6位帶操作不成功。
    發(fā)表于 04-19 06:32

    STM32U5,STM32WB及STM32L4開(kāi)發(fā)板,哪個(gè)開(kāi)發(fā)板擁有較多數(shù)量的ADC?

    請(qǐng)問(wèn),我現(xiàn)在需要開(kāi)發(fā)一個(gè)項(xiàng)目,在這個(gè)項(xiàng)目中需要使用較多數(shù)量的傳感器(至少8個(gè)),這些傳感器需要進(jìn)行信號(hào)采集,現(xiàn)在在使用STM32U5,STM32WB及STM32L4芯片的開(kāi)發(fā)板中,哪些開(kāi)發(fā)板擁有較多數(shù)量的
    發(fā)表于 03-20 08:01

    STM32U5開(kāi)發(fā)板ADC校準(zhǔn)超時(shí)怎么解決?

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

    基于STM32U5片內(nèi)溫度傳感器正確測(cè)算溫度實(shí)戰(zhàn)經(jīng)驗(yàn)分享

    STM32 在內(nèi)部都集成了一個(gè)溫度傳感器,STM32U5 也不例外。這個(gè)位于晶圓上的溫度傳感器雖然不太適合用來(lái)測(cè)量外部環(huán)境的溫度,但是用于監(jiān)控晶圓上的溫度還是挺好的,以防止芯片過(guò)溫運(yùn)行。
    的頭像 發(fā)表于 02-22 17:27 ?4213次閱讀
    基于<b class='flag-5'>STM32U5</b>片內(nèi)溫度傳感器正確測(cè)算溫度<b class='flag-5'>實(shí)戰(zhàn)經(jīng)驗(yàn)</b>分享

    盤點(diǎn)那些硬件+項(xiàng)目學(xué)習(xí)套件:STM32U5單片機(jī)開(kāi)發(fā)板及入門常見(jiàn)問(wèn)題解答

    型號(hào)STM32學(xué)習(xí)感興趣的朋友可以了解?;旧嫌辛?b class='flag-5'>STM32U5經(jīng)驗(yàn),再去學(xué)習(xí)STM32G0/F1/F4核心,就會(huì)上手很快。STM32U5
    發(fā)表于 02-19 16:59

    基于LL庫(kù)實(shí)現(xiàn)STM32U5 LPTIM功能

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