衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

通過DMA模式控制串口傳輸的方法

STM32嵌入式開發 ? 來源:搜狐網 ? 作者:搜狐網 ? 2020-09-23 11:08 ? 次閱讀

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

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

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

通道選擇:就是數據傳輸的是走那條道路

仲裁器:多個DMA傳輸是優先級高的優先傳輸

數據長度:每次傳輸的數據長度,可以一個字節,兩個字節(半字),四個字節(字)

指針遞增:如果使能了遞增模式,則下一次傳輸的地址將是前一次傳輸的地址遞增 1(對于字節)、2(對于半字)或4(對于字)

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

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

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

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

在main函數前面添加發送的數據。

在main()函數的while(1)循環中添加應用程序,通過DMA將數據發送出去。這是只測試發送,至于接收可以看USART文內容。

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • dma
    dma
    +關注

    關注

    3

    文章

    566

    瀏覽量

    100957
  • 串口傳輸
    +關注

    關注

    0

    文章

    33

    瀏覽量

    1846

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

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

收藏 人收藏

    評論

    相關推薦

    DMA 串口傳輸原理解析

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

    求助:通過按鍵怎么設置串口傳輸

    通過按鍵怎么設置串口傳輸
    發表于 06-01 19:45

    串口傳輸文件

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

    串口傳輸字庫

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

    串口傳輸相關程序分享

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

    5416與主機通信設想通過DMA的PINGPONG模式通過USB口傳回主機可行嗎?

    通過5416的MCBSP采集到數據,設想通過DMA的PINGPONG模式通過USB口傳回主機,
    發表于 01-25 13:48

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

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

    如何通過串口傳輸數據

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

    如何用串口傳輸float類型數據

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

    串口通訊服務器的端口傳輸速率

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

    STM32 LoRa無線數傳模塊 PC通過串口傳輸數據到單片機

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

    串口傳輸(51單片機版)

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

    串口的收發是指什么 串口傳輸與蜂鳴器的關系是什么

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

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

    串口傳輸文件的方法有以下幾種類型:   1. XMODEM:XMODEM是一種最早應用于串口傳輸文件的協議,它使用簡單的數據包結構進行傳輸,支持差錯校驗和重傳機制。   2. YM
    的頭像 發表于 08-15 14:43 ?1.4w次閱讀

    怎么通過串口傳輸文件 網口傳輸串口傳輸的區別

    串口通常用于串行數據傳輸,主要用于傳輸數字數據。在傳統的串口通信規范(如RS-232、RS-485)中,并沒有專門設計用于傳輸音頻的協議和格
    的頭像 發表于 08-18 15:15 ?1.3w次閱讀
    大发888 casino exe| 百家乐网址是多少| 百家乐官网赌场方法| 百家乐官网棋牌外挂| 百家乐官网室系统软件| 大发百家乐官网现金网| 灵寿县| 六合彩网址| 正镶白旗| 利记百家乐官网现金网| 百家乐官网游戏玩法规则| 百家乐官网平台是最好的娱乐城 | 百家乐专业赌| 大发888游戏平台hg dafa 888 gw| 大发888赌博| 现金游戏网| 余江县| 赌博百家乐官网判断决策| 百家乐官网任你博赌场娱乐网规则| 百家乐官网开闲的几率多大| 百家乐高手长胜攻略| 至尊百家乐20130301| 百家乐平注法口诀技巧| 大发888-大发娱乐城下载| 澳门赌场招聘| 真钱百家乐官网五湖四海全讯网| 线上百家乐官网赢钱| 百家乐官网群shozo权威| 百家乐园sun811| 大发888如何下载| 百家乐官网倍投| 杨公24山日课应验诀| 百家乐电话投注多少| 太阳城娱乐网可信吗| 荥经县| 百家乐官网怎么做弊| 澳门百家乐几副牌| 大发888娱乐城.com| 南康市| 百家乐官网秘籍下注法| 尊龙百家乐娱乐网|