在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DMA數(shù)據(jù)傳輸(源代碼分享)

電子工程師 ? 來源:網(wǎng)絡(luò)整理 ? 作者:工程師3 ? 2018-04-27 09:22 ? 次閱讀

手頭項(xiàng)目也需要加入DMA數(shù)據(jù)傳輸,以最大限度地提升CPU效率,于是測(cè)試了一下XMEGA的DMA模塊,把一塊內(nèi)存中的數(shù)據(jù)DMA傳輸?shù)搅硗庖粔K內(nèi)存,DMA傳輸完成后,在中斷函數(shù)中顯示“DMAFinished”,提示DMA成功完成數(shù)據(jù)傳輸,另外DMA使用更多的情況是大量數(shù)據(jù)到USART、SPI等,本文只是小試牛刀。

效果如下,

源代碼:

#define DMA_BUFFER_SIZE 1024

#define DMA_CHANNEL 0

uint8_t source[DMA_BUFFER_SIZE],destination[DMA_BUFFER_SIZE];

static void fill_pattern(uint8_t *buffer, size_t len)

{

int i;

for (i = 0; i 《 len; i++) {

buffer = 42 ^ (i & 0xff) ^ (i 》》 8);

}

}

static bool verify_pattern(uint8_t *buffer, size_t len)

{

for (size_t i = 0; i 《 len; i++) {

if (buffer != (42 ^ (i & 0xff) ^ (i 》》 8))) {

return false;

}

}

return true;

}

void dma_test(void)

{

struct dma_channel_config config;

fill_pattern(source, DMA_BUFFER_SIZE);

memset(destination, 0, DMA_BUFFER_SIZE);

dma_enable();

memset(&config, 0, sizeof(config));

/*

* This example will configure a DMA channel with the following

* settings:

* - Low interrupt priority

* - 1 byte burst length

* - DMA_BUFFER_SIZE bytes for each transfer

* - Reload source and destination address at end of each transfer

* - Increment source and destination address during transfer

* - Source address is set to ef source

* - Destination address is set to ef destination

*/

dma_channel_set_interrupt_level(&config, DMA_INT_LVL_LO);

dma_channel_set_burst_length(&config, DMA_CH_BURSTLEN_1BYTE_gc);

dma_channel_set_transfer_count(&config, DMA_BUFFER_SIZE);

dma_channel_set_src_reload_mode(&config,

DMA_CH_SRCRELOAD_TRANSACTION_gc);

dma_channel_set_dest_reload_mode(&config,

DMA_CH_DESTRELOAD_TRANSACTION_gc);

dma_channel_set_src_dir_mode(&config, DMA_CH_SRCDIR_INC_gc);

dma_channel_set_dest_dir_mode(&config, DMA_CH_DESTDIR_INC_gc);

dma_channel_set_source_address(&config, (uint16_t)(uintptr_t)source);

dma_channel_set_destination_address(&config,

(uint16_t)(uintptr_t)destination);

dma_channel_write_config(DMA_CHANNEL, &config);

/* Use the configuration above by enabling the DMA channel in use. */

dma_channel_enable(DMA_CHANNEL);

/*

* Enable interrupts as the example is now configured to handle them

* properly.

*/

cpu_irq_enable();

/*

* Trigger a manual start since there is no trigger sources used in

* this example.

*/

dma_channel_trigger_block_transfer(DMA_CHANNEL);

pmic_init();

cpu_irq_enable();

while(1);

}

ISR(DMA_CH0_vect)

{

gfx_mono_draw_string(“DMA Finished”,0,0,&sysfont);

}

int main(void)

