99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

測(cè)試代碼中使用DMA傳輸,定時(shí)器觸發(fā)ADC

茶話(huà)MCU ? 來(lái)源:ST MCU 信息交流 ? 2020-08-10 16:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

有人在使用STM32G0芯片的ADC模塊時(shí),往往因?yàn)閽呙枘J降睦斫獠坏轿换蜻x擇不當(dāng)導(dǎo)致些問(wèn)題。這里就該話(huà)題做點(diǎn)簡(jiǎn)單分享介紹,不妨以一個(gè)實(shí)例展開(kāi)。

現(xiàn)在共用到ADC1模塊的4個(gè)ADC通道,即1個(gè)片內(nèi)Vrefint通道和其它三個(gè)外部通道CH8,CH10,CH17。下面測(cè)試代碼中使用DMA傳輸,定時(shí)器觸發(fā)ADC.

它們的硬件連接情況如下,其中VRefint為內(nèi)部參考電壓,其電壓值大概1.2V樣子。

對(duì)于STM32G0系列,ADC掃描模式可以有兩種,分別是不完全配置序列模式和完全配置序列模式。我們先看看不完全配置序列模式。

不完全配置序列模式

在該模式下,ADC_CFGR1寄存器中的CHESELRMOD位必須被清零。

被轉(zhuǎn)換通道的掃描順序按照ADC通道固有序號(hào)的大小順序依次進(jìn)行,掃描方向可以軟件配置為向前【forward】或后退【backward】。任何ADC通道都可以配置進(jìn)該序列中,總的序列長(zhǎng)度由寄存器ADC_CHSELR中被置位的CHSELx個(gè)數(shù)決定,最多可配置18個(gè)通道。

我們以上面提到的CH8、CH10、CH17和VRefint通道【它對(duì)應(yīng)ADC通道CH13】為例,若將上述4個(gè)通道配置為不完全序列模式,只需將ADC_CHSELR寄存器中的CHSELx相應(yīng)位進(jìn)行置1即可。如下圖所示:

若選擇forward掃描模式,則按通道號(hào)從小到大的順序依次實(shí)施轉(zhuǎn)換,生成對(duì)應(yīng)于CH8、CH10、CH13、CH17的結(jié)果。使用STM32CubeMx的配置如下:

既然掃描按默認(rèn)通道號(hào)大小順序進(jìn)行,自然就無(wú)須RANK順序的配置了。

編譯運(yùn)行后可以看到結(jié)果,我在內(nèi)存里放了兩組數(shù)據(jù)以便比較觀(guān)察。

從結(jié)果來(lái)看跟實(shí)際情況是一致的,轉(zhuǎn)換結(jié)果依次來(lái)自CH8/CH10/CH13/CH17。其中那個(gè)149x數(shù)值來(lái)自對(duì)內(nèi)部Vrefint的轉(zhuǎn)換結(jié)果。

那么,對(duì)于同樣的ADC通道及硬件連接,若采用完全配置序列模式會(huì)怎么樣呢?

完全配置序列模式

在該模式下,ADC_CFGR1寄存器中的CHESELRMOD位必須被置1。

全序列可支持的通道數(shù)最多8個(gè),掃描順序不是依照硬件約定的通道號(hào)來(lái)安排,而是依據(jù)ADC_CHSELR寄存器中的從SQ1[3:0]到SQ8[3:0]所選擇的通道順序進(jìn)行,即按照我們?cè)贑ubeMX或代碼中配置的RANK順序進(jìn)行,不再涉及掃描方向forward/backward的配置,并且只有通道0 到 通道14可以被選擇!

還有,當(dāng)SQn[3:0]里的賦值等于0b1111,即0x0f時(shí)則該通道選擇域以及后續(xù)SQn的通道選擇無(wú)效。比方說(shuō),假設(shè)SQ3[3:0]的數(shù)據(jù)為0b1111,則表示從SQ3[3:0]開(kāi)始直到SQ8[3:0]的通道選擇無(wú)效。由于SQn[3:0]才4位,所有它也沒(méi)法選擇高于14的有效通道號(hào)?!菊?qǐng)?zhí)貏e注意這些特性!】

看到這里,我們不禁想到前面預(yù)先安排的4個(gè)通道中的有個(gè)CH17,顯然不適合這種模式。如果被錯(cuò)誤地強(qiáng)行使用該模式,基于CubeMx配置和現(xiàn)有Cube庫(kù)所產(chǎn)生的代碼運(yùn)行結(jié)果會(huì)怎么樣呢?

先用CubeMX進(jìn)行配置:

4個(gè)通道的掃描順序配置如下,相比前面多了RANK順序配置。

