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

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

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

經(jīng)驗(yàn)分享 | DMA助力實(shí)時(shí)控制

先楫半導(dǎo)體HPMicro ? 2024-07-18 08:18 ? 次閱讀

直接存儲(chǔ)器訪問(DMA,Direct Memory Access)的優(yōu)點(diǎn)

· 提高系統(tǒng)效率:通過繞過CPU,DMA顯著減少了數(shù)據(jù)傳輸對(duì)CPU資源的占用,使得CPU能夠?qū)W⒂谄渌?jì)算任務(wù),提升了系統(tǒng)整體的響應(yīng)速度和處理能力。

·加快數(shù)據(jù)傳輸速度:針對(duì)多總線高性能MCU,DMA可以避免不同總線同步問題,提供更高的數(shù)據(jù)傳輸速率。

·降低系統(tǒng)延遲:由于減少了CPU參與數(shù)據(jù)搬運(yùn)的環(huán)節(jié),系統(tǒng)延遲顯著降低,這對(duì)于實(shí)時(shí)系統(tǒng)和高性能計(jì)算應(yīng)用至關(guān)重要,確保了數(shù)據(jù)的即時(shí)處理和反饋。

·簡化軟件設(shè)計(jì):DMA控制器的硬件自動(dòng)化處理降低了軟件層面對(duì)數(shù)據(jù)傳輸?shù)膹?fù)雜管理,使得軟件設(shè)計(jì)更為簡潔,降低了開發(fā)難度和維護(hù)成本。

先楫產(chǎn)品中,有大量支持DMA的設(shè)備,其中USB、Ethernet、ADCDAC等有自己的內(nèi)部DMA,AHB和AXI總線上還有公共的DMA設(shè)備——HDMA、XDMA。

HDMA、XDMA都是多通道DMA,可以通過DMAMUX實(shí)現(xiàn)多通道的數(shù)據(jù)傳輸。

HDMA、XDMA分別接入AHB和AXI總線,在總線內(nèi)部傳輸效率更高,可以支持8-64bit數(shù)據(jù)寬度的傳輸。

本文將通過兩個(gè)應(yīng)用案例,說明DMA在如何在實(shí)時(shí)控制中提高系統(tǒng)的穩(wěn)定性和實(shí)時(shí)性。

DMA準(zhǔn)確控制

下圖是典型伺服三環(huán)的控制框圖,其中編碼器是控制的關(guān)鍵反饋,除了準(zhǔn)確讀取位置之外,還需要通過不同時(shí)刻讀取位置計(jì)算轉(zhuǎn)速。讀取位置的時(shí)刻在伺服閉環(huán)中占非常關(guān)鍵的作用。

357c2184-449b-11ef-817b-92fbcf53809c.png

常見位置讀取方式是在定時(shí)中斷中讀取位置,確保讀取間隔時(shí)刻一致。但由于軟件響應(yīng)時(shí)間不確定,讀取間隔很難保證一致。

本文通過DMA+鏈表方式實(shí)現(xiàn)HPM6200用串口與多摩川編碼器定時(shí)通訊的方式。多摩川編碼器通訊協(xié)議見下圖:

35970efe-449b-11ef-817b-92fbcf53809c.png

例程通過PWM定期觸發(fā)DMA,由DMA啟動(dòng)串口讀取動(dòng)作。DMA動(dòng)作完成后利用鏈?zhǔn)絺鬏?,可以?a target="_blank">處理器不介入的情況下,連續(xù)完成多個(gè)不同配置的傳輸任務(wù)。

程序中使用了PWM、DMA、UART三個(gè)模塊

· PWM負(fù)責(zé)定時(shí)輸出DMA觸發(fā)信號(hào);

· DMA接收觸發(fā)信號(hào)后將采樣命令寫入U(xiǎn)ART的THR寄存器;

· UART負(fù)責(zé)收發(fā)位置傳感器信息,其中接收建議使用硬件idle+FIFO模式。

先楫的UART有硬件收發(fā)使能控制,只需要DE設(shè)置為有效,485通訊可以自動(dòng)實(shí)現(xiàn)收發(fā)方向控制,無須CPU干預(yù)。

35aac3a4-449b-11ef-817b-92fbcf53809c.png

HPMICRO

