chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

DMA不產(chǎn)生傳輸完成中斷

jf_pJlTbmA9 ? 來(lái)源:STM32單片機(jī) ? 作者:STM32單片機(jī) ? 2023-10-18 16:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、前言

某客戶發(fā)現(xiàn)修改代碼后,STM32U59 SPI DMA 發(fā)送未產(chǎn)生傳輸完成中斷,但修改的代碼跟 SPI 以及 DMA 毫無(wú)關(guān)聯(lián)。

2、調(diào)研

回退代碼修改后問(wèn)題消失,可以確認(rèn)硬件正常。檢查 SPI 發(fā)送對(duì)應(yīng)的 DMA 句柄的

ErrorCode,發(fā)現(xiàn) HAL_DMA_ERROR_DTE(Date Transfer Error)置位。嘗試修改軟件,發(fā)現(xiàn)調(diào)整下某個(gè)全局變量初值,或屏蔽某些變量,都能解決問(wèn)題。

為屏蔽 RTOS 及應(yīng)用代碼可能帶來(lái)的影響,調(diào)整客戶 SPI 和 DMA 初始化代碼位置到緊跟 MCU 復(fù)位后配置時(shí)鐘,初始化全局變量,并在初始化完成后立即發(fā)送一包數(shù)據(jù),測(cè)試下來(lái)問(wèn)題仍存在,說(shuō)明問(wèn)題和后續(xù) RTOS 及應(yīng)用代碼代碼無(wú)關(guān)。

為澄清全局變量初始化對(duì) SPI 和 DMA 的影響,在全局變量初始化完成、初始化 SPI

和 DMA 前、后,分別檢查 RCC、SPI 和 DMA 寄存器,和正常時(shí)對(duì)比無(wú)差異。

3、分析

客戶使用的是 GPDMA 的 Linked List 模式,此模式下 DMA 傳輸相關(guān)的 8 個(gè)寄存器不通過(guò)軟件直接設(shè)置,而是需要軟件把待設(shè)定的寄存器參數(shù)先放入緩沖區(qū),再將緩沖區(qū)地址賦到 DMA 寄存器 CxLBAR(高 16 位)和 CxLLR(低 16 位),使能 DMA 時(shí)硬件自動(dòng)將這些參數(shù)加載到 DMA 通道對(duì)應(yīng)的寄存器中。

跟蹤代碼執(zhí)行,在 DMA 使能前,查看參數(shù)緩沖區(qū)(地址:0x2001 FFF0)。確認(rèn)

DMA 參數(shù)緩沖區(qū)中源地址寄存器參數(shù) 0x200 e0618、目標(biāo)地址寄存器參數(shù) 0x4001 3020都是正確的;使能 DMA 后,發(fā)現(xiàn) DMA CxDAR 寄存器數(shù)據(jù)異常 0x1382 932e。

wKgZomUD3n2AA8jVAACmM_ZjdoI923.png

wKgZomUD3n6ARAAwAADs0dY7D2o512.png

查閱參考手冊(cè),找到其對(duì)對(duì)緩沖區(qū)限制的描述:必須 4 字節(jié)對(duì)齊,且不能跨 64Kbyte邊界;而用戶的緩沖區(qū)地址 0x2001 FFF0(32 字節(jié))剛好跨了 64Kbyte 邊界。鏈接器分配的地址范圍是 0x2001 FFF0 ~ 0x2002 0010,而 GPDMA 實(shí)際訪問(wèn)的數(shù)據(jù)區(qū)間是0x2001 FFF0 ~ 0x2001 FFFF 和 0x20010000 ~ 0x2001000F,把 2001 0000 對(duì)應(yīng)的數(shù)據(jù)加載到了 DAR 中,隨即引發(fā)了 DTE 錯(cuò)誤。

wKgaomUD3oKABUnsAAHWBCIVSzE190.png

4、處理

