欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: stm32的dma傳輸完成中斷是指什么時候? [打印本頁]

作者: bigbigcong    時間: 2021-8-4 19:16
標題: stm32的dma傳輸完成中斷是指什么時候?
  最近接手一個老項目是用到ADC和DMA配合使用,ADC是5個通道循環轉換,然后通過DMA傳輸到定義的全局數組里。每當DMA完成傳輸的時候就出發一次中斷然后在DMA中斷處理函數中對 1個 通道的AD值進行卡爾曼濾波,每次DMA中斷只對一個通道的AD值進行濾波下一次中斷就對下一個通道濾波,現在遇到的疑問就是:

    1、STM32的DMA配置的時候有兩個跟數據量有關的:一是傳輸的數據位寬(1字節、2字節和4字節),二是傳輸的總數據個數。那么這個DMA傳輸完成觸發中斷是指每傳輸一個數據、還是傳輸完總數據個數就觸發DMA中斷? 例如像我這里ADC轉換5個通道,DMA配置為:2字節位寬、傳輸總數據個數為5.開啟DMA中斷后那么我這里是每次ADC轉換完一個通道就出發一次DMA中斷?還是ADC要循環轉換完5個通道才觸發一次DMA中斷?

    2、之前一直用沒留意,然后今天看了一下卡爾曼濾波就對這個DMA中斷觸發看不懂。找到的芯片手冊也沒怎么細講。我就想我這里如果DMA是每當ADC轉換完一個通道就觸發一次中斷然后對這個通道的AD值進行濾波,那么就是符合要求的。如果是每當ADC轉換完5個通道DMA才觸發一次中斷,那豈不是要ADC連續5次轉換5個通道才能將5個通道的AD值進行濾波1次,這也太蠢了吧?

    3、代碼是上一任員工寫的,我在想能不能將那個DMA的總數據個數改為1個,然后每當ADC轉換完一個通道就觸發一次中斷來進行濾波,這樣實時性會不會好一些?

  有懂的大哥們幫幫忙解惑一下,謝謝了!!

作者: 黃youhui    時間: 2021-8-5 10:16
DMA中斷問題先放一邊,先說一下濾波問題,”ADC轉換完一個通道就觸發一次中斷來進行濾波”,你一個數據你和誰濾波?ADC轉換一次是一個數據。
作者: bigbigcong    時間: 2021-8-5 10:38
黃youhui 發表于 2021-8-5 10:16
DMA中斷問題先放一邊,先說一下濾波問題,”ADC轉換完一個通道就觸發一次中斷來進行濾波”,你一個數據你和 ...

卡爾曼濾波的原理就是跟以往的數據進行比較,然后預測這一次的結果。每次轉換的AD數據都要保留到下一次計算濾波。
作者: wfqxgw    時間: 2021-8-5 11:02
1,按我之前使用過的經驗.是總數據個數傳完即產生中斷.你設置5.那就是5個數據傳完就中斷了.
2,3,如果你只用一個通道.那還要用什么DMA.直接讀ADC不就行了嗎?
作者: bigbigcong    時間: 2021-8-5 14:49
wfqxgw 發表于 2021-8-5 11:02
1,按我之前使用過的經驗.是總數據個數傳完即產生中斷.你設置5.那就是5個數據傳完就中斷了.
2,3,如果你只用 ...

有道理
作者: ganhui1300    時間: 2021-8-5 17:06
STM32中文參考手冊_v10 144頁,寫得很清楚,在數據傳輸結束后,傳輸完成標志位(TCIF)被置1,當設置了允許傳輸完成中斷為(TCIE),將產生一個中斷請求。傳輸數據則由DAM_CMARX寄存器設置,其實就是你自己設置的數據大小。結論:你設置了多少傳輸數據,數據傳輸完成才能觸發完成中斷。只有一個通道要求的,直接用ADC轉換完成中斷處理就好了。多通道覺得比較麻煩的,可以采用注入型ADC轉換。
作者: ganhui1300    時間: 2021-8-5 17:09
STM32中文參考手冊_v10 144頁,明確說了。
1.當傳輸一半的數據后,半傳輸標志(HTIF)被置1,當設置了允許半傳輸中斷位(HTIE)時,將產生一個中斷請求。在數據傳輸結束后,傳輸完成標志(TCIF)被置1,當設置了允許傳輸完成中斷位(TCIE)時,將產生一個中斷請求。數據是由用戶設置的,最大為65536。
2.如果只是單通道ADC直接采用,ADC轉換完成中斷里面處理數據就好。
3.如果是多通道,可以用DMA,或者是注入型ADC轉換。
作者: bigbigcong    時間: 2021-8-5 17:11
ganhui1300 發表于 2021-8-5 17:06
STM32中文參考手冊_v10 144頁,寫得很清楚,在數據傳輸結束后,傳輸完成標志位(TCIF)被置1,當設置了允許 ...

哎,這里我第一時間就看了,其實是我接手的項目之前那個人寫的代碼把我搞混淆了,我不敢確定。現在理解了。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1