娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

STM32 DMA傳輸?shù)膯栴}分析

發(fā)布者:Meilin8888最新更新時間:2024-07-19 來源: elecfans關鍵字:STM32  DMA傳輸  ADC采集 手機看文章 掃描二維碼
隨時隨地手機看文章

問題1、

用戶使用STM32G473RET6芯片,開發(fā)環(huán)境STM32CubeMX+Keil(LL庫)。使用DMA1通道1,在半傳輸中斷和完全傳輸中斷里,拷貝ADC采集的數(shù)據(jù)。在應用過程中發(fā)現(xiàn)DMA半傳輸中斷和完全傳輸中斷不能獨立使用。


具體體現(xiàn):
1、在DMA1初始化時,打開了半傳輸中斷,關閉完全傳輸中斷,照樣能觸發(fā)完全傳輸中斷
LL_DMA_EnableIT_HT(DMA1,LL_DMA_CHANNEL_1);//打開DMA1半傳輸中斷
LL_DMA_DisableIT_TC(DMA1,LL_DMA_CHANNEL_1);//關閉DMA1完全傳輸中斷
2、在DMA1初始化時,關閉了半傳輸中斷,打開完全傳輸中斷,照樣能觸發(fā)半傳輸中斷
LL_DMA_EnableIT_TC(DMA1,LL_DMA_CHANNEL_1);//打開DMA1完全傳輸中斷
LL_DMA_DisableIT_HC(DMA1,LL_DMA_CHANNEL_1);//關閉DMA1半傳輸中斷

這個問題很讓他很困惑,想知道怎么回事。

關于這個問題,我們在操作DMA相關的使能位或做相關傳輸長度配置時,一定要注意他們往往要求在DMA通道未被使能的前提下進行【具體閱讀芯片手冊】。現(xiàn)在的問題是,他想對DMA傳輸中斷使能位進行改寫,依然也有這個前提。見下圖黃色高亮內(nèi)容,即當相應DMA通道被使能時,是不接受對相應DMA通道的傳輸完成和半完成中斷使能的改寫。

3c31184e-8f7a-11ee-939d-92fbcf53809c.png

換言之,這里若要對相應中斷使能位進行改寫,得先將DMA通道使能位【EN位】進行清零。使用LL庫的話就調(diào)用LL_DMA_DisableChannel()函數(shù)實現(xiàn),修改相應中斷使能位之后再將DMA通道打開,即調(diào)用LL_DMA_EnableChannel()函數(shù)。

3c7126be-8f7a-11ee-939d-92fbcf53809c.png

問題2、用戶使用STM32G431芯片,用到TIMER1的PWM功能,并啟用基于TIMER事件的DMA Burst傳輸實現(xiàn)4個比較通道寄存器的批量修改。使用CubeMx進行配置。配置時發(fā)現(xiàn)一點疑惑,為什么外設端不需地址自增的勾選。

3c831ab8-8f7a-11ee-939d-92fbcf53809c.png

現(xiàn)在用戶的具體情況就是利用TIMER更新事件觸發(fā)DMA請求,每次更新事件觸發(fā)DMA將4個內(nèi)存數(shù)據(jù)轉(zhuǎn)發(fā)給定時器的4個CCR寄存器。

3c985a36-8f7a-11ee-939d-92fbcf53809c.png

按照客戶的理解,在做DMA配置時這里的外設地址也應該勾選自增才對,可事實發(fā)現(xiàn)不勾選才結果正常,若選擇外設地址自增了反而異常。

3cb7314a-8f7a-11ee-939d-92fbcf53809c.png

3cddd4d0-8f7a-11ee-939d-92fbcf53809c.png

ST公司設計人員為了滿足DMA對TIMER寄存器批量訪問,還特別設計了2個寄存器,分別是TIMx_DCR和TIMx_DMAR。其中,DCR寄存器由DBL和DBA字段組成。

DBA:被訪問的第一個定時器寄存器相對于定時器地址映射表中的TIMx_CR1的地址偏移量【偏移量從0開始計算】。

DBL:每組批量訪問的寄存器個數(shù)【從0開始計算】。DMA訪問DMAR寄存器時,按照如下算式得到絕對地址實現(xiàn)對寄存器的逐個訪問。(TIM2_CR1address) + (DBA + DMA?index)x 4。

對于定時器DMA BURST傳輸,外設地址就是TIM2_DMAR寄存器的地址。DMA根據(jù)上面地址算式實現(xiàn)對多個TIMER寄存器的訪問。TIM2_DMAR寄存器地址本身是固定的,無須增減,所以基于定時器事件DMA Burst模式配置外設時不要做地址自增勾選。