HPM6280集成了9個(gè)UART模塊:

除了常規(guī)配置之外,還支持硬件空閑中斷

支持16 字節(jié)的 TXFIFO 和 RXFIFO

硬件收發(fā)使能自動(dòng)控制

通過簡單配置即可實(shí)現(xiàn)2.5Mbps通訊、RS485自動(dòng)收發(fā)使能控制、硬件空閑中斷接收數(shù)據(jù)等功能。

void config_uart(void)
{
hpm_stat_t stat;
uart_config_t config = {0};

/* if TEST_UART is same as BOARD_CONSOLE_BASE, it has been initialized in board_init(); */
uart_default_config(HPM_UART7, &config);
config.baudrate = 2500000UL;
config.fifo_enable = true;
//config.dma_enable = true;
clock_set_source_divider(clock_uart7, clk_src_pll0_clk0, 5);//80Mhz
clock_add_to_group(clock_uart7, 0);
config.src_freq_in_hz = clock_get_frequency(clock_uart7);//clock_get_frequency(clock_uart0);
config.rx_fifo_level = uart_rx_fifo_trg_gt_three_quarters;/* this config should not change *///uart_rx_fifo_trg_not_empty;
config.rxidle_config.detect_enable = true;
config.rxidle_config.detect_irq_enable = true;
config.rxidle_config.idle_cond = uart_rxline_idle_cond_rxline_logic_one;
config.rxidle_config.threshold = 20U; /* 20bit */
stat = uart_init(HPM_UART7, &config);
if (stat != status_success) {
printf("failed to initialize uart\n");
}
//uart_enable_irq(HPM_UART0, uart_intr_rx_data_avail_or_timeout);
intc_m_enable_irq_with_priority(IRQn_UART7, 1);
}

HPMICRO

下面DMA配置啟用了鏈?zhǔn)絺鬏敚瑢?shí)現(xiàn)DMA循環(huán)觸發(fā)UART讀取位置信息。

構(gòu)建兩個(gè)相互鏈接的 DMA 任務(wù)描述符列表。DMA控制器會(huì)在完成當(dāng)前任務(wù)描述符的相應(yīng)任務(wù)后,從 ChnLLPointer指向地址取下一個(gè)任務(wù)描述符。下一個(gè)任務(wù)描述符又關(guān)聯(lián)當(dāng)前描述符,如此互鎖,無限循環(huán)。

描述符中DMA配置目標(biāo)數(shù)據(jù)為握手模式,UART設(shè)備返回接收數(shù)據(jù)完畢信號(hào)。

為確保uart數(shù)據(jù)可以準(zhǔn)確傳輸,DMA的高優(yōu)先級(jí)標(biāo)志位要設(shè)置為1。

