有人利用STM32H743系列芯片做開發(fā),他想使用片內(nèi)BDMA將GPIO的數(shù)據(jù)讀到內(nèi)存,并通過LPTIM觸發(fā)DMA傳輸時(shí)卻遇到點(diǎn)麻煩,發(fā)現(xiàn)總是實(shí)現(xiàn)不了。這里我簡(jiǎn)單介紹下實(shí)現(xiàn)過程,并做些提醒。
STM32H7系列的時(shí)鐘系統(tǒng)以及內(nèi)部總線、功能框架相比其它M3/M4內(nèi)核的STM32芯片要負(fù)責(zé)不少。整個(gè)芯片根據(jù)運(yùn)行時(shí)鐘高低及總線架構(gòu)大致分為3個(gè)區(qū)域,其中BDMA位于區(qū)域3即D3域。
在STM32H7系列參考手冊(cè)中有下面的一副系統(tǒng)功能框圖:
我們?cè)谏蠄D的右下角可以看到BDMA,而且BDMA只能訪問AHB4APB4總線上的外設(shè)和SRAM4及備份SRAM. 另外,我們還可以從手冊(cè)上進(jìn)一步了解到,GPIO外設(shè)都是掛在AHB4總線上的。
結(jié)合上面介紹可知,現(xiàn)在既然使用BDMA,內(nèi)存RAM就不能選擇SRAM4和備份RAM以外的區(qū)域,否則BDMA鞭長莫及而訪問不到他們。這是要注意的地方。
另外,這里需要用到LPTIM2的輸出事件來觸發(fā)DMA請(qǐng)求,要使用DMAMUX并完成相關(guān)配置。
配置LPTIM2讓它可以產(chǎn)生周期性輸出事件即可,實(shí)際參數(shù)視具體應(yīng)用而擬定。
現(xiàn)在對(duì)BDMA做些配置,如下圖示。LPTIM2的每次輸出事件申請(qǐng)一個(gè)DMA請(qǐng)求。
另外,我還配置了GPIOC的幾個(gè)管腳,以便做測(cè)試。這里就不貼配置截圖了。
把時(shí)鐘系統(tǒng)配置完后就可以基于STM32CubeIDE和STM32Cube庫的工程。
再添加幾行用戶代碼就可以著手測(cè)試。添加的函數(shù)代碼分別是關(guān)于開啟DMAmux、啟動(dòng)DMA傳輸和啟動(dòng)LPTIM2的操作。
LPTIM_HandleTypeDefhlptim2;
DMA_HandleTypeDefhdma_bdma_generator0;
這里我把GPIO_INData[]數(shù)組地址指定到了BDMA可以訪問到的SRAM4.,它對(duì)應(yīng)STM32CubeIDE鏈接文件里的RAM_D3。
最后驗(yàn)證結(jié)果,我們可以看到BDMA從GPIOC端口讀到的數(shù)據(jù)。
整體來講,實(shí)現(xiàn)起來比較簡(jiǎn)單,重點(diǎn)注意BDMA可以訪問哪些地方弄清楚,在指定內(nèi)存地址這個(gè)地方不同IDE環(huán)境操作上略有差異。再就是要用到LPTIM周期性事件申請(qǐng)DMA請(qǐng)求來實(shí)現(xiàn)傳輸。
審核編輯:郭婷
-
芯片
+關(guān)注
關(guān)注
459文章
52494瀏覽量
440672 -
總線
+關(guān)注
關(guān)注
10文章
2959瀏覽量
89743
原文標(biāo)題:STM32H7 BDMA應(yīng)用示例
文章出處:【微信號(hào):stmcu832,微信公眾號(hào):茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
使用STM32CubeIDE對(duì)STM32H7進(jìn)行開發(fā)和調(diào)試,CM4始終報(bào)\"Failed to read ROM table via AP 3\"錯(cuò)誤怎么解決?
STM32H743VIT6 ST單片機(jī) 參數(shù)及應(yīng)用場(chǎng)景

單片機(jī)ST控制lan8651的示例
如何通過J-Link實(shí)現(xiàn)STM32H5控制調(diào)試端口

使用STM32H7的FDCAN通訊,為什么CAN1會(huì)收到CAN2的幀ID,CAN2也會(huì)收到CAN1的?
當(dāng)內(nèi)存不夠時(shí),stm32h7 ITCM可以當(dāng)普通ram用嗎?
使用H723的SPI6+BDMA組合,通信過程經(jīng)常報(bào)UDR和OVR錯(cuò)誤中斷怎么解決?
求助,關(guān)于STM32H7系列芯片下的ECC功能的疑問求解
STM32H7 ADC_IRQHandler和ADC3_IRQHandler這兩個(gè)中斷入口函數(shù)在使用上有什么區(qū)別?
STM32H7 0x00000000地址的內(nèi)容引發(fā)hardfault怎么解決?
【正點(diǎn)原子STM32H7R3開發(fā)套件試用體驗(yàn)】流水燈
【正點(diǎn)原子STM32H7R3開發(fā)套件試用體驗(yàn)】開箱、簡(jiǎn)介、上電、工程測(cè)試
【正點(diǎn)原子STM32H7R3開發(fā)套件試用體驗(yàn)】+01-開箱體驗(yàn)
STM32嵌入式顯示器:首款采用STM32H7的高清屏幕,讓各種規(guī)模的項(xiàng)目都能顯示漂亮的GUI

評(píng)論