日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

使用CubeMx怎么配置不了UART的DMA?

茶話MCU ? 來源:ST MCU 信息交流 ? 2020-07-05 10:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

STM32用戶反映,他目前使用STM32F407VE的芯片開發(fā)產(chǎn)品,在使用CubeMx做初始化配置時發(fā)現(xiàn)沒法給UART5配置基于該外設(shè)事件的DMA請求。他覺得很奇怪,堅信UART5是可以申請DMA傳輸?shù)?,而且他還基于早期CubeMx 版本配置過、使用過。

他剛好最近對CubeMx升級到5.5.0了,懷疑是不是STM32CubeMx5.5以上版本的bug。

說到這里,可能有人還不是沒完全明白具體怎么回事。我們結(jié)合他給過來得截圖一起來看看。他在對uart5做配置時出現(xiàn)的界面是下面這樣的,連那個DMA配置的菜單都沒有。

基于他的反饋,我用目前最新的CubeMX版本5.6.1進行驗證,同樣對STM32F407VE的UART5進行配置并試著為其申請DMA傳輸。經(jīng)過測試并沒有碰到他所說的問題。

那問題出在哪兒呢?

我的測試工程只是單純使用到UART5,并未使用其它外設(shè)及相關(guān)DMA應(yīng)用。我結(jié)合他反饋過來的配置截圖,隱約發(fā)現(xiàn)他的工程應(yīng)用中并不僅僅使用一個UART5外設(shè),還用到了其它外設(shè)。會不會是他在配置其它外設(shè)并申請DMA請求時,把UART5可以申請的DMA流占用了呢?

我們先不妨打開STM32F4系列參考手冊的DMA章節(jié),看看有關(guān)外設(shè)事件與DMA傳輸流的映射關(guān)系圖。從手冊中我們可以看到,UART5的TX/RX事件能申請DMA毫無疑問,但只能申請DMA1_S0和DMA1_S7。

然而呢,可以申請DMA1_S0和DMA1_S7的外設(shè)事件又有很多,比方TIM4_CH1和TIM4_CH3就可以分別申請DMA1_S0和DMA1_S7。如果說,在做UART5事件的DMA配置之前,若有別的外設(shè)事件已經(jīng)將DMA1_S0和DMA1_S7申請走了,這時UART5就應(yīng)該沒得申請了。

基于上面分析,我們可以進一步驗證下。

我們使用上面提到得TIM4_CH1和TIM4_CH3先將DMA1_S0和DMA1_S7申請走,再來嘗試為UART5申請DMA,看看會怎么樣。結(jié)果CubeMX提示該外設(shè)請求無效,不能申請DMA了。如下圖所示:

提示界面跟客戶反饋的不太一樣,應(yīng)該是CubeMx版本的差異所致。表達的基本意思還是相同的,即此時沒法為UART5事件申請DMA傳輸。

到此,客戶反饋的問題原因也基本清晰。像這種情況,由于UART5的TX/RX事件要申請的DMA流固定了,我們可以看看目前占用uart5欲申請的DMA流的外設(shè),他們是否可以做調(diào)整去申請別的DAM流,從而避免競爭。因為有些外設(shè)事件可能申請的DMA流不只一條,當(dāng)然這要結(jié)合具體的芯片。以STM32F4芯片為例,下圖中的TIM1_CH1,SPI1_RX,SPI1_TX可申請的DMA傳輸流都不只一條。

或許有人知道,STM32家族中有些系列支持DMAMUX,如果有它做DMA配置就更方便、高效。但不管怎樣,DMA請求事件肯定要遠遠多于具體實施傳輸?shù)腄MA流,所以具體應(yīng)用中并不能保證有申請DMA資格的事件就一定申請得到相應(yīng)的DMA傳輸。就像你有錢也有資格坐飛機坐高鐵,但并不能保證你時刻可以買到你期望的機票或火車票而成行。

再結(jié)合到本案例,遇到兩個外設(shè)事件對一個DMA傳輸流發(fā)生競爭不可避免的時候,若兩個外設(shè)對DMA的使用在時間上可以錯開的話,也還是有辦法解決的。我們可以使用CubeMx分別基于兩個外設(shè)的DMA請求事件生成兩套配置,然后手動調(diào)整代碼,需要使用哪個外設(shè)事件的DMA傳輸時就啟用相應(yīng)的DMA配置及應(yīng)用函數(shù)??傊?,搞清了怎么回事,結(jié)合具體應(yīng)用靈活處理就好。

最后小結(jié)下。針對上面的客戶問題,如果對CubeMx工具的使用不熟或者說只是機械地使用該工具做配置,心里沒有些基本原理做支撐的話,遇到該問題時恐怕一時也的確難以找到方向。在此分享,權(quán)作提醒。

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

    關(guān)注

    463

    文章

    54475

    瀏覽量

    469789
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1322

    瀏覽量

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

    關(guān)注

    3

    文章

    582

    瀏覽量

    106306

原文標(biāo)題:使用CubeMx怎么配置不了UART的DMA?

