32V307怎么用DMA從Flash取數(shù)據(jù)?

如題,我在嘗試用DMA批量讀取Flash數(shù)據(jù)上傳給主機(jī),然后發(fā)現(xiàn)讀取的數(shù)據(jù)都是0.

于是printf打印了DMA保存的地址,發(fā)現(xiàn)它與我設(shè)定的地址不一致(如0x08010000),超過0x10000的部分被噶掉了。

然后查看應(yīng)用手冊,發(fā)現(xiàn)usb的DMA只能存儲16位地址。

于是,又打印了一下RAM的地址,發(fā)現(xiàn)也不是0x20000000為基地址的偏移地址,但是能正常工作。

于是對此產(chǎn)生了疑問,希望能得到解答。


難道只能Flash->RAM->DMA這樣操作嗎,感覺這樣很浪費(fèi)時間。

您好,USB部分的DMA默認(rèn)就是memory到發(fā)送緩沖區(qū),因此可以使用外設(shè)DMA將FLASH數(shù)據(jù)搬運(yùn)到代碼中定義的USB發(fā)送buffer中,然后在檢測到DMA搬運(yùn)完成標(biāo)志后觸發(fā)USB發(fā)送即可。


請問有沒有這方面的例程可以參考呢?

代碼需求是:

外設(shè)DMA從Flash搬運(yùn)不定長度的數(shù)據(jù)給USB批量上傳主機(jī)。

這個數(shù)據(jù)長度可能遠(yuǎn)大于USB的buffer的空間,也可能只有幾個Byte.


我想盡量使用一種通用集成化的函數(shù)解決問題。


暫時沒有參考代碼,您可以先通過2樓提供的思路自行實(shí)現(xiàn),其次需要注意一點(diǎn)flash搬運(yùn)的數(shù)據(jù)長度不可超過usb buffer的空間大小,如遇問題可通過郵箱聯(lián)系(zl@wch.cn)


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频