處由于增減全局變量、修改變量初值為零或非零,都會(huì)影響最終鏈接結(jié)果,故通過(guò)設(shè)置預(yù)編譯選項(xiàng)對(duì)所有 DMA 鏈表數(shù)據(jù)結(jié)構(gòu)變量的地址作出限制,來(lái)滿足 4 字節(jié)對(duì)齊且不跨64K Byte 邊界這個(gè)約束條件,再次編譯鏈接后進(jìn)行測(cè)試,SPI DMA 功能恢復(fù)正常。

5、小結(jié)

對(duì)這種看似怪異的問(wèn)題,需要仔細(xì)觀察并記錄整個(gè)數(shù)據(jù)傳輸過(guò)程,各個(gè)關(guān)鍵操作前后相關(guān)寄存器的變化來(lái)獲取第一手資料,對(duì)比正常情況并結(jié)合參考手冊(cè)尋找具體原因。

來(lái)源:STM32單片機(jī)
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理

審核編輯 黃宇

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

    關(guān)注

    8

    文章

    5706

    瀏覽量

    128881
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1804

    瀏覽量

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

    關(guān)注

    3

    文章

    576

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    CYT2B93CAE如何構(gòu)建產(chǎn)生中斷的FIFO?

    你好,我正在使用 CYT2B93CAE 使用設(shè)備配置器 5.3,我選擇將不匹配的 ID 存儲(chǔ)在 FIFO 0 中,問(wèn)題是它正在生成中斷,而對(duì)于匹配的 ID,我不想中斷 CPU,只是將它們傳遞給
    發(fā)表于 07-15 06:29

    NVMe IP高速傳輸卻不依賴XDMA設(shè)計(jì)之五:DMA 控制單元設(shè)計(jì)

    DMA 控制單元負(fù)責(zé)控制 DMA 傳輸事務(wù), 該單元承擔(dān)了 DMA 事務(wù)到 NVMe 事務(wù)的轉(zhuǎn)換任務(wù), 使用戶對(duì)數(shù)據(jù)傳輸事務(wù)的控制更加簡(jiǎn)單快
    的頭像 發(fā)表于 07-02 19:47 ?1075次閱讀
    NVMe IP高速<b class='flag-5'>傳輸</b>卻不依賴XDMA設(shè)計(jì)之五:<b class='flag-5'>DMA</b> 控制單元設(shè)計(jì)

    如何使用EXIT0來(lái)觸發(fā)DMA實(shí)現(xiàn)SPI發(fā)送數(shù)據(jù)?

    是能夠正常觸發(fā)DMA的,但是這種情況下會(huì)一直頻繁的進(jìn)EXIT0的中斷函數(shù)。我現(xiàn)在想觸發(fā)中斷,使用EXIT0做事件觸發(fā)DMA
    發(fā)表于 04-23 07:31

    為什么無(wú)法設(shè)置DMA傳輸大???

    我學(xué)會(huì)了將HSADC和DMA結(jié)合起來(lái)進(jìn)行數(shù)據(jù)傳輸,我嘗試修改DMA傳輸數(shù)據(jù)的大小,但一直沒(méi)有成功,傳輸的數(shù)據(jù)已經(jīng)是4095了,這就是為什么,
    發(fā)表于 03-17 07:08

    STM32使用外部中斷觸發(fā)ADC采樣DMA搬運(yùn)出現(xiàn)兩次進(jìn)入DMA中斷的異常情況,怎么解決?

    STM32使用外部中斷觸發(fā)ADC采樣DMA搬運(yùn)出現(xiàn)兩次進(jìn)入DMA中斷的異常情況,使用的HAL庫(kù)+MX配置的,示波器觀察波形ADC中斷進(jìn)入一次
    發(fā)表于 03-14 12:46

    TIM2輸入捕獲,DMA開啟中斷傳輸輸入捕獲數(shù)據(jù),程序跑的過(guò)程中,DMA一直中斷,TIM6只觸發(fā)一次中斷,怎么解決?

    用TIM2捕獲輸入的數(shù)據(jù),并且通過(guò)DMA存儲(chǔ),在開啟DMA中斷同時(shí),TIM6中斷也開啟(用于計(jì)時(shí))。但是程序跑的過(guò)程中,DMA一直
    發(fā)表于 03-14 06:39

    STM32G030F6 ADC+DMA多通道非連續(xù)采樣無(wú)法正常工作怎么解決?

    配置:使用STM32G030F6 ADC外設(shè)時(shí),ADC使用兩個(gè)通道。DMA配置為循環(huán)模式,ADC掃描模式+非連續(xù)采樣。 問(wèn)題:初始化階段能進(jìn)一次DMA傳輸完成中斷,在main函數(shù)中再次
    發(fā)表于 03-12 07:10

    請(qǐng)問(wèn)KF32A156MQV DMA發(fā)送完成中斷如何配置才能進(jìn)入?

    只配置了這個(gè)還是進(jìn)不來(lái)DMA發(fā)送中斷。求指點(diǎn)
    發(fā)表于 02-27 07:18

    DLPC3479速度與圖片大小傳輸,需要多久能傳輸完畢?

    ), 通過(guò)并口傳輸,在RGB888模式下,圖片大小為1920*1080*24bit, 如果時(shí)鐘頻率是100MHz,需要多久能傳輸完畢?和速度1440 Hz (1-bit) and 180 Hz (8-bit)有何關(guān)系?多謝
    發(fā)表于 02-18 07:21

    AT32F407在USART2 DMA發(fā)送數(shù)據(jù)時(shí),接包接到了要發(fā)送的數(shù)據(jù),程序還是處于等待傳輸完成的標(biāo)識(shí)判斷中,為什么?

    型號(hào)AT32F407,在USART2DMA發(fā)送數(shù)據(jù)時(shí),接包已經(jīng)接到了要發(fā)送的數(shù)據(jù),但是程序還是處于等待傳輸完成的標(biāo)識(shí)判斷中,卡死了。請(qǐng)教一下是什么造成的?
    發(fā)表于 12-19 06:48

    DMA是什么?詳細(xì)介紹

    DMA(Direct Memory Access)是一種允許某些硬件子系統(tǒng)直接訪問(wèn)系統(tǒng)內(nèi)存的技術(shù),而無(wú)需中央處理單元(CPU)的介入。這種技術(shù)可以顯著提高數(shù)據(jù)傳輸速率,減輕CPU的負(fù)擔(dān),并提高整體
    的頭像 發(fā)表于 11-11 10:49 ?1.9w次閱讀

    單片機(jī)的中斷有哪些?各類型中斷有什么作用?

    模塊也會(huì)產(chǎn)生中斷。 觸摸傳感中斷:在觸摸屏或觸摸傳感器檢測(cè)到觸摸事件時(shí)觸發(fā)。 DMA中斷:當(dāng)直接存儲(chǔ)器訪問(wèn)(DMA
    發(fā)表于 09-24 16:22

    MM32SPIN06的IWDG中斷生效是哪里出了問(wèn)題?

    MM32SPIN06的IWDG中斷生效,已經(jīng)配置IWDG 溢出后產(chǎn)生中斷 ,NVIC中使能IWDG中斷,可是 IWDG 溢出后沒(méi)有產(chǎn)生中斷
    發(fā)表于 07-26 06:08

    使用TLE9893的SSC0向一個(gè)SPI設(shè)備發(fā)送一些數(shù)據(jù),數(shù)據(jù)寄存器中的字節(jié)傳輸到移位寄存器后,是否會(huì)產(chǎn)生傳輸結(jié)束中斷?

    。 因此,CS 過(guò)早被取消選擇。 是否有移位寄存器(如 UART)? 數(shù)據(jù)寄存器中的字節(jié)傳輸到移位寄存器后,是否會(huì)產(chǎn)生傳輸結(jié)束中斷? 我可以使用什么
    發(fā)表于 07-23 08:21

    求助,關(guān)于STM32G473 TIM8 DMA burst模式問(wèn)題求解

    我在配置外部觸發(fā)源定時(shí)觸發(fā)TIM8_CH1輸出PWM時(shí),打算使用DMA1_Channel4在每次TIM8 UP時(shí)觸發(fā)DMA傳輸來(lái)更新ARR、RCR、CCR1寄存器,在DMA
    發(fā)表于 07-23 06:39