線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1502
推到 Plurk!
推到 Facebook!

有人使用過DMA controller嗎?

答題得分者是:mymj
kokalin
一般會員


發表:13
回覆:19
積分:6
註冊:2004-07-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-10 21:22:04 IP:140.112.xxx.xxx 未訂閱
若想把ADC的結果不經過MCU處理,而直接存入外部RAM的話, 使用DMA controller似乎是個可行的方法! 想請問一下有人使用過DMA controller嗎? 市面上買的到這種晶片嗎?或者是可以diy出這種電路出來呢?
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-11 20:31:13 IP:218.171.xxx.xxx 未訂閱
DMA控制器有8237 不過用mcu配合DMA controller似乎有點化簡為繁 動作會變得很複雜 可以參考用Dual-Port Static Memory 用硬體來做記憶體的寫入動作 而mcu端只負責將資料由記憶體讀出,不管寫入
kokalin
一般會員


發表:13
回覆:19
積分:6
註冊:2004-07-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-12 10:49:43 IP:140.112.xxx.xxx 未訂閱
我是已經查到了8237的data sheet,不過看完還是不會使用 >< 看起來這似乎是顆要寫程式來運作的controller  阿...我沒有萬用燒錄器 @@    我還是清楚的描述一下我的問題好了 我要利用89S52來接受高速ADC的輸出 詳細情節可參閱:89S51與高速ADC晶片溝通問題 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=72368   我需要的是ADC的高速轉換結果(只需要約300bytes) 因此我著重的是速度,而非大量的A/DC轉換結果 我是有想到一個爛方法:利用兩顆89S51來操作(一顆當主控制器、另一顆當DMA控制器) 其電路接法大致如下: 但這似乎是個滿浪費的方法,因此我才會想找真的DMA controller來使用 最後想請問addn: 針對Dual-Port Static Memory可以麻煩你再做清楚一點的描述嗎? 或者是有相關網頁及書籍可以參閱呢?(我去查了一下,都只找到販賣的規格 ><) 感激不盡 謝謝你 :)
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-12 12:12:14 IP:59.104.xxx.xxx 未訂閱
引言: 我是已經查到了8237的data sheet,不過看完還是不會使用 >< 看起來這似乎是顆要寫程式來運作的controller 阿...我沒有萬用燒錄器 @@
它不用燒程式。自己再去讀一次規格。把每個字都查字典。
引言: 我要利用89S52來接受高速ADC的輸出 詳細情節可參閱:89S51與高速ADC晶片溝通問題
你在小題大做啦。 你把ADC拿到的資料做什麼處理? 是不是要等51來處理? 就算你用了什麼怪方法把資料放入RAM中。那有什麼意義呢? 因為還是沒被運算用到呀。 因為運算是51的程式在做。 即使要用來做DISPLAY 還是51 在做呀。 那”多出來的動作”是無意義的。 這樣你懂了沒有?
mymj
版主


發表:132
回覆:486
積分:608
註冊:2002-10-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-12 13:13:38 IP:59.104.xxx.xxx 未訂閱
我想你是否要作的是"即時處理"的方法,在你的描述中cpu並沒有做任何運算,但是信號進來經過adc就要將轉換結果儲存,這有點像即時處理的前端作業 DMA是硬體記憶體存取,不需寫程式,只要取得BUS控制權就可使用硬體記憶體存取
kokalin
一般會員


