關於F28335的DMA用法

2021-09-26 10:17:30 字數 1558 閱讀 2754

參考資料:ti的controlsuit例程裡面的example_2833xadctodma.c和ti的關於dma的reference guide(sprufb8d)

f28335的dma中有幾個概念不容易理解,分別是,burst、transfer和wrap。

burst:外設中斷一次傳輸的資料,由最多32個字(16bits)組成,burst大小用burst_size定義。

transfer:每個通道進行一次傳輸時,一共傳送的burst資料,其大小用transfer_size定義。

burst:每傳送完乙個字,將source或destination對應的burst_step值加到src_addr或dst_addr中。

wrap不好理解,結合官方的例子去看,example_2833xadctodma.c

第乙個函式dmach1burstconfig(3,1,10);裡面的三個引數分別是burst_size,src_burst_step和dst_burst_step,因為adc的一次soc可以採集4個通道(a0~a3),根據前面dma的burst介紹,可知burst_size應設定為3(=4-1);src_burst_step應設定為1(通道連續);程式中dst_burst_step設定為10通過**可以看到第乙個adc通道a0從dmabuf1[0]開始儲存,第二個adc通道a0從dmabuf1[11]開始儲存,第三個adc通道a0從dmabuf1[21]開始儲存,第四個adc通道a0從dmabuf1[31]開始儲存,也可將該值改為其他,修改後各個adc通道對應的dmabuf1起始位址將發生變化。

第二個函式dmach1transferconfig(9,1,0);裡面的三個引數分別是transfer_size,src_transfer_step和dst_transfer_step,因為一共要進行10次soc,每次轉換4個通道,每個通道需要10個儲存單元,因此transfer_size設定為9(=10-1);因為需要設定成wrap方式,所以src_transfer_step和dst_transfer_step忽略。

注:transfer結束觸發dma中斷。

第三個函式dmach1wrapconfig(1,0,0,1);裡面的四個引數分別是src_wrap_size,src_wrap_step,dst_wrap_size和dst_wrap_step。每進行完2次burst以後,源位址回到初始位置(兩次burst正好對應4個通道每個都轉換2次),每進行完1次burst,目的位址變為起始位址+1(指向dmabuf1的下乙個單元)。

F28335學習之GPIO配置

1 gpio工作原理 外界二進位制資訊 數字量 要被cpu處理,要給儲存器存放,就需要外界資訊源與兩者之間的交換介面,這樣的交換介面若用來進行通用目的數字量的輸入輸出,就被稱為通用數字量輸入 輸出介面,簡稱gpio。f28335的88路gpio被分為3組 a組 gpio0 gpio31 只能配置in...

F28335型號DSP的晶元資源

f28335整合了dsp和微控制器的長處。32位浮點dsp 片上儲存器 1 flash 256k times 16位 2 sram 34k times 16位 3 boot rom 8k times 16位 4 opt rom 2k times 16位 片上外設 1 pwm 18路 2 hrpwm ...

F28335的DSP中主頻的配置

在學習dsp的時候,常常有個問題。f28335的dsp主頻可達150mhz,但是這個150mhz的配置實現方式在示例中只有一種方式。即選用30mhz的晶振,然後使用pll十倍頻得到300mhz之後,然後再2分頻得到150mhz。經過查詢官方手冊,得到的結論是,常用的配置方式只能是這樣。主頻的計算 首...