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

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

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

通過DMA模式控制串口傳輸?shù)姆椒?/h1>

在USART文章中講解了串口的輪詢和中斷模式,本文介紹一下通過DMA模式控制串口傳輸。

直接存儲器訪問 (DMA) 用于在外設(shè)與存儲器之間以及存儲器與存儲器之間提供高速數(shù)據(jù)傳輸??梢栽跓o需任何 CPU 操作的情況下通過 DMA 快速移動數(shù)據(jù)。這樣節(jié)省的 CPU 資源可供其它操作使用。說白了DMA就是一個搬運工,將數(shù)據(jù)從一個地方搬到另一個地方而不需要CPU處理。作為一個搬運工,要他正常工作必須要確定幾個重要的參數(shù)

傳輸模式:數(shù)據(jù)從哪里搬到哪里。三種可能的傳輸方向:存儲器到外設(shè)、外設(shè)到存儲器或存儲器到存儲器

通道選擇:就是數(shù)據(jù)傳輸?shù)氖亲吣菞l道路

仲裁器:多個DMA傳輸是優(yōu)先級高的優(yōu)先傳輸

數(shù)據(jù)長度:每次傳輸?shù)臄?shù)據(jù)長度,可以一個字節(jié),兩個字節(jié)(半字),四個字節(jié)(字)

指針遞增:如果使能了遞增模式,則下一次傳輸?shù)牡刂穼⑹乔耙淮蝹鬏數(shù)牡刂愤f增 1(對于字節(jié))、2(對于半字)或4(對于字)

打開STM32CubeMX重新建工程,配置和上一章配置一樣。只是這個工程中,在DMA設(shè)置欄添加UASART發(fā)送TX和接收RX的DMA。發(fā)送選擇 DMA1 Channel 4通道,方向從存儲器到外設(shè)。優(yōu)先級為低。接收選擇DMA1 Channel 5通道,方向外設(shè)到存儲器,優(yōu)先級為低。Mode為Normal,Data Width選擇Byte。

其中mode設(shè)置可以選擇Normal表單次傳輸,傳輸一次后終止傳輸,Circular表示循環(huán)傳輸,傳輸完成后又重新開始繼續(xù)傳輸,不斷循環(huán)永不停止。此處選擇單次傳輸。

Increment Address表示地址指針遞增。串口發(fā)送數(shù)據(jù)是將數(shù)據(jù)不斷存進(jìn)串口的發(fā)送數(shù)據(jù)寄存器(USARTx_TDR)。所以外接的地址是不遞增。而內(nèi)存儲器存儲的是要發(fā)送的數(shù)據(jù),所以地址指針要遞增才能將所以的數(shù)據(jù)發(fā)送出去。

串口數(shù)據(jù)發(fā)送寄存器只能存儲8bit,每次發(fā)送一個字節(jié),所以數(shù)據(jù)長度選擇Byte。另外要注意的一點,必須要開啟串口中斷。DMA1中斷已默認(rèn)開啟。生成報告以及代碼,編譯程序。在usart.c文件中,可以找到剛才的DMA設(shè)置。

在main函數(shù)前面添加發(fā)送的數(shù)據(jù)。

在main()函數(shù)的while(1)循環(huán)中添加應(yīng)用程序,通過DMA將數(shù)據(jù)發(fā)送出去。這是只測試發(fā)送,至于接收可以看USART文內(nèi)容。

編譯程序并下載到開發(fā)板。用USB線連接開發(fā)板到電腦,在電腦上打開串口調(diào)試助手。選擇對應(yīng)的串口號,設(shè)置波特率為115200,接收到如圖信息。需要注意的是,如果不開啟串口中斷,則程序只能發(fā)送一次數(shù)據(jù),程序不能判斷DMA傳輸是否完成,USART一直處于busy狀態(tài)。

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

    關(guān)注

    3

    文章

    554

    瀏覽量

    100210
  • 串口傳輸
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    1763

