![]() |
發布時間: 2021-8-28 19:34
正文摘要:驅動電機的程序一般是一個載波周期進入一次中斷,在STM32單片機中斷程序里面做電壓采樣、電流采樣從而用于電機控制。但是單電阻采樣的實現方式,必須要在一個載波周期里面采樣兩相電流,進入一次中斷怎么來采樣兩相 ... |
abob 發表于 2021-9-2 08:40 非常感謝,我明白了。 |
yermsir 發表于 2021-9-2 00:05 在AD觸發的列表里 有來自定時器的觸發源。 ![]() ![]() |
我的芯片是瑞薩RX62T的芯片。 |
yermsir 發表于 2021-9-1 14:51 如果是基于STM32的芯片 F3系列以上。 每個定時器有6個通道。1,2,3通道可以用來輸出圖上的PWM1,2,3L 信號。5,6通道可以輸出額外的PWM波。ADC可以設置為 被 5,6通道輸出波形的上升沿觸發采集。 并不是要寫一個中斷函數。而是寫5,6通道PWM的波形值。 波形走到上升沿會引起ADC的采集。 用延時肯定是不行的。因為采樣點覆蓋左半側的所有位置。而右半側要計算。 能告訴你具體的型號么。得首先確定 你的單片機的ADC是不是只能手動觸發。 其次是你的控制需求和開關頻率。 看看有沒有可能用B,C點引起中斷的辦法。 |
abob 發表于 2021-8-29 11:45 你好,我的單片機沒有DMA的功能。所以我不太懂,關于您的說法我想再請教一下。 A中斷中,用定時器另外的通道是什么意思? 寫入B,C點的上升沿的語句,是在A中斷的中斷函數里面寫的嗎? 如果是在A中斷的中斷里面寫的,就相當于在A中斷里面又寫了一個中斷函數。這是中斷嵌套的概念對嗎?B,C點的上升沿優先級更高,觸發后先去執行這個中斷,執行完在返回到A中斷函數里面繼續執行? |
abob 發表于 2021-8-29 11:45 樓主的應用不能用DMA,每次電壓電流采集都要有對應的控制操作,用DMA的話,電機都燒掉了你還不知道。 |
yermsir 發表于 2021-8-28 20:24 在A中斷中 用定時器另外的通道。 寫入B,C點的上升沿 通過上升沿觸發AD DMA自動將結果搬運到內存。 在D中斷中直接讀取內存結果, |
電流采樣是通過TIM AD 和 DMA配合自動采集的 在中斷里只是負責讀取兩相電流的AD結果。 |