先撇開(kāi)CH17合法性不談,不難看出這里跟前面的掃描順序配置有點(diǎn)不一樣,這里的配置為我們提供了更多的自主性及便利性,轉(zhuǎn)換掃描并不固定于通道號(hào)的順序,具體由SQn[3:0]的配置選擇決定。我這里讓SQ1選擇CH8,SQ2選擇CH10,SQ3選擇CH17,SQ4選擇CH13,分別對(duì)應(yīng)配置中的RANK1、RANK2、RANK3、RANK4順序。

編譯運(yùn)行查看結(jié)果:

前面說(shuō)過(guò),CH17硬件上是接地的,顯然此時(shí)對(duì)應(yīng)于CH17的轉(zhuǎn)換值【綠色箭頭所指】跟實(shí)際情況完全不符,其它三個(gè)倒是跟實(shí)際情況吻合。409x對(duì)應(yīng)CH8接VDD,0對(duì)應(yīng)CH10接GND,149x對(duì)應(yīng)內(nèi)部vrefint。

我嘗試將CH17接到VDD,轉(zhuǎn)換結(jié)果還是跟實(shí)際情況還是完全不相符。

結(jié)合上面的介紹,我們知道對(duì)于完全配置序列模式不能選用高于通道14的通道號(hào)。我們不妨通過(guò)寄存器進(jìn)一步看看,當(dāng)我們錯(cuò)誤地強(qiáng)行使用CH17時(shí)在現(xiàn)有庫(kù)代碼的情況下,對(duì)應(yīng)的SQ3[3:0]真正的值是多少?到底選擇了什么通道?還是CH17嗎?

在調(diào)試環(huán)境下,打開(kāi)通道選擇寄存器,可以看到下面結(jié)果:

從上面通道選擇寄存器不難看出,除了SQ3外,其它三個(gè)配置都是正確的,跟我們預(yù)設(shè)的通道是一致的。但是,SQ3被錯(cuò)誤地配置為CH1了,也就是說(shuō)上面看到的所謂CH17的轉(zhuǎn)換結(jié)果都是來(lái)自CH1.難怪不論怎么改變CH17的外部連接時(shí),SQ3選擇通道所對(duì)應(yīng)的轉(zhuǎn)換結(jié)果沒(méi)有相應(yīng)變化,跟CH17的管腳電壓也沒(méi)啥關(guān)系。

看到這里有人可能會(huì)想,如果我們?cè)谇懊嬉?guī)劃ADC通道時(shí)把CH1同時(shí)規(guī)劃進(jìn)來(lái)、硬件上恰好也接地,這時(shí)就可能發(fā)生誤判!這種巧合性的誤判,有時(shí)可能給我們的調(diào)試帶來(lái)極大隱患而一會(huì)半會(huì)又找不到原因。當(dāng)然,具體會(huì)發(fā)生些什么要因具體應(yīng)用而定。這里只是簡(jiǎn)單提醒下,就此打住。

總之,這點(diǎn)在STM32G0 ADC應(yīng)用中是個(gè)很容易出錯(cuò)的地方,將本不該用在完全配置序列模式的通道被錯(cuò)誤地強(qiáng)行使用,雖有轉(zhuǎn)換結(jié)果,而轉(zhuǎn)換結(jié)果卻來(lái)自別的通道,往往為此覺(jué)得問(wèn)題詭異、不可思議而備受折騰。

最后,稍微小結(jié)下。對(duì)于STM32G0系列的ADC模塊來(lái)說(shuō),其ADC通道在被轉(zhuǎn)換時(shí)涉及到轉(zhuǎn)換序列配置問(wèn)題,這里有兩種轉(zhuǎn)換序列配置模式,即不完全配置序列模式和完全配置序列模式。

所謂不完全配置序列模式,在進(jìn)行多個(gè)通道AD轉(zhuǎn)換時(shí),轉(zhuǎn)換順序由各通道自身的硬件序列號(hào)和掃描方向決定,其中硬件序列號(hào)即CHn在數(shù)據(jù)手冊(cè)里已經(jīng)明確定義,掃描方向通過(guò)寄存器配置。整個(gè)轉(zhuǎn)換序列可支持的通道數(shù)多達(dá)18個(gè),沒(méi)有被排除在外的通道。

而完全配置序列模式呢,在進(jìn)行多個(gè)通道AD轉(zhuǎn)換時(shí),轉(zhuǎn)換順序由通道選擇寄存器中通道選擇域SQn[3:0]來(lái)決定,即按照SQ1,SQ2.。。。。SQ7,SQ8的順序,而且SQn[3:0]只能選擇CH0到CH14的通道,整個(gè)序列最多支持8個(gè)通道。顯然,CH15~CH18不能使用該模式。

