利用DMA實現取樣資料的直接搬運儲存

2021-09-28 15:19:06 字數 1203 閱讀 1393

嘗試了下stm32的adc取樣,並利用dma實現取樣資料的直接搬運儲存,這樣就不用cpu去參與操作了。

我這裡用了3路的adc通道,1路外部變阻器輸入,另外兩路是內部的溫度取樣和vrefint,這樣就能組成連續的取樣,來測試多通道adc自動掃瞄了,adc分規則轉換和注入轉換,其實規則轉換就是按照既定的設定來順序轉換,而注入轉換就是可以在這順序佇列中插隊一樣,能夠提前轉換了。

初始化設定://pc0 for anagle sample

```c

static

void

protect_clkinit

(void

)static

void

protect_gpioinit

(void

)static

void

protect_adcinit

(void

)static

void

protect_dmainit

(void

)

複製**設定好後測試,發現乙個比較嚴重的問題,我在調製阻器的時候,發現會影響其他2路取樣的資料,且資料變化比較大,我就先測試adc的參考電壓即vref+和vref-,沒發現變化,那取樣的初始化是否會有問題,在網上找了不少的資料,都沒表明我的設定有問題,不過還是發現了乙個不同,就是adc_sampling_time的時間不同。那麼我就把它設定成:

```c

adc_regularchannelconfig(adc1,adc_channel_10,1,adc_sampletime_239cycles5);

adc_regularchannelconfig(adc1,adc_channel_tempsensor,2,adc_sampletime_239cycles5);

adc_regularchannelconfig(adc1,adc_channel_vrefint,3,adc_sampletime_239cycles5);

複製** 即最大的取樣時間,結果發現確實是這個問題,後來又試了下其他幾個取樣時間,最短也要adc_sampletime_71cycles5,不然資料都會被影響,大概取樣週期不能太短, 不然dma資料傳輸可能會被影響。

最後也是給大家分享一些資料便於參考

stm32 如何用dma搬運資料

( adc讀取光照感測器)

(stm32 溫濕度採集)

利用PCL點雲下取樣實現資料體素化

pcl pcl point cloud library 庫整合了針對大體量級別的空間點資料處理所需要的演算法和操作,降低了處理相關需求的複雜度,對快速建立點雲資料文件和渲染有著很好的作用。體素化voxelization 體素化是通過用空間均勻大小的體素網格 voxel grid 來模擬模型或者點雲的...

C 利用DataGridView實現資料的快速輸入

在做管理軟體時,常常需要 輸入功能。輸入極大地加快了資料輸入,提高了工作效率,當然也提高了軟體的競爭性。筆者最近用c 在做一套crm時,成功地使用c 2005裡面的 控制項datagridview實現了 輸入功能,現在就把具體實現與各位分享 1.初始化工作 1 在vs 2005 裡面新建乙個c wi...

微控制器控制系統中實現DMA資料傳送的方法

微控制器控制系統中實現dma資料傳送的方法 技術類別 微控制器 摘1 引 言 許多微控制器控制系統中,資訊的實時處理往往需要資料的批量傳送。不管是採用軟體查詢,還是採用中斷技術,它們都是依靠程式控制,每次傳送資料都需要微控制器執行若干條指令,因而傳輸速率受微控制器指令執行速度的限制。例如,51系列微...