LL庫實現ADC多通道DMA讀取

2021-10-05 03:03:20 字數 1078 閱讀 7371

首先依舊使用stcubemx配置一下工程

我這裡使用的是adc1的多個通道,具體看下面配置圖,比較簡單,因為我使用了dma,配置好adc之後還需要配置一下dma。

1,adc配置

2,dma配置,需要配置通道以及方向,是外設到記憶體還是記憶體到記憶體,以及快取區資料寬度。

3,配置好以上後,我們還需要手動新增外設位址以及記憶體位址等

下面看**:

ll_dma_setdatalength(dma1,ll_dma_channel_1,nofchanel);

ll_dma_setperiphaddress(dma1,ll_dma_channel_1,ll_adc_dma_getregaddr(adc1, ll_adc_dma_reg_regular_data));

ll_dma_setmemoryaddress(dma1,ll_dma_channel_1,(uint32_t)&adc_convertedvalue);

ll_dma_enablechannel(dma1,ll_dma_channel_1);

ll_adc_enable(adc1);

// adc開始校準

ll_adc_startcalibration(adc1);

// 等待校準完成

while(ll_adc_iscalibrationongoing(adc1));

//設定adc組通過dma定期轉換資料傳輸

ll_adc_reg_setdmatransfer(adc1,ll_adc_reg_dma_transfer_unlimited);

//ll_adc_reg_startconversion(adc1); //對於f0系列的晶元需要加上這句**

設定好以上之後,dma會自動開始搬運,我們檢視adc_convertedvalue陣列就可以看到資料了。

ADC 多通道DAM傳輸

一 初始化dma傳輸 dma inittypedef dma initstructure 定義結構體 rcc ahbperiphclockcmd rcc ahbperiph dma1,enable 開啟dma時鐘 dma deinit dma1 channel1 決定資料從 來到 去 dma ini...

STM32多通道ADC操作

自 今天嘗試了下stm32的adc取樣,並利用dma實現取樣資料的直接搬運儲存,這樣就不用cpu去參與操作了。找了不少例子參考,adc和dma的設定了解了個大概,並直接利用開發板來做一些實驗來驗證相關的操作,保證自己對各部分設定的理解。我這裡用了3路的adc通道,1路外部變阻器輸入,另外兩路是內部的...

STM32的ADC取樣與多通道ADC取樣

stm32庫開發實戰指南 劉火良,楊森著 原理性質的東西還是少講,因為上面那本書裡面講解的很詳細了,直接來看硬體電路圖 這裡使用的是3362電位器 10k 即用stm32來測量pb0和gnd兩端的電壓,這樣的電路設計比較簡單也容易理解,但是存在一定的弊端,下面給出 stm32庫開發實戰指南 上面配套...