{

。。。

dma_test();

。。。

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10889

    瀏覽量

    212383
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    1928

    瀏覽量

    64717
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    566

    瀏覽量

    100750
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CW32L052單片機(jī)支持DMA實(shí)現(xiàn)高速數(shù)據(jù)傳輸

    CW32L052支持DMA(Direct Memory Access),即直接內(nèi)存訪問,無需CPU干預(yù),實(shí)現(xiàn)高速數(shù)據(jù)傳輸
    的頭像 發(fā)表于 02-27 11:36 ?1012次閱讀

    基于labview的遠(yuǎn)程數(shù)據(jù)傳輸

    跪求基于labview的遠(yuǎn)程數(shù)據(jù)傳輸源代碼
    發(fā)表于 07-03 16:32

    Serial RapidIO接口DMA數(shù)據(jù)傳輸

    數(shù)據(jù)傳輸本人已經(jīng)在多個(gè)基于DSP和PowerPC信號(hào)處理板上調(diào)試驗(yàn)證了Serial RapidIO Endpoint Master DMA功能.1. Master DMA Write數(shù)據(jù)傳輸
    發(fā)表于 08-23 13:27

    DMA數(shù)據(jù)傳輸速率是多少?

    DMA數(shù)據(jù)傳輸速率是多少?由于DMA與CPU無關(guān),所以CPU的速率可能不高。你知道DMAC的時(shí)鐘是什么嗎? 以上來自于百度翻譯 以下為原文What is the rate of data
    發(fā)表于 05-14 11:13

    請(qǐng)問怎樣去設(shè)計(jì)一種Ultra DMA數(shù)據(jù)傳輸系統(tǒng)?

    怎樣去設(shè)計(jì)Ultra DMA數(shù)據(jù)傳輸系統(tǒng)的硬件部分?怎樣去設(shè)計(jì)Ultra DMA數(shù)據(jù)傳輸系統(tǒng)的軟件部分?
    發(fā)表于 05-26 06:36

    怎樣去實(shí)現(xiàn)DMA數(shù)據(jù)傳輸的有效進(jìn)行呢

    過程時(shí)不可能像PL端那樣能實(shí)現(xiàn)精準(zhǔn)的時(shí)序控制,為了實(shí)現(xiàn)整個(gè)DMA數(shù)據(jù)傳輸的有效進(jìn)行,需要明白數(shù)據(jù)傳輸的整個(gè)過程。以下面工程為例來對(duì)傳輸過程進(jìn)行描述。如上圖所示主要是完成PS端
    發(fā)表于 01-07 06:22

    MPC5748G無法通過DMA傳輸數(shù)據(jù)傳輸到終端上的UART怎么解決?

    已經(jīng)實(shí)現(xiàn)了以下代碼以在 MPC5748G 中使用 eDMA 通過 UART 通道傳輸數(shù)據(jù)。 但我無法通過 DMA傳輸
    發(fā)表于 05-05 06:16

    DMA進(jìn)行數(shù)據(jù)傳輸和CPU進(jìn)行數(shù)據(jù)傳輸的疑問

    求大佬解答,本人正在學(xué)習(xí)STM32單片機(jī)中DMA直接數(shù)據(jù)存儲(chǔ)部分的內(nèi)容 看了DMA簡(jiǎn)介后,也上手過實(shí)例代碼,但是沒有實(shí)際的項(xiàng)目經(jīng)驗(yàn),所以有以下疑問:
    發(fā)表于 05-25 17:18

    Modem數(shù)據(jù)傳輸標(biāo)準(zhǔn)

     Modem數(shù)據(jù)傳輸標(biāo)準(zhǔn) 數(shù)據(jù)傳輸標(biāo)準(zhǔn)是指MODEM的
    發(fā)表于 12-28 13:29 ?1026次閱讀

    數(shù)據(jù)傳輸速率是什么意思

    數(shù)據(jù)傳輸速率是什么意思 數(shù)據(jù)傳輸速率是通過信道每秒可傳輸的數(shù)字信息量的量度。數(shù)據(jù)傳輸速率也稱為吞吐率。數(shù)據(jù)傳輸速率由很
    發(fā)表于 03-18 14:45 ?4994次閱讀

    DMA數(shù)據(jù)傳輸在SPEAR300實(shí)現(xiàn)高速串口驅(qū)動(dòng)設(shè)計(jì)

    DMA數(shù)據(jù)傳輸無需CPU的參與,是一種更加高效的數(shù)據(jù)傳輸方式。現(xiàn)有的DMA數(shù)據(jù)傳輸方案都是基于DMA
    發(fā)表于 04-04 12:23 ?1640次閱讀
    <b class='flag-5'>DMA</b><b class='flag-5'>數(shù)據(jù)傳輸</b>在SPEAR300實(shí)現(xiàn)高速串口驅(qū)動(dòng)設(shè)計(jì)

    STM32定時(shí)器觸發(fā)DMA數(shù)據(jù)傳輸失敗的原因如何解決

    有人使用STM32的定時(shí)器事件觸發(fā)DMA,讓其將內(nèi)存數(shù)據(jù)傳輸到通信外設(shè)的數(shù)據(jù)寄存器進(jìn)行發(fā)送,發(fā)現(xiàn)DMA根本就不動(dòng)作。
    的頭像 發(fā)表于 11-25 09:21 ?2.2w次閱讀
    STM32定時(shí)器觸發(fā)<b class='flag-5'>DMA</b><b class='flag-5'>數(shù)據(jù)傳輸</b>失敗的原因如何解決

    STM32CubeMX-串口開啟DMA進(jìn)行數(shù)據(jù)傳輸

    STM32CubeMX筆記-串口開啟DMA進(jìn)行數(shù)據(jù)傳輸
    發(fā)表于 12-27 18:40 ?7次下載
    STM32CubeMX-串口開啟<b class='flag-5'>DMA</b>進(jìn)行<b class='flag-5'>數(shù)據(jù)傳輸</b>

    淺析AXI DMA收發(fā)數(shù)據(jù)傳輸過程

    MAIP的M_AXI_MM2S接口接收到數(shù)據(jù)完成后通過mm2s_introut接口輸出高電平告訴PS端DMA接收數(shù)據(jù)傳輸完成,PS端開始執(zhí)行發(fā)送中斷程序。
    發(fā)表于 10-11 15:16 ?2388次閱讀

    SPI數(shù)據(jù)傳輸有哪些方式

    SPI 數(shù)據(jù)傳輸可以有兩種方式:同步方式和異步方式。 同步方式:數(shù)據(jù)傳輸的發(fā)起者必須等待本次傳輸的結(jié)束,期間不能做其它事情,用代碼來解釋就是,調(diào)用
    的頭像 發(fā)表于 07-25 10:54 ?5194次閱讀
    SPI<b class='flag-5'>數(shù)據(jù)傳輸</b>有哪些方式
    主站蜘蛛池模板: 永久免费在线看| 日日噜噜噜夜夜爽爽狠狠视频| 欧洲乱码专区一区二区三区四区| 亚洲高清一区二区三区四区| 国产成人综合亚洲怡春院| 午夜福利123| 国产精品李雅在线观看| 欧美zooz人禽交免费观看| 色综合久久久久综合99| 最新四虎4hu影库地址在线| 69日本xxxxxxxxx19| 东北老女人啪啪对白| 五月sese| 亚洲va老文色欧美黄大片人人| 日本天天操| 国产成人1024精品免费| 91牛牛| 国产高清免费午夜在线视频| 羞羞色院91精品网站| 亚洲一区在线免费观看| 中文字幕123| 中文字幕第一| 高清一区二区三区四区五区| 美女扒开尿口让男生添 漫画| 羞羞漫画喷水漫画yy漫画| 亚洲欧美视频在线播放| 中国成人在线视频| 亚洲 午夜在线一区| 超刺激gay腐文h文| 高清一区二区三区视频| 婷婷99| 色婷婷久久免费网站| 日日噜噜爽爽狠狠视频| 久久久噜噜噜久久中文字幕色伊伊| 尻美女视频| 狠狠色狠狠色综合日日不卡 | 国产欧美日韩va| 4438x亚洲最大| 欧美性狂猛bbbbbbxxxx| 国产精品爱啪在线线免费观看| 亚洲一区欧美日韩|