說(shuō)到這里,或許有人會(huì)問(wèn),如果只使用1個(gè)ADC通道,還有這個(gè)轉(zhuǎn)換序列模式的選擇問(wèn)題嗎?你把1個(gè)通道看成一個(gè)特殊的轉(zhuǎn)換序列來(lái)理解就知道有沒(méi)有這個(gè)模式選擇問(wèn)題了。

芯片設(shè)計(jì)人員在此提供了兩種轉(zhuǎn)換序列模式,本意旨在讓我們能在實(shí)際應(yīng)用中可以根據(jù)實(shí)際需求靈活選擇,然而,往往由于開(kāi)發(fā)人員的慣性思維和無(wú)視手冊(cè)導(dǎo)致在這個(gè)地方遇上點(diǎn)麻煩或困惑。在此分享之,祝君好運(yùn)!

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

    關(guān)注

    99

    文章

    6709

    瀏覽量

    549242
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3298

    瀏覽量

    118964
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    576

    瀏覽量

    103269

原文標(biāo)題:STM32G0系列ADC掃描序列模式解讀

文章出處:【微信號(hào):stmcu832,微信公眾號(hào):茶話(huà)MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32F723ZET6使用ADC捕獲標(biāo)準(zhǔn)正弦波并通過(guò)USB主動(dòng)上報(bào),正弦波重新擬合后存在凹陷峰怎么解決?

    捕獲5KHZ頻率的正弦波,使用的是100khz定時(shí)器2溢出事件觸發(fā)ADC采樣,采樣144cyc,使用DMA方式傳輸
    發(fā)表于 06-20 07:22

    stm32f407無(wú)法配置定時(shí)器2為全部dma怎么解決?

    本人使用定時(shí)器2配置為4個(gè)通道的dma捕獲時(shí),出現(xiàn)stream6和stream7這兩個(gè)對(duì)應(yīng)的通道無(wú)法同時(shí)存在,在都配置的情況下,只要這兩個(gè)對(duì)應(yīng)的通道一接入外部信號(hào),就會(huì)出現(xiàn)所有dma無(wú)法產(chǎn)生中
    發(fā)表于 06-11 06:49

    MCU定時(shí)器/計(jì)數(shù)

    RISC-V核低功耗MCU通過(guò)靈活的定時(shí)器架構(gòu)、低功耗模式適配及硬件級(jí)中斷優(yōu)化,在工業(yè)控制、智能家居等場(chǎng)景中實(shí)現(xiàn)高精度計(jì)時(shí)與能耗控制的協(xié)同設(shè)計(jì),滿(mǎn)足復(fù)雜任務(wù)調(diào)度與實(shí)時(shí)響應(yīng)的雙重需求?。 一、?硬件
    的頭像 發(fā)表于 04-27 13:54 ?302次閱讀

    為什么在“PWM Adc Dma 344 S32CT”示例中使用ISR塊來(lái)讀取dma adc通道?

    我正在 MBDT 中使用 S32K358 進(jìn)行一個(gè)項(xiàng)目,我正在尋找啟用 DMA 傳輸類(lèi)型的 ADC 模塊。 在 ADC 示例“PWM
    發(fā)表于 04-08 06:39

    為什么無(wú)法設(shè)置DMA傳輸大???

    DMA傳輸大小我的代碼: 無(wú)效 ADCHS_DMA_init(void) { ////////////////////////////////// ADCHS采樣頻率設(shè)置
    發(fā)表于 03-17 07:08

    STM32使用外部中斷觸發(fā)ADC采樣DMA搬運(yùn)出現(xiàn)兩次進(jìn)入DMA中斷的異常情況,怎么解決?

    STM32使用外部中斷觸發(fā)ADC采樣DMA搬運(yùn)出現(xiàn)兩次進(jìn)入DMA中斷的異常情況,使用的HAL庫(kù)+MX配置的,示波器觀(guān)察波形ADC中斷進(jìn)入一次
    發(fā)表于 03-14 12:46

    STM32H723使用DMA方式實(shí)現(xiàn)定時(shí)器輸入捕獲只能執(zhí)行一次嗎?

    目的:我們希望在 STM32H723 平臺(tái)上以 DMA 模式實(shí)現(xiàn)定時(shí)器輸入捕獲,而不中斷當(dāng)前問(wèn)題:使用 Cube MX 配置相關(guān)參數(shù),只使用 TIM4 的 CH2 作為輸入采集直接模式,Slave
    發(fā)表于 03-12 08:21

    STM32H750使用定時(shí)器比較通道觸發(fā)DMA操作GPIO,偶爾會(huì)發(fā)生第一個(gè)脈沖寬度過(guò)短怎么解決?

    RCC配置: DMA設(shè)置: 定時(shí)器設(shè)置: 生成的協(xié)議是dshot600 期望產(chǎn)生的效果是一個(gè)電平至少為560ns的高低電平 但是在實(shí)際測(cè)試的過(guò)程發(fā)現(xiàn)周期性的出現(xiàn)第一個(gè)脈沖會(huì)非常小的問(wèn)題,不知道怎么排查 懇請(qǐng)各位能不能
    發(fā)表于 03-11 06:11

    STM32H743的高精度定時(shí)器觸發(fā)ADC采樣

    compare 1 上處產(chǎn)生觸發(fā)信號(hào)給ADC。根據(jù)網(wǎng)上的教程也一步步試過(guò)了,但是hrtim總是啟動(dòng)不了ADC。為了方便排查所以目前沒(méi)有使用DMA進(jìn)行轉(zhuǎn)運(yùn)數(shù)據(jù),也沒(méi)有寫(xiě)轉(zhuǎn)運(yùn)數(shù)據(jù)的處理函
    發(fā)表于 01-09 15:49

    定時(shí)器已安排!開(kāi)發(fā)小白看過(guò)來(lái)~

    或周期性地執(zhí)行代碼段,為物聯(lián)網(wǎng)設(shè)備的運(yùn)行提供了精確的時(shí)間控制。在多種應(yīng)用場(chǎng)景中都發(fā)揮著重要作用,例如:定時(shí)發(fā)送數(shù)據(jù)、周期性檢查傳感狀態(tài)等。 Air201最新資料下載: www.air201.cn 本文將通過(guò)demo示例,帶你了
    的頭像 發(fā)表于 12-31 14:30 ?443次閱讀
    <b class='flag-5'>定時(shí)器</b>已安排!開(kāi)發(fā)小白看過(guò)來(lái)~

    看門(mén)狗定時(shí)器的工作原理

    看門(mén)狗定時(shí)器是一種獨(dú)立的計(jì)時(shí)硬件模塊,其核心功能是倒計(jì)時(shí)。如果系統(tǒng)軟件在計(jì)時(shí)超時(shí)前沒(méi)有對(duì)其進(jìn)行復(fù)位操作(即“喂狗”),看門(mén)狗將觸發(fā)一個(gè)預(yù)定義的動(dòng)作,通常是系統(tǒng)復(fù)位或中斷。
    的頭像 發(fā)表于 10-21 14:18 ?1293次閱讀
    看門(mén)狗<b class='flag-5'>定時(shí)器</b>的工作原理

    定時(shí)器自動(dòng)控制開(kāi)關(guān)怎么設(shè)置

    定時(shí)器自動(dòng)控制開(kāi)關(guān)是一種常見(jiàn)的自動(dòng)化設(shè)備,廣泛應(yīng)用于家庭、工業(yè)、農(nóng)業(yè)等多個(gè)領(lǐng)域。通過(guò)定時(shí)器,用戶(hù)可以預(yù)設(shè)時(shí)間,讓設(shè)備在特定時(shí)間自動(dòng)開(kāi)啟或關(guān)閉,從而實(shí)現(xiàn)節(jié)能、提高效率和便利性。 一、定時(shí)器
    的頭像 發(fā)表于 09-19 16:19 ?4099次閱讀

    如何在汽車(chē)CAN應(yīng)用中使用負(fù)邊緣觸發(fā)觸發(fā)器節(jié)省電力

    電子發(fā)燒友網(wǎng)站提供《如何在汽車(chē)CAN應(yīng)用中使用負(fù)邊緣觸發(fā)觸發(fā)器節(jié)省電力.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 10:06 ?0次下載
    如何在汽車(chē)CAN應(yīng)用<b class='flag-5'>中使</b>用負(fù)邊緣<b class='flag-5'>觸發(fā)</b><b class='flag-5'>觸發(fā)器</b>節(jié)省電力

    用于ADCDMA乒乓

    電子發(fā)燒友網(wǎng)站提供《用于ADCDMA乒乓.pdf》資料免費(fèi)下載
    發(fā)表于 09-07 11:27 ?1次下載
    用于<b class='flag-5'>ADC</b>的<b class='flag-5'>DMA</b>乒乓

    STM32CUBEMX(3)--ADC通過(guò)DMA方式采樣,USART打印

    @TOC 概述 直接存儲(chǔ)訪(fǎng)問(wèn)(DMA)用于在外設(shè)與存儲(chǔ)之間以及存儲(chǔ)與存儲(chǔ)之間提供高速數(shù)據(jù)傳輸
    發(fā)表于 09-04 14:08