COM事件是專門為電機控制用的,它只出現在高級定時器TIM1和TIM8中,普通定時器TIM2~TIM4沒有COM事件。
COM事件是用于同時控制所有通道的輸出轉換,在電機控制中同時轉換所有通道的輸出是十分必要的
比如無刷電機換向時,一般是三相要同時換向的,但是你在軟里設置換向時肯定是一次只能設置一相,這就達不到三相同時換向了不。其實簡單的辦法就是啟用 STM32的COM事件,你先逐個設置好每相的換向(注意:此時雖然設置了,但實際上并不會進行換向),然后再調用COM事件,此時,三相將同時換向,就這么來的。阿呆版主,這夠清楚了吧
COM事件發生在STM32的高級控制定時器(TIM1、TIM8)的“六步PWM的產生”,而6-step PWM用于驅動三相電機,對應著直流無刷電機(BLDC)的六步換相。驅動三相電機需要什么波形,可參考有關電機驅動方面的資料,STM32的資料中沒有介紹這些背景知識。
六步PWM的產生:當在一個通道上應用了互補輸出時,OCxM、CCxE和CCxNE位的預裝位有效。在COM通信事件發生時,預裝載位被傳送到影子位;因而可以預先設置好下一步的配置,并在同一時間更改所有通道的配置。COM事件可以通過硬件(在TRGI的上升沿)設置或者軟件修改TIM1_EGR寄存其中的COM位來產生。當COM事件發生時會設置一個標志位(TIM1_SR寄存器中的COMIF位),這時如果已設置了TIM1_DIER寄存器的COMIE位,則產生一個中斷;或者如果已設置了TIM1_DIER寄存器的COMDE位,則產生一個DMA請求。