原文標(biāo)題:STM32CubeMX-直接存儲器訪問(DMA)

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    DMA 串口傳輸原理解析

    從這個角度來說,DMA 并沒有加快串口本身的傳輸速度,只是解放了 CPU 資源而已。但是 CPU 被解放了, DMA 所使用的 緩存 資源可不能也隨之解放呀,只能等發(fā)送完畢后才能釋放。
    發(fā)表于 09-16 10:04 ?1458次閱讀
    <b class='flag-5'>DMA</b> <b class='flag-5'>串口傳輸</b>原理解析

    求助:通過按鍵怎么設(shè)置串口傳輸

    通過按鍵怎么設(shè)置串口傳輸
    發(fā)表于 06-01 19:45

    串口傳輸文件

    通過串口傳輸文件的小程序,lv2015編寫
    發(fā)表于 10-25 15:54

    串口傳輸字庫

    串口傳輸字庫,
    發(fā)表于 12-26 16:57

    串口傳輸相關(guān)程序分享

    串口傳輸相關(guān)程序僅供參考串口2.rar
    發(fā)表于 06-28 02:58

    5416與主機(jī)通信設(shè)想通過DMA的PINGPONG模式,通過USB口傳回主機(jī)可行嗎?

    通過5416的MCBSP采集到數(shù)據(jù),設(shè)想通過DMA的PINGPONG模式通過USB口傳回主機(jī),
    發(fā)表于 01-25 13:48

    串口傳輸文件及漢字疊加顯示的方法

    串口傳輸文件及漢字疊加顯示一、串口傳輸文件1、串口連接2、文件傳輸及接收二、漢字疊加1、漢字點陣庫原理2、代碼編寫3、Ubuntu調(diào)用opencv4、實驗結(jié)果查看三、實驗總結(jié)四、參考文
    發(fā)表于 01-12 06:03

    如何通過串口傳輸數(shù)據(jù)

    目錄一、串口通信概述1. 串口如何連接2. 如何計算波特率二、實驗演示1. 實驗設(shè)備2. 實際電路連接3. 通過串口傳輸數(shù)據(jù)三、總結(jié)參考文獻(xiàn)一、串口
    發(fā)表于 01-12 06:03

    如何用串口傳輸float類型數(shù)據(jù)

    單片機(jī)小知識如何使用串口傳輸float類型數(shù)據(jù)比較難的就是數(shù)據(jù)進(jìn)制的轉(zhuǎn)化模擬量比如說 角度 距離速度 這些是10進(jìn)制,串口通信用的是16進(jìn)制 , 數(shù)據(jù)一個字節(jié)一個字節(jié)進(jìn)行傳輸。在進(jìn)行數(shù)據(jù)解析,數(shù)據(jù)幀
    發(fā)表于 01-19 06:12

    串口通訊服務(wù)器的端口傳輸速率

    串口通訊服務(wù)器的端口傳輸速率  由于終端服務(wù)器產(chǎn)品通常具有多種接口,每種接口傳輸速率各不相同。典型接口傳輸速率如下:
    發(fā)表于 01-07 14:00 ?1658次閱讀

    STM32 LoRa無線數(shù)傳模塊 PC通過串口傳輸數(shù)據(jù)到單片機(jī)

    STM32F1單片機(jī),燒錄代碼后,連接LoRa無線數(shù)傳模塊,在PC上面使用串口助手,通過串口傳輸數(shù)據(jù)到單片機(jī)串口1,并在LCD顯示屏顯示
    發(fā)表于 11-19 11:51 ?79次下載
    STM32 LoRa無線數(shù)傳模塊 PC<b class='flag-5'>通過</b><b class='flag-5'>串口傳輸</b>數(shù)據(jù)到單片機(jī)

    串口傳輸(51單片機(jī)版)

    串口傳輸在51單片機(jī)里是非常重要的一點,這常常是在中斷、計數(shù)器后面學(xué)習(xí),因為不可避免的需要用到中斷。51單片機(jī)的串口,是個全雙工的串口,發(fā)送數(shù)據(jù)的同時,還可以接收數(shù)據(jù)。
    發(fā)表于 11-23 16:20 ?0次下載
    <b class='flag-5'>串口傳輸</b>(51單片機(jī)版)

    串口的收發(fā)是指什么 串口傳輸與蜂鳴器的關(guān)系是什么

    串口是一種通信接口,用于在計算機(jī)和外部設(shè)備之間傳輸數(shù)據(jù)。串口傳輸通常使用一根傳輸線,按照一定的協(xié)議和通信速率,將數(shù)據(jù)位一位一位地順序傳輸。發(fā)
    發(fā)表于 08-10 14:59 ?1263次閱讀

    串口通信協(xié)議有哪些 串口傳輸文件方法有哪些類型

    串口傳輸文件的方法有以下幾種類型:   1. XMODEM:XMODEM是一種最早應(yīng)用于串口傳輸文件的協(xié)議,它使用簡單的數(shù)據(jù)包結(jié)構(gòu)進(jìn)行傳輸,支持差錯校驗和重傳機(jī)制。   2. YM
    的頭像 發(fā)表于 08-15 14:43 ?1.3w次閱讀

    怎么通過串口傳輸文件 網(wǎng)口傳輸串口傳輸的區(qū)別

    串口通常用于串行數(shù)據(jù)傳輸,主要用于傳輸數(shù)字?jǐn)?shù)據(jù)。在傳統(tǒng)的串口通信規(guī)范(如RS-232、RS-485)中,并沒有專門設(shè)計用于傳輸音頻的協(xié)議和格
    的頭像 發(fā)表于 08-18 15:15 ?1.1w次閱讀