當然,上面需求也可以基于非Burst模式來完成。假設還是基于4個內(nèi)存數(shù)據(jù)修改4個CCR寄存器,此時則需要4次定時器事件觸發(fā)DMA請求,做DMA配置時需要將內(nèi)存端和外設端都選擇地址自增模式。基于CubeMx的參考配置如下:

3d008994-8f7a-11ee-939d-92fbcf53809c.png

當然,相應API函數(shù)也跟Burst模式下的也不一樣【這里依然使用更新事件申請DMA】。 HAL_DMA_Start_IT(&hdma_tim1_up,(uint32_t)T1_CCRData, (uint32_t)&htim1.Instance->CCR1,4); 下面是兩種不同訪問模式下的示意圖,圖示可能更直觀些。

3d372936-8f7a-11ee-939d-92fbcf53809c.png

好,今天的分享就到這里,下次再聊。


關鍵字:STM32  DMA傳輸  ADC采集 引用地址:STM32 DMA傳輸?shù)膯栴}分析

上一篇:stm32是什么,它有哪些優(yōu)勢
下一篇:stm32ad采樣測電壓范圍

推薦閱讀最新更新時間:2025-06-07 23:38

stm32F4+lcd1602實現(xiàn)采集兩路adc并顯示
以STM32F403為控制核心,設計一種基于STM32的智能照明控制系統(tǒng),使用光敏電阻作為光照信息來源,使用GP2D12作為人物信息來源,當光照強度改變時,光敏電阻的阻值改變,從而改變STM32的采樣電壓。當人物移動時,紅外傳感器的電壓改變從而改變采樣電壓。當光照強度小于一定值,且感應到有人時,LED亮。 通過光敏電阻和GP2D12傳感器獲取光照和紅外信息,作為模擬量,傳入STM32F4的采集端口。STM32F4進行模數(shù)轉(zhuǎn)換后,在LCD1602上進行顯示。 采用了HAL庫進行配置STM32F4,一直有個問題就是proteus仿真DS18B20和DHT11這種帶有時序要求的傳感器,同STM32通信時出現(xiàn)時序錯誤,有經(jīng)驗的師兄
[單片機]
stm32F4+lcd1602實現(xiàn)<font color='red'>采集</font>兩路<font color='red'>adc</font>并顯示
stm32f4中通過dma采集adc
環(huán)境: 主機:WIN8 開發(fā)環(huán)境:MDK5.13 MCU:STM32F407IGH 源代碼: drv_power.h /********************************************************************* * 電源模塊驅(qū)動層頭文件 * (c)copyright 2015,jdh * All Right Reserved *新建日期:2014/10/20 by jdh *修改時間:2015/3/2 by jdh ********************************
[單片機]
qemu stm32特制版源碼編譯及調(diào)試
一,前言 qemu虛擬機還有下文,因為qemu最吸引我的地方就是二次開發(fā),可以模擬各種外設。可以參考我之前的blog qemu虛化原理入門--Apple的學習筆記 和 Qemu2.8虛擬機源碼分析—Apple的學習筆記 我已經(jīng)掌握了qemu2.8源碼的基礎及2.8源碼的編譯。并且我也使用過了基于stm32開發(fā)板的qemu二次開發(fā)環(huán)境。但是我的目的是能修改qemu源碼,達到更加深入的理解程度,而stm32的qemu二次開發(fā)源碼就成為了我現(xiàn)在主要研究的對象。 二:編譯可調(diào)試的stm32_qemu二次開發(fā)源碼 通過查看版本發(fā)現(xiàn)是基于qemu2.8開發(fā)的,對比STM32二次開發(fā)的源碼和qemu2.8。能發(fā)現(xiàn)CONFIG_GNU_MCU_E
[單片機]
STM32 HAL庫 IIC 協(xié)議庫函數(shù)
/* 第1個參數(shù)為I2C操作句柄 第2個參數(shù)為從機設備地址 第3個參數(shù)為從機寄存器地址 第4個參數(shù)為從機寄存器地址長度 第5個參數(shù)為發(fā)送的數(shù)據(jù)的起始地址 第6個參數(shù)為傳輸數(shù)據(jù)的大小 第7個參數(shù)為操作超時時間 */ HAL_I2C_Mem_Write(&hi2c2,salve_add,0,0,PA_BUFF,sizeof(PA_BUFF),0x10); HAL_I2C_Mem_Write_IT(); HAL_I2C_Mem_Read(); HAL_I2C_Mem_Read_IT(); HAL_I2C_Mem_Read_DMA(); HAL_I2C_Mem_Write_DMA(); HAL_I2C_Mas
[單片機]
STM32 實現(xiàn) 4*4 矩陣鍵盤掃描(HAL庫、標準庫 都適用)
本文實現(xiàn)的代碼是基于STM32HAL庫的基礎上的,不過標準庫也可以用,只是調(diào)用的庫函數(shù)不同,邏輯跟配置是一樣的,按我這里的邏輯來配置即可。 1、鍵盤原理圖:   原理舉例:先把 F0-F7 內(nèi)部拉高,這樣這個8個引腳都是高電平,然后就進行列掃描。例如:假如按下3按鈕,Y3 列掃描,把F4先拉低,然后讀取F0-F3的狀態(tài),就會讀出為1110,這就可 以知道是F3行拉低了,同時這時候是程序控制F4拉低的,這樣就可以知道是F4列導致它轉(zhuǎn)態(tài)變化了的,這樣就可以定位出是F4列F3行的按鍵按下了;其他的列也是這樣子掃描,就可以實現(xiàn)了。 2、STM32 cubemx 引腳配置圖:    這里用外部晶振內(nèi)部晶振都可以,時鐘對這個沒什么影響
[單片機]
<font color='red'>STM32</font> 實現(xiàn) 4*4 矩陣鍵盤掃描(HAL庫、標準庫 都適用)
STM32中的memcpy函數(shù)的使用
1 簡述 最近在用JY61做一個傾角項目。剛好商家那里有個示例代碼有寫這個函數(shù)。正好給大家講下這個函數(shù)是怎么用的。 上面這個圖呢,是我從商家那里截取出來的。什么意思呢我下面給大家講下。 2 memcpy定義是什么? memcpy 函數(shù)用于 把資源內(nèi)存(src所指向的內(nèi)存區(qū)域) 拷貝到目標內(nèi)存(dest所指向的內(nèi)存區(qū)域);拷貝多少個?有一個size變量控制拷貝的字節(jié)數(shù); 函數(shù)原型:void *memcpy(void *dest, void *src, unsigned int count); 簡單來說呢就是把void *src內(nèi)的數(shù)據(jù)復制到void *dest里面。unsigned int count這個
[單片機]
STM32學習筆記7.2】定時器計時
前言 本系列文章統(tǒng)一圍繞STM32F103C8T6最小系統(tǒng)開發(fā)板進行記錄,如涉及其他開發(fā)板將會特別說明。 定時器時鐘頻率 SystemInit()- SetSysClock()- SetSysClockTo72()- 設置APB1為2分頻 - 通用定時器時鐘頻率為2*36MHz = 72MHz image.png 定時器計時配置思路 開啟定時器時鐘 通用定時器掛載在APB1總線下。 配置定時器時基單元+使能定時器 image.png 溢出時間為1ms:arr = 1, psc = 35999 TIM_CounterMode_Up:向上計數(shù)模式 TIM_CKD_DIV1:決定數(shù)字濾波器采樣頻率的參數(shù),在輸入
[單片機]
stm32系統(tǒng)架構及其時鐘系統(tǒng)
1 系統(tǒng)組成 八個單元----4主動,4被動,主動或被動單元與總線矩陣有關。 2 時鐘信號處理模式 3 時鐘設計 3.1 時鐘源分類 3.1.1RC時鐘 RC時鐘其特點是精度低,但體積小,因此經(jīng)常被單片機作為內(nèi)置時鐘 3.1.2 OSC時鐘 osc時鐘與RC正好相反,即更高的精度與更大的體積,在需要高精度時鐘信號的場景中作為外接時鐘接入 4 選擇器開關 4.1 作用 他的作用為選擇時鐘信號由它來絕定何種時鐘信號可以通過,下圖中用綠線標出 4.2分頻器 4.2.1預分頻器 預分頻器對時鐘信號進行預分頻 4.2.2倍頻器 5 控制器(與門)
[單片機]
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 兴城市| 东乡族自治县| 大石桥市| 滕州市| 梁河县| 墨竹工卡县| 郑州市| 忻州市| 齐齐哈尔市| 崇州市| 万源市| 历史| 阿拉善右旗| 鄂伦春自治旗| 沈丘县| 富锦市| 临泉县| 岱山县| 日照市| 霍邱县| 读书| 河北省| 景宁| 和田县| 岐山县| 泰安市| 萝北县| 河北省| 汨罗市| 永修县| 高碑店市| 南宫市| 柳江县| 潍坊市| 民丰县| 石首市| 佳木斯市| 岗巴县| 嘉鱼县| 长白| 乳山市|