{
hpm_stat_t stat;
dma_channel_config_t rx_ch_config = { 0 };
dmamux_config(HPM_DMAMUX, ch_num, HPM_DMA_SRC_MOT0_0, true);
/* 1.1 config chain descriptors */
dma_default_channel_config(HPM_HDMA, &rx_ch_config);
rx_ch_config.src_addr = src;
rx_ch_config.src_width = DMA_TRANSFER_WIDTH_BYTE; /* In DMA handshake case, source width and destination width must be BYTE. */
rx_ch_config.src_addr_ctrl = DMA_ADDRESS_CONTROL_INCREMENT;
rx_ch_config.src_mode = DMA_HANDSHAKE_MODE_NORMAL;
rx_ch_config.dst_addr = (uint32_t)&uart_ptr->THR;
rx_ch_config.dst_width = DMA_TRANSFER_WIDTH_BYTE; /* In DMA handshake case, source width and destination width must be BYTE. */
rx_ch_config.dst_addr_ctrl = DMA_ADDRESS_CONTROL_FIXED;
rx_ch_config.dst_mode = DMA_HANDSHAKE_MODE_HANDSHAKE;
rx_ch_config.size_in_byte = 1;
rx_ch_config.priority = 1;
rx_ch_config.src_burst_size = DMA_NUM_TRANSFER_PER_BURST_1T; /* In DMA handshake case, source burst size must be 1 transfer, that is 0. */
rx_ch_config.linked_ptr = core_local_mem_to_sys_address(HPM_CORE0, (uint32_t)&descriptors[1]);//link to next dma action
stat = dma_config_linked_descriptor(HPM_HDMA, &descriptors[0], ch_num, &rx_ch_config);
if (stat != status_success) {
while (1) {
};
}

rx_ch_config.linked_ptr = core_local_mem_to_sys_address(HPM_CORE0, (uint32_t)&descriptors[0]);
stat = dma_config_linked_descriptor(HPM_HDMA, &descriptors[1], ch_num, &rx_ch_config);
if (stat != status_success) {
while (1) {
};
}

HPMICRO


在PWM中配置DMA定期觸發(fā),配置比較器匹配觸發(fā),配置DMA輸出使能。


互聯(lián)管理器TRGM是HPM MCU中非常有特色的外設(shè),可以通過配置實(shí)現(xiàn)多個(gè)外設(shè)的輸入輸出相互連接,使得多個(gè)外設(shè)可以相互配合使用。


HPM6200中TRGM支持4個(gè)DMA 請(qǐng)求輸出,用戶可以配置TRGM,從多個(gè)DMA請(qǐng)求輸入中,選擇4個(gè)連接到 DMAMUX。本文選擇了PWM0的CMP14。

pwm_set_reload(HPM_PWM0, 0, reload);
pwm_set_start_count(HPM_PWM0, 0, 0);
pwm_set_load_counter_shadow_register_trigger(HPM_PWM0,pwm_shadow_register_update_on_modify,0);
/*
* config cmp1 and cmp2
*/
cmp_config[0].mode = pwm_cmp_mode_output_compare;
cmp_config[0].cmp = reload + 1;
cmp_config[0].update_trigger = pwm_shadow_register_update_on_hw_event;

cmp_config[1].mode = pwm_cmp_mode_output_compare;
cmp_config[1].cmp = reload + 1;
cmp_config[1].update_trigger = pwm_shadow_register_update_on_hw_event;

cmp_config[2].mode = pwm_cmp_mode_output_compare;//channel to update compare shadow
cmp_config[2].cmp = reload;
cmp_config[2].update_trigger = pwm_shadow_register_update_on_modify;

cmp_config[3].mode = pwm_cmp_mode_output_compare;//dma trigger channel
cmp_config[3].cmp = reload-100;
cmp_config[3].update_trigger = pwm_shadow_register_update_on_modify;

pwm_get_default_pwm_pair_config(HPM_PWM0, &pwm_pair_config);
pwm_pair_config.pwm[0].enable_output = true;
pwm_pair_config.pwm[0].dead_zone_in_half_cycle = 8000;
pwm_pair_config.pwm[0].invert_output = false;

pwm_pair_config.pwm[1].enable_output = true;
pwm_pair_config.pwm[1].dead_zone_in_half_cycle = 16000;
pwm_pair_config.pwm[1].invert_output = false;

/*
* config pwm
*/
if (status_success != pwm_setup_waveform_in_pair(HPM_PWM0, 0, &pwm_pair_config, cmp_index, cmp_config, 2)) {
printf("failed to setup waveform\n");
while(1);
}
//====================set dma trriger from cmp[14]============================
pwm_config_cmp(HPM_PWM0, 14, &cmp_config[3]);//dma trigger
pwm_enable_dma_request(HPM_PWM0,1<<14);//enable pwm signal output to dma
trgm_dma_request_config(HPM_TRGM0,0,14);//connect cmp14 to HPM_DMA_SRC_MOT0_0

HPMICRO

下圖是DMA以20kHz觸發(fā)UART定期輸出的波形,定期輸出0X1A,讀取多摩川傳感器中全部信息。

35b468dc-449b-11ef-817b-92fbcf53809c.png

DMA加速傳輸

HPM5300、HPM6800、HPM6E00引入了DMAv2,增加了無限循環(huán)、DMA傳輸一半中斷,并修改了burst傳輸長度定義。

下文將列舉一個(gè)buck-boost電源應(yīng)用通過DMAv2更新PWM的例子,演示DMA加速傳輸?shù)姆椒ê托Ч?/span>

35c37836-449b-11ef-817b-92fbcf53809c.png

例程選用了兩路交錯(cuò)buck-boost電路。


