大家好,我是工程師看海,很高興和各位一起分享我的第113篇原創(chuàng)文章,喜歡和支持我的工程師,一定記得給我點(diǎn)贊、收藏、分享喲。
加微信[chunhou0820]與作者進(jìn)群溝通交流。
直接內(nèi)存訪問(Direct Memory Access,DMA):在計(jì)算機(jī)體系結(jié)構(gòu)中,DMA 是一種數(shù)據(jù)傳輸方式,允許外部設(shè)備直接訪問計(jì)算機(jī)的內(nèi)存,而無需通過中央處理單元(CPU)的干預(yù)。這有助于提高數(shù)據(jù)傳輸速度和系統(tǒng)效率。
那么,DMA究竟有多快呢?
實(shí)踐出真知
恰好,最近有個多通道數(shù)據(jù)采集的項(xiàng)目,受限于通道數(shù)多、分辨率高,而系統(tǒng)帶寬有限,為了盡可能充分利用有限帶寬,就得想辦法優(yōu)化時序,把時間都留給數(shù)據(jù)采集和傳輸。
優(yōu)化方向就是DMA。
硬件鏈路是ADC通過SPI接口將數(shù)據(jù)發(fā)送給STM32單片機(jī),單片機(jī)再將數(shù)據(jù)發(fā)送到上位機(jī)。
咱們的目標(biāo)就是優(yōu)化SPI這邊,先看普通采集模式。
下圖是普通采集模式,SPI每傳輸1個字節(jié)后,就有一段時間的空閑,這段時間就白白浪費(fèi)了。
再看下,開啟DMA之后的效果。SPI可以連續(xù)工作,時鐘速率穩(wěn)定在20MHz,高效工作。
這就是DMA的強(qiáng)大之處!
問題來了,為什么上圖中的波形,有這么大的震蕩呢?