Cortex-M4內(nèi)核微處理器DMA方式的高速A/D采樣
1 MK60N512VMD100微處理器簡(jiǎn)介
MK60N512VMD100芯片是基于Cortex-M4內(nèi)核的典型芯片,是飛思卡爾Kinetis系列中集成度最高的芯片。Cortex-M4內(nèi)核是在Cortex-M3內(nèi)核的基礎(chǔ)上發(fā)展起來的,其性能比Cortex-M3提高了20%。Cortex-M4在Cortex-M3的基礎(chǔ)上強(qiáng)化了運(yùn)算能力,增加了浮點(diǎn)運(yùn)算控制器、DSP和并行計(jì)算等。MK60N512VMD100具有豐富的通信接口,主頻高達(dá)100MHz,32路DMA供外設(shè)和存儲(chǔ)器使用,大大提高了CPU利用率,具有33路單路和4路差分的16位A/D轉(zhuǎn)換器、2路12位D/A轉(zhuǎn)換器等外設(shè)。
2 MK60N512VMD100芯片DMA和ADC介紹
Kinetis系列微處理器都含有DMA,在最小的CPU干預(yù)下最高可提供32路DMA供外設(shè)和存儲(chǔ)器使用,大大提高了CPU的利用率。DMA通道復(fù)用器(類似多路選擇開關(guān))可以把最多63個(gè)DMA請(qǐng)求源和16個(gè)DMA通道中的任意一個(gè)映射到一起。16路獨(dú)立可選的DMA通道中,前4路還具有自觸發(fā)功能。DMA復(fù)用器有3種工作模式:禁用模式、普通模式和周期觸發(fā)模式。本文就介紹用周期觸發(fā)模式實(shí)現(xiàn)高速A/D采樣功能。
DMA通道復(fù)用器除了提供正常的映射功能外,前4個(gè)通道還提供了周期觸發(fā)功能,由周期性中斷定時(shí)器(PIT)觸發(fā),這種機(jī)制能夠?qū)崿F(xiàn)在沒有CPU的干預(yù)下傳輸字節(jié)、幀或數(shù)據(jù)包。這種觸發(fā)功能可用于任何支持DMA傳輸?shù)耐庠O(shè),最常用的應(yīng)用包括以下兩種情況:
①定期輪詢一個(gè)特定的總線上的外部設(shè)備。例如:一個(gè)SPI總線作為源被映射到DMA通道0,一旦設(shè)置成功,只要SPI的發(fā)送緩沖區(qū)是空的就會(huì)請(qǐng)求DMA傳輸,從內(nèi)存中復(fù)制數(shù)據(jù)到緩存。SPI傳輸通過此通道上的一個(gè)觸發(fā)器每3μs(舉例)自動(dòng)執(zhí)行一次。在SPI接收端,SPI和DMA可配置成把接收到的數(shù)據(jù)傳到內(nèi)存,在無需處理器干預(yù)的情況下有效地定期從外部沒備讀取數(shù)據(jù)送到內(nèi)存中。
②利用GPIO端口產(chǎn)生或者采樣波形。通過配置DMA將數(shù)據(jù)傳送到一個(gè)或多個(gè)GPIO端口,可以使用存儲(chǔ)在存儲(chǔ)器中的表格數(shù)據(jù)產(chǎn)生復(fù)雜的波形。相反,使用DMA從一個(gè)或多個(gè)GPIO端口讀取數(shù)據(jù),是可以采樣到復(fù)雜波形的,并把數(shù)據(jù)存儲(chǔ)到內(nèi)存中。
MK60N512VMD100芯片的ADC模塊具有線性逐次逼近算法與高達(dá)16位的分辨率,4路差分1 6位A/D轉(zhuǎn)換和24路單端外部模擬輸入。輸出模式有差分16位、13位、11位和9位幾種模式,單路支持16位、12位、10位和8位模式,并且輸出無符號(hào)數(shù)右對(duì)齊格式。
當(dāng)應(yīng)用程序需要連續(xù)采樣時(shí)(每秒6 000個(gè)采樣點(diǎn)),CPU可能會(huì)有相當(dāng)大的負(fù)擔(dān)。雖然使用可編程延遲模塊(PDB)可能會(huì)減少一些CPU的負(fù)載,但是ADC支持DMA請(qǐng)求功能在高速采樣時(shí)能獲得更高的性能,ADC在轉(zhuǎn)換完成后通過DMA中斷請(qǐng)求觸發(fā)DMA。本文就介紹此種方法。
3 軟件設(shè)計(jì)
3.1 DMA周期觸發(fā)方式相關(guān)寄存器的設(shè)置
(1)DMA通道配置寄存器(DMAMUX_CHCFGn)
DMA通道配置寄存器(DMAMUX_CHCFGn)數(shù)據(jù)格式如圖1所示。
bit7(ENBL):DMA通道使能,設(shè)置為0則通道禁用,為1則通道使能。
bit6(TRIG):DMA通道觸發(fā)使能,設(shè)置為0則觸發(fā)禁用,為1則觸發(fā)使能。
bit(5:0)(SOURCE):DMA通道源。
(2)ADC狀態(tài)和控制寄存器2(ADCx_SC2)
ADC狀態(tài)和控制寄存器2(ADCx_SC2)數(shù)據(jù)格式如圖2所示。
bit7(ADACT):轉(zhuǎn)換狀態(tài)位,當(dāng)一個(gè)A/D轉(zhuǎn)換開始時(shí)ADACT被置位,當(dāng)一個(gè)轉(zhuǎn)換完成或中止時(shí)ADACT被清零。
bit2(DMAEN):設(shè)置為0則DMA功能禁用,為1時(shí)DMA使能。當(dāng)一個(gè)ADC完成時(shí)發(fā)出 ADCDMA請(qǐng)求。
評(píng)論