高效電源對(duì)功率密度有更高的要求,更高的開關(guān)頻率可以降低主回路中電感和電容體積,實(shí)際應(yīng)用中,中小功率的電源開關(guān)頻率可達(dá)100khz以上,頻繁的調(diào)節(jié)對(duì)CPU的運(yùn)算能力和讀寫外設(shè)的速度有更高的要求。


HPM5300單次寫PWM寄存器至少需要5個(gè)AHB時(shí)鐘(HPM6700、HPM6300時(shí)間更長),例程使用了8個(gè)PWM比較寄存器,CPU時(shí)鐘為480Mhz、AHB總線為160Mhz,連續(xù)寫入時(shí)至少0.25us,相當(dāng)于120條CPU clock。


修改PWM刷新方式后,將PWM比較器寄存器的值放入DLM內(nèi)存中,更新PWM只是占用了CPU 8個(gè)訪問高速RAM的時(shí)間。

HPMICRO

與HPM6200不同,DMAv2直接支持無限循環(huán)模式,CHCTRL[CTRL].INFINITELOOP設(shè)置為1即可,不需要鏈表實(shí)現(xiàn)無限循環(huán)。

將CHCTRL[CTRL].burst_opt配置為1,burst傳輸個(gè)數(shù)不再是2的指數(shù)次方,可以根據(jù)實(shí)際需要配置。

PWM配置需要清零SHLK[SHLK],影子寄存器鎖定功能。

其它設(shè)置與前文配置相同。

void dma_transfer_config(uint8_t DMA_chn, uint8_t PWM_num, uint32_t* CMP0)
{
//---------------configure dma channel-----------------
dma_channel_config_t ch_config = {0};
DMA_chn &= 0x1F;
dma_disable_channel(HPM_HDMA, DMA_chn);//stop channel
dmamux_config(HPM_DMAMUX, DMA_chn, HPM_DMA_SRC_MOT_0, true);//trigger source is from trgms dmacfg0
//dma_reset(APP_GPTMR_DMA);
//---------------configure dma chn0-----------------
dma_default_channel_config(HPM_HDMA, &ch_config);
ch_config.src_addr = core_local_mem_to_sys_address(HPM_CORE0, (uint32_t)&PWM_DMA_struct);//source address
//ch_config.dst_addr = (uint32_t)&HPM_PWM0->CMP[0];//destination address
ch_config.dst_addr = (uint32_t)CMP0;//destination address
ch_config.src_mode = DMA_HANDSHAKE_MODE_HANDSHAKE;//hand shake mode waiting trigger signal
ch_config.src_width = DMA_TRANSFER_WIDTH_WORD;// 32bit
ch_config.src_addr_ctrl = DMA_ADDRESS_CONTROL_INCREMENT;
ch_config.burst_opt = DMA_SRC_BURST_OPT_CUSTOM_SIZE;//burst size is actural number rather than 2^num
ch_config.src_burst_size = PWM_num;
ch_config.dst_width = DMA_TRANSFER_WIDTH_WORD;//32bit
ch_config.dst_addr_ctrl = DMA_ADDRESS_CONTROL_INCREMENT;
ch_config.dst_mode = DMA_HANDSHAKE_MODE_NORMAL;//normal
ch_config.en_infiniteloop = true;//dma will react if transize has been completed
ch_config.size_in_byte = PWM_num*4;
ch_config.linked_ptr = 0;//no link
if (status_success != dma_setup_channel(HPM_HDMA, DMA_chn, &ch_config, true)) {
printf(" dma setup channel failed\n");
return;
}
}

HPM系列MCU包含了強(qiáng)大互聯(lián)管理器和DMA模塊,可以輕松實(shí)現(xiàn)外設(shè)無限循環(huán)的觸發(fā)DMA,不需要占用CPU時(shí)間每次配置DMA觸發(fā)外設(shè)。


DMA直接觸發(fā)外設(shè)動(dòng)作,將極大提高系統(tǒng)動(dòng)作的一致性。伺服客戶對(duì)比之前中斷觸發(fā)讀取位置與DMA觸發(fā)讀取位置效果:在2000rpm時(shí),中斷觸發(fā)讀取位置得到的計(jì)算最大瞬時(shí)轉(zhuǎn)速波動(dòng)為20rpm,改為DMA觸發(fā)后波動(dòng)降為2rpm。


微逆應(yīng)用中,同時(shí)變頻、變占空比時(shí),通過DMA定時(shí)修改PWM比較器和周期寄存器數(shù)值消除了同時(shí)修改后造成的波形偶發(fā)異常問題。


電源應(yīng)用中,開關(guān)頻率往往超過100kHz,對(duì)CPU的利用率要求更高,且對(duì)PWM、ACMP讀寫頻率和內(nèi)容更多,DMA讀寫可以有限減輕CPU負(fù)擔(dān),提高CPU效率。

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

    關(guān)注

    146

    文章

    17148

    瀏覽量

    351182
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7492

    瀏覽量

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

    關(guān)注

    3

    文章

    561

    瀏覽量

    100583
  • 實(shí)時(shí)控制
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    9516
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ZYNQ開發(fā)案例之DMA控制器系統(tǒng)設(shè)計(jì)

    斷給中斷控制器; 5. 擁有8個(gè)DMA觸發(fā)事件并且可以編碼控制; 6. 128個(gè)(64bit)的MFIFO,在傳輸?shù)臅r(shí)候讀寫端可寫入到此FIFO; 7. 支持任意內(nèi)存到內(nèi)存的傳輸; 整個(gè)系統(tǒng)中的
    的頭像 發(fā)表于 12-05 10:17 ?4156次閱讀

    28335的McBSP的DMA控制如何實(shí)現(xiàn)?

    limited to 16-bit),MCBSP采用DMA控制限制為16位,那么就不能用DMA控制了。外部的AD要實(shí)時(shí)和DSP通信,那么還
    發(fā)表于 06-16 07:21

    DMADMA控制

    DMA(Direct Memory Access)的概念DMA方式不用處理器干預(yù)完成M與I/O間數(shù)據(jù)傳送。DMA期間系統(tǒng)總線由其它主模塊控
    發(fā)表于 12-09 11:03 ?50次下載
    <b class='flag-5'>DMA</b>與<b class='flag-5'>DMA</b><b class='flag-5'>控制</b>器

    DMA實(shí)時(shí)圖像處理中的應(yīng)用

    以TMS320C6701 為例,說明在實(shí)時(shí)圖像處理系統(tǒng)中使用DMA 的必要性,同時(shí)給出DMA實(shí)時(shí)圖像處理中幾種典型的應(yīng)用例子。
    發(fā)表于 04-16 13:59 ?17次下載

    采用DSP的DMA控制技術(shù)分析

    摘要:通過分析TMS320C2XX使用保持(HOLD)操作的直接存儲(chǔ)器訪問(DMA)和DMA控制器8237-5的工作原理,解決了DSP與8237-5的軟硬件接口問題,實(shí)現(xiàn)了DMA在數(shù)字
    發(fā)表于 02-25 12:37 ?27次下載
    采用DSP的<b class='flag-5'>DMA</b><b class='flag-5'>控制</b>技術(shù)分析

    基于DMA控制器的UART串行通信設(shè)計(jì)

    針對(duì)大數(shù)據(jù)量的串口間通信,在常規(guī)的UART串行數(shù)據(jù)通信的基礎(chǔ)上,結(jié)合Cortex-M3微控制器中DMA控制器的作用,實(shí)現(xiàn)DMA控制的UART
    發(fā)表于 04-20 10:54 ?46次下載
    基于<b class='flag-5'>DMA</b><b class='flag-5'>控制</b>器的UART串行通信設(shè)計(jì)

    基于DMA的常規(guī)彈導(dǎo)航信息實(shí)時(shí)處理技術(shù)_王天宇

    基于DMA的常規(guī)彈導(dǎo)航信息實(shí)時(shí)處理技術(shù)_王天宇
    發(fā)表于 03-19 19:07 ?0次下載

    實(shí)時(shí)圖像處理系統(tǒng)的DMA控制器設(shè)計(jì)

    在分析傳統(tǒng)DMA控制器結(jié)構(gòu)的基礎(chǔ)上,針對(duì)實(shí)時(shí)圖象處理系統(tǒng)的數(shù)據(jù)傳輸要求,提出了多端口模塊設(shè)計(jì)、增加RoundRobin通道優(yōu)先級(jí)仲裁算法和優(yōu)化數(shù)據(jù)傳輸通道等優(yōu)化方法,以提高數(shù)據(jù)傳輸速度,并改進(jìn)了地址產(chǎn)生模式來滿足圖像算法的要求。
    發(fā)表于 12-06 10:43 ?2460次閱讀
    <b class='flag-5'>實(shí)時(shí)</b>圖像處理系統(tǒng)的<b class='flag-5'>DMA</b><b class='flag-5'>控制</b>器設(shè)計(jì)

    Crossbar的多通道DMA控制器設(shè)計(jì)

    為了具體介紹本多通道 DMA 控制器的設(shè)計(jì)方案,下面首先對(duì)基于 Crossbar 的多通道 DMA 控制器的工作原理進(jìn)行詳細(xì)分析,接著具體說明各個(gè)模塊的設(shè)計(jì)實(shí)現(xiàn),然后對(duì)設(shè)計(jì)進(jìn)行驗(yàn)證和分
    發(fā)表于 12-07 09:37 ?5047次閱讀
    Crossbar的多通道<b class='flag-5'>DMA</b><b class='flag-5'>控制</b>器設(shè)計(jì)

    dma控制器芯片8257資料介紹

    DMA既可以指內(nèi)存和外設(shè)直接存取數(shù)據(jù)這種內(nèi)存訪問的計(jì)算機(jī)技術(shù),又可以指實(shí)現(xiàn)該技術(shù)的硬件模塊(對(duì)于通用計(jì)算機(jī)PC而言,DMA控制邏輯由CPU和DMA
    發(fā)表于 12-07 10:23 ?1.7w次閱讀
    <b class='flag-5'>dma</b><b class='flag-5'>控制</b>器芯片8257資料介紹

    dma控制器由什么組成

    DMA既可以指內(nèi)存和外設(shè)直接存取數(shù)據(jù)這種內(nèi)存訪問的計(jì)算機(jī)技術(shù),又可以指實(shí)現(xiàn)該技術(shù)的硬件模塊(對(duì)于通用計(jì)算機(jī)PC而言,DMA控制邏輯由CPU和DMA
    發(fā)表于 12-07 16:08 ?5556次閱讀
    <b class='flag-5'>dma</b><b class='flag-5'>控制</b>器由什么組成

    dma控制器的組成

    一個(gè)DMA控制器,實(shí)際上是采用DMA方式的外圍設(shè)備與系統(tǒng)總線之間的接口電路,這個(gè)接口電路是在中斷接口的基礎(chǔ)上再加DMA機(jī)構(gòu)組成。習(xí)慣上將DMA
    的頭像 發(fā)表于 04-01 16:08 ?1.1w次閱讀

    使用串口繪制實(shí)時(shí)曲線的使用經(jīng)驗(yàn)程序說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用串口繪制實(shí)時(shí)曲線的使用經(jīng)驗(yàn)程序說明。
    發(fā)表于 08-15 17:32 ?8次下載
    使用串口繪制<b class='flag-5'>實(shí)時(shí)</b>曲線的使用<b class='flag-5'>經(jīng)驗(yàn)</b>程序說明

    dma控制器是什么_dma控制器工作方式

    DMA(Direct Memory Access)控制器是一種在系統(tǒng)內(nèi)部轉(zhuǎn)移數(shù)據(jù)的獨(dú)特外設(shè),可以將其視為一種能夠通過一組專用總線將內(nèi)部和外部存儲(chǔ)器與每個(gè)具有DMA能力的外設(shè)連接起來的控制
    發(fā)表于 11-15 10:25 ?1.3w次閱讀

    STM32使用DMA控制器試驗(yàn)總結(jié)

    在使用串口DMA試驗(yàn)過程中,遇到了一些問題,通過試驗(yàn)找到了問題所在,也對(duì)DMA的應(yīng)用有了新的認(rèn)識(shí),僅以此分享給大家,不足之處請(qǐng)多多指教。DMA初始化// 串口對(duì)應(yīng)的DMA請(qǐng)求通道#de
    發(fā)表于 12-03 09:21 ?7次下載
    STM32使用<b class='flag-5'>DMA</b><b class='flag-5'>控制</b>器試驗(yàn)總結(jié)