發表:13
回覆:19
積分:6
註冊:2004-07-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-12 19:56:15 IP:140.112.xxx.xxx 未訂閱
關於8237的部分我會在細心的看一遍 會說他要用燒的是因為我看UM8237AE-5時, (http://www.tiking.com/compment.asp?compment=ETC\UM8237AE-5.pdf55555555UM) datasheet上面描述是Programmable DMA Controller,因此才會做如此錯誤的判斷 我會好好的再留心看一遍 關於暗黑板主的第二建議部分,就如mymj板主所言 我是要做即時處理,只要ADC的值有在需要的時間內取得(這部分訊號稍縱即逝阿><) 我有足夠充裕的時間來做後續的處理 因此我才會如此大費周章的要把資料存到外部RAM阿 發表人 - kokalin 於 2005/06/12 19:57:38
mymj
版主


發表:132
回覆:486
積分:608
註冊:2002-10-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-12 21:57:02 IP:59.104.xxx.xxx 未訂閱
你可以利用EOC (end of conversion)來控制DMA啟動
kokalin
一般會員


發表:13
回覆:19
積分:6
註冊:2004-07-29

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-12 22:12:04 IP:140.112.xxx.xxx 未訂閱
我所使用的ADC是高速的ADC,他只有OE(output enable)、data bus、analog in等腳位 因此我想主要的控制部分應該都還是會由MCU來操控吧! 當我啟動ADC晶片的OE腳位時,同時也啟動DMA controller 這樣一來,資料應當就能順利的傳入外部RAM了!
mymj
版主


發表:132
回覆:486
積分:608
註冊:2002-10-25

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-12 22:39:37 IP:59.104.xxx.xxx 未訂閱
ADC轉換是否完成如何判斷,要注意資料提取是ADC完成轉換之後. 你用那一個ADC?
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-06-12 22:46:02 IP:210.64.xxx.xxx 未訂閱
那你的MCU能跟上它傳資料回來的速度嗎? 如果跟不上。那它多傳的部份是什麼? 有什麼意義? DMA 是在什麼情況下所發展出來的? IO太慢,所以CPU不要管它。而由 DMA 把資料由軟碟讀取完成才讓CPU來處理。 而你現在是相反。 我就看不出你這樣搞,有什麼意義了。
kokalin
一般會員


發表:13
回覆:19
積分:6
註冊:2004-07-29

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-06-13 09:49:05 IP:140.112.xxx.xxx 未訂閱
回應mymj板主: 我所使用的ADC晶片為TI的ADC,型號是TLC5510 http://www-s.ti.com/sc/ds/tlc5510.pdf 因為其時脈是利用89S51的ALE腳位所提供,因此時序部分是在掌握之中的 ^^ 另外想問mymj板主,之前在我PO的另一篇文章提到 可以用ADC的CLK接N位(視RAM容量而定)同步計數器 計數器的輸出接RAM的位址線 若我使用的外部RAM為2K的(UM6116k-2),有什麼型號的同步計數器可以用呢? 感覺這樣應該會比DMA controller省錢阿,所以也想嘗試看看 回應暗黑板主: 我MCU(89S52)處理一次完整的運算有8.5ms的時間可以用 但是我ADC需要的取樣頻率為1MHz才能合乎我的要求 (我的類比信號約每8.5ms出現350us) 就是因為我需要把ADC的結果存下來,可是MCU趕不上處理速度 我才會如此大費周章的要用DMA阿 我....也是有苦難言阿 >< 最後,謝謝各位的幫忙,等我研究出使用方法及結果,我在PO出來 謝謝你們 ^^
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-06-13 18:00:49 IP:211.21.xxx.xxx 未訂閱
你要做的是產品 還是測試器或治具 看起來像是測試器 要看波形 可用示波器 波形長怎樣呢 又要做什麼處理 說不定兜個簡單的電路就解決了 ------------------- 美好的事物 稍縱即逝
mymj
版主


發表:132
回覆:486
積分:608
註冊:2002-10-25

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-06-13 23:19:51 IP:59.104.xxx.xxx 未訂閱
另外想問mymj板主,之前在我PO的另一篇文章提到 可以用ADC的CLK接N位(視RAM容量而定)同步計數器 計數器的輸出接RAM的位址線 若我使用的外部RAM為2K的(UM6116k-2),有什麼型號的同步計數器可以用呢? 感覺這樣應該會比DMA controller省錢阿,所以也想嘗試看看 cd40163 4位二進制同步計數器 這樣作會比DMA controller省錢但是可能電路會比較複雜 mymj
kokalin
一般會員


發表:13
回覆:19
積分:6
註冊:2004-07-29

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-06-14 23:13:07 IP:140.112.xxx.xxx 未訂閱
我要做的東西應該算是產品吧 波形圖大致如下 MCU藉由抓取350us內的資料,而後演算並判斷出我要的結果 我也有打算直接找IC來做定址 Dual 4 bit binary counters: http://www.tiking.com/compment.asp?compment=HITACHI\HD74LS373.pdf55555555HD 可是卡在我需要至少11個bit,但這顆IC無法表示溢位 只要...只要他溢位時可以表示,那一切問題就解決了阿 ><
mymj
版主


發表:132
回覆:486
積分:608
註冊:2002-10-25

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-06-16 09:12:20 IP:203.67.xxx.xxx 未訂閱
hd74ls373的功能是d型據門柵的暫存器並非計數器 Octal D-type Transparent Latches(with three-state outputs
kokalin
一般會員


發表:13
回覆:19
積分:6
註冊:2004-07-29

發送簡訊給我
#16 引用回覆 回覆 發表時間:2005-06-20 20:17:15 IP:140.112.xxx.xxx 未訂閱
謝謝mymj版主的建議,我使用HD74LS161A來組裝出我的電路了 (雖然我還是不太懂74161和74163有什麼太大差異) 因為主題和之前的"MCS51與高速ADC的溝通問題"比較有相關性 所以打算把方法放在那篇上 會放棄使用8237是因為89S52需要太多控制線來控制DMA(這應該不是設計來讓8051使用的) 而且使用前還要先利用bus來規劃DMA使用 此外我只需使用一個DMA的channel,而且只要將I/O資料寫入外部RAM的功能 說來實在太浪費了 不過看這DMA的datasheet之前有點被困住,所以搞了好一段時間 有空再把使用方法PO上來讓大家研究一下吧 (不過應該要等我趕快把論文寫完在說吧 ><) 最後,感謝大家的幫忙 :)
bigbird
一般會員


發表:3
回覆:7
積分:2
註冊:2002-04-15

發送簡訊給我
#17 引用回覆 回覆 發表時間:2005-06-24 00:15:10 IP:211.76.xxx.xxx 未訂閱
用FIFO !!! http://www.averlogic.com/video_FIFO/video_FIFO.html 可用於Video Capture ADC -->FIFO 用MCU控制FIFO! http://www.idt.com/?id=2#fifo 這也有 發表人 - bigbird 於 2005/06/24 00:20:46
系統時間:2024-05-21 11:52:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!