用了一段時間HAL庫,不知道是不是用外設固件庫時間長一點的原因,個人感覺沒有固件庫來的直接??碊MA部分看的有點亂,捋一下。
DMA的使用方法及細節(jié)直接看官方的手冊就可以了,注意的是如果原地址和目的地址的數據長度不一樣的話只能使用FIFO模式,直接模式下原地址和目的地址的數據長度必須一致。
主要是簡單整理一下使用DMA的初始化過程,以串口發(fā)送使用DMA為例:
(1) 定義一個外設的句柄,對外設的基本參數、IO、時鐘、中斷等進行初始化。
UART_HandleTypeDef UART1_Handler;
....
HAL_UART_Init(&UART1_Handler);
調用外設的初始化函數完成對外設的初始化
(2) 定義一個 DMA的句柄,對DMA的數據流、通道、傳輸方向、數據長度等基本參數進行初始化
DMA_HandleTypeDef UART1TxDMA_Handler;
....
HAL_DMA_Init(&UART1TxDMA_Handler);
調用初始化函數完成對句柄的填充。
(3) 使用HAL庫中對DMA的一個宏定義完成外設發(fā)送DMAT或者接收DMAR和第二步的DMA句柄進行關聯
__HAL_LINKDMA(&UART1_Handler,hdmatx,UART1TxDMA_Handler);
每個外設的句柄結構體中都一個該外設關于DMA相關的設置:
DMA_HandleTypeDef *hdmatx; UART TX 的DMA句柄參數
DMA_HandleTypeDef *hdmarx; UART RX 的DMA句柄參數
使用__HAL_LINKDMA 宏定義的作用就是將第二步初始化的DMA句柄賦值給外設的發(fā)送或者接收DMA句柄,并且外設的句柄(第一步定義的)賦給DMA結構體中的.parent 參數,調用DMA的函數都會間接調用
UART1TxDMA_Handler.parent->hdmatx
對DMA的個別寄存器的參數進行填充,比如調用 HAL_DMA_Start()函數就會調用DMA_SetConfig()函數配置數據個數、源地址、目的地址等。而hdmatx 和第二步的DMA句柄是一模一樣的,感覺最后轉了一圈又轉回會來了。。。
(4) 外設初始化、DMA初始化、外設和DMA進行關聯、外設使能DMA發(fā)送或者接收、DMA調用函數開始發(fā)送或者接收。
個人感覺有時候HAL庫的確有些冗余了,這時候可能就需要部分進行寄存器操作了。
二、使用過程總結
1、傳輸數據數目設置
注意傳輸數據的個數的設置:如果源的數據寬度和目標數據寬度不一樣,即PSIZE、MSIZE不相等時,DMA_SXNDTR寄存器配置要傳輸的數據項數目的寬度等于外設總線的寬度(和傳輸方向無關)。例如外設的寬度設置為字,存儲器的寬度設置為半字,假如要傳輸100個字節(jié)的數據,NDTR寄存器配置要傳輸的數據數目 100/4.外設寬度是字=4個字節(jié)。
2、DMA初始化
HAL_DMA_Init() ; 初始化函數中會使能所有的中斷,如果不想用中斷,可以在初始化之后關閉。初始化完成后會自動使能流的DMA。
三、調試過程問題解決
直接模式中出現FIFO溢出錯誤,可能是DMA的源地址或者目的地址設置有問題。
上一篇:發(fā)現的STM32——SPI的問題
下一篇:STM32 SPI發(fā)送與接收用一個函數實現的問題
推薦閱讀
史海拾趣
設計資源 培訓 開發(fā)板 精華推薦
- 電阻哪個強?看Vishay演示視頻 搶樓發(fā)言贏好禮
- 是德科技電子書,下載有禮進行時!
- 芯幣 E金幣可以兌換3D打印啦!
- 現場抽取PS5等諸多好禮 SiFive RISC-V 中國技術論壇 上海、北京、深圳 3場線下活動邀您出席!
- 【讀書月】讀一本RT-Thread技術好書,寫下你的讀書筆記
- 5G來襲 TE Connectivity 助你搶占消費電子市場先機
- 有獎直播|TI 毫米波雷達傳感器在智能家居及智能安防中的應用
- 直播報名:TI 用于感測應用、帶可配置信號鏈元素的新型MSP430™ MCU,報名直播贏雙重好禮!
- 直播已結束|Molex 和 TTI 更小型、高速、可靠的連接器推動物聯網應用的新發(fā)展
- 我與BeagleBone 有個約會!
- 三菱電機開發(fā)場景感知技術,緊貼AI技術首次實現人類直觀交互
- 日月光(ASE)將在2020下半年量產車載ToF激光雷達模組
- 用于下一代汽車專用集成電路(ASIC)的嵌入式現場可編程邏輯門陣列(eFPGA)
- Imec發(fā)布未來二十年的五大半導體趨勢
- 擴充產品線,莫仕旗下 BittWare加入開放計算 M.2 加速器模塊
- 使用單片機3個IO口+74HC595驅動驅動控制LCD1602液晶
- 8只數碼管滾動顯示8~F
- 英偉達長文駁斥FTC關于Arm收購的指控
- 成立四年,產品批量落地,優(yōu)艾智合完成超3億元B系列融資
- 《“十四五?機器人產業(yè)發(fā)展規(guī)劃》,透露了機器人行業(yè)哪些趨勢?