文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    S32K344 RTD600上UART+DMA使用MCAL庫,Uart_AsyncSend()發(fā)不出數(shù)據(jù)的原因?如何解決?

    我使用MCAL庫配置兩個串口,其中UART0使用DMA模式,UART1使用中斷模式;發(fā)現(xiàn)UART0無法發(fā)出數(shù)據(jù),
    發(fā)表于 04-23 07:38

    UART數(shù)據(jù)轉(zhuǎn)發(fā)芯片 多接口可配置

    uart
    穩(wěn)控自動化
    發(fā)布于 :2026年04月10日 10:46:12

    想用DMA+uart同時訪問串口2和3是不是不可以?

    想用DMA+uart同時訪問串口2和3是不是不可以?
    發(fā)表于 12-05 06:19

    UART無法收發(fā)/亂碼的排查

    了嗎?共地了嗎? 3、引腳復(fù)用: 確認(rèn)使用的 UART 引腳配置正確,且復(fù)用功能已開啟。 4、中斷/DMA: 如果使用中斷或 DMA,相關(guān)配置
    發(fā)表于 11-18 07:05

    蜂鳥內(nèi)核中DMA的硬件實現(xiàn)——寄存器配置

    DMA,Direct Memory Access,直接內(nèi)存訪問,是一種不經(jīng)過CPU而直接從內(nèi)存存取數(shù)據(jù)的數(shù)據(jù)交換模式。在DMA模式下,CPU只需要向DMA控制器下達指令(配置
    發(fā)表于 10-24 08:46

    CUBEMX配置不了,配置完立刻閃退掉,無法查看cubemx配置界面是為什么?

    在studio配置cubemx配置不了,配置完沒顯示cubemx的界面
    發(fā)表于 10-11 12:33

    STM32cubeMX生成配置rt-thread引用問題求解

    如題,本人小白,剛接觸rt-thread,STM32F1/4簡便配置起見利用cubeMX自動生成,測試幾次后直接蒙了,不知道哪些文件是rt-thread項目必須的,網(wǎng)上說法也五花八門,說代碼屏蔽某些
    發(fā)表于 09-12 07:21

    Env配置DMA出錯的原因?怎么處理?

    為啥我配置DMA出現(xiàn)報錯 制作的bsp是沒有報錯
    發(fā)表于 09-11 07:24

    STM32H743 UART DMA接收不到數(shù)據(jù)是為什么?

    #define BSP_USING_UART #define BSP_USING_UART3 #define BSP_UART3_RX_USING_DMA #define
    發(fā)表于 09-11 07:14

    XMC7100 F100K4160AA Uart2 dma實例程序無法運行,使用hal驅(qū)動發(fā)送丟字符并且無法接收怎么解決?

    問題1:修改SCB UART DMA Echo實例程序引腳和dma通道配置正常運行后,無法按照實例設(shè)計功能接收和顯示。 問題2:使用hal驅(qū)動方式,能正常發(fā)送數(shù)據(jù),但經(jīng)常丟字符,添加
    發(fā)表于 08-13 06:23

    無法配置 ADC1 來觸發(fā) DMA 傳輸,怎么解決?

    您好,我無法配置 ADC1 來觸發(fā) DMA 傳輸,以便將 ADC 結(jié)果復(fù)制到緩沖區(qū)中并避免使用 ADC1 中斷。 根據(jù)用戶手冊,我發(fā)現(xiàn)應(yīng)該使用 DMAP_ADC 來設(shè)置 DMA 的觸發(fā)源。 我設(shè)置
    發(fā)表于 07-21 06:57

    使用CubeMX配置STM32H7R7L8的時候出現(xiàn)無配置問題,怎么解決?

    使用CubeMX配置STM32H7R7L8的時候出現(xiàn)無配置問題,但是根據(jù)正點原子提供的例程中的.ioc文件中又是可以正常配置的。
    發(fā)表于 06-23 07:40

    STM32H7CubeMX配置硬件I2C,讀寫失敗是什么問題呀?

    STM32H7CubeMX配置硬件I2C,讀寫失敗什么問題呀,同樣的操作F4和F1都能正常使用,應(yīng)該不存在i2c地址錯誤,操作都是一樣的,但H7就是用不了。I2C_WaitOnFlagUntilTimeout返回HAL_ERRO
    發(fā)表于 06-12 06:21

    stm32f407無法配置定時器2為全部dma怎么解決?

    斷的情況,少鏈接其中一個通道,就不會出現(xiàn)這種情況,麻煩各位老師幫忙分析一下,給點思路,非常感謝。。(ps:CubeMX下是無法配置定時器2的4個通道為dma模式)[/td] 以下內(nèi)容為評論 [td]看了一下
    發(fā)表于 06-11 06:49

    如何才能拿到UART通過DMA收取回來的數(shù)據(jù)呢?

    你好,我想詢問一下UART使用DMA時收取數(shù)據(jù)的代碼。之前我是用的是非DMA模式,使用的函數(shù)是CyU3PUartReceiveBytes,但是其處理速度不符合我的要求。因此我使用DMA
    發(fā)表于 05-22 08:31
    泾阳县| 张家口市| 旬邑县| 秦安县| 富源县| 喀喇沁旗| 娱乐| 辉南县| 长寿区| 海原县| 北宁市| 黑龙江省| 宁阳县| 灵石县| 昌乐县| 樟树市| 南华县| 海丰县| 平阳县| 桂东县| 云浮市| 博客| 全椒县| 邮箱| 岱山县| 同心县| 登封市| 崇左市| 八宿县| 安塞县| 霍邱县| 定陶县| 五莲县| 奉贤区| 江川县| 上高县| 江孜县| 石棉县| 天峨县| 汤原县| 城固县|