NXP 是什麼讓 i.MX RT 能完美支持多電機控制?

日期 : 2019-07-20
標籤 :
WPINXP世平恩智浦i.MX RT電機控制

新聞內容

恩智浦最新的跨界處理器i.MX RT系列產品,在電機控制場合瞄準了多電機應用方向,為此特別定製了一個全新的外設——ADC_ETC(ADC External Trigger Control)。本文將從解讀ADC_ETC基本功能入手,再結合3種多電機控制的實戰案例,介紹ADC_ETC的使用技巧。

解讀ADC_ETC

ADC_ETC配置靈活、可擴展性強,配合2個ADC可以完美勝任多次並行模擬量採樣的任務。雖然它是新外設,但是理解起來並不困難,從名字便可顧名思義:它就是一個ADC的控制器,操控ADC完成採樣並存儲採樣結果。

下面我們結合官方參考手冊中的結構圖來解讀。


圖1. ADC_ETC配合ADC工作的結構圖


圖1是ADC_ETC配合2個ADC工作的結構圖,其中以白色為底色的是屬於ADC_ETC的部分。

這張圖的信息量還是比較大的,我們挑出幾個關鍵點進行重點介紹:

► 有8組採樣控制隊列(Queue),每個Queue通過配置可以有0~8個Chain。也就是說,整個ADC_ETC最多有64個Chain。

► Queue 0/1/2/3 只能操控ADC1,Queue 4/5/6/7隻能操控ADC2。

► 每個Chain都可以操控ADC對任意一通道完成1次採樣、保存1個採樣結果,在採樣完成後也可以選擇是否使能DONE0/DONE1/DONE2這3個中斷中的任意一個。

► 每個Queue對應1個觸發輸入(Trigger IN)。每次Trigger IN信號到來後,對應的Queue將從Chain0開始按順序連續執行所有的Chains,每個Chain之間可以預設間隔時間。

► 每個Trigger IN都可以通過XBAR鏈接到PWM的觸發信號,且Trigger IN之間可以共用同一個觸發源。

► 可配置Trigger IN/Queue的優先級,一共8個優先級。如果操控同一個ADC的Trigger IN/Queue同時被觸發,則先執行優先級高的,再執行優先級低的。

此外,ADC_ETC的觸發方式有兩種模式,如圖2所示:

圖2. 同步模式和異步模式

► 異步模式(AsyncMode):

Queue0/1/2/3分別由TRIG0/1/2/3觸發,Queue4/5/6/7分別由TRIG4/5/6/7觸發。

► 同步模式(SyncMode):

Queue0/4,Queue1/5,Queue2/6,Queue3/7分別由TRIG0/1/2/3同時觸發。顯然,利用同步模式,可以方便地實現2通道模擬信號的同步並行採樣。


圖3. ADC_ETC全局控制寄存器


值得注意的是,在配置ADC_ETC初始化代碼時,一定要先按下面的步驟順序配置ADC_ETC全局控制寄存器(Global Control Register 如圖3),之後才能操作ADC_ETC的其他寄存器。

① 單獨清零SOFTRST位,否則對其他寄存器的操作將無效。

ADC_ETC->CTRL &=~ADC_ETC_CTRL_SOFTRST_MASK;

如果想使用ADC2,則需要清零TSC_BYPASS位,否則ADC2將被TSC占用。

ADC_ETC->CTRL &= ~ADC_ETC_CTRL_TSC_BYPASS_MASK;

在雙PMSM/BLDC電機控制中的應用案例


圖4. 雙PMSM/BLDC電機控制的PWM和ADC時序圖

如圖4所示,在單晶片同時控制2個PMSM或BLDC電機的應用中,2個電機的PWM相位互差180°(即半個周期),且在PWM周期起始時刻的觸發ADC_ETC採樣。具體實現方法,可以參考發布在官網的應用筆記AN12200(Dual FOC Servo Motor Control on i.MX RT)。



圖5. 雙PMSM/BLDC電機控制的ADC_ETC配置示意圖

雙PMSM/BLDC電機的ADC_ETC配置方法,如圖5所示。利用XBAR(Cross BAR)將2個PWM的觸發信號分別引入Trigger IN0和Trigger IN1。由於配置了同步模式(SyncMode),Trigger IN0同時觸發Queue0和Queue4。Queue0和Queue4中Chain0同時分別採樣電機1的A相和B相電流,之後順序執行各自Chain1的採樣。在Queue4的Chain1採樣完成之後,觸發DONE0中斷,在此中斷中執行電機1的控制算法。Queue1和Queue5對電機2採樣過程與上述電機1的類似。

在4個步進電機控制中的應用案例



圖6. 4個步進電機的PWM時序圖

如圖6所示,在4個步進電機控制中,PWM互差90°(1/4周期),在PWM的起始時刻觸發ADC_ETC採樣。 



圖7. 4個步進電機的ADC_ETC配置示意圖


4個步進電機控制中的ADC_ETC配置方法,如圖7所示。利用XBAR(Cross BAR)分別將4個PWM的觸發信號分別引入Trigger IN0、Trigger IN1、Trigger IN2、Trigger IN3。由於配置了同步模式(SyncMode),Trigger IN0同時觸發Queue0和Queue4。Queue0和Queue4中Chain0同時分別採樣電機1的A相和B相電流。之後在Queue4的Chain0採樣完成之後,觸發DONE0中斷,在此中斷中執行電機1的控制算法。

針對電機2/3/4的配置和電機1的類似。

需要注意的是,由於ADC_ETC中只有3個轉換完成中斷可選,所以這個案例中電機2和電機4共用同一個DONE1中斷,需要在中斷服務程序中根據DONE0_1_IRQ寄存器中的標誌進行判斷,用來區分當前中斷是由Trigger IN1和Trigger IN3二者中哪一個觸發的,這樣就可以知道當前應該執行電機2還是電機4的控制算法。

在PMSM伺服+步進伺服中的應用案例



圖8. PMSM伺服+步進伺服的PWM時序



圖9. PMSM伺服+步進伺服的ADC_ETC配置示意圖

圖8和圖9展示了一種雙電機應用,其中一個是PMSM伺服,PWM頻率是10Khz;另一個是步進伺服,PWM頻率是20Khz。2個電機都使用磁角度傳感器作為位置傳感器,該磁角度傳感器輸出一對與磁場角度成正弦和餘弦關係的電壓信號,所以需要對這對電壓信號進行連續多次採樣。

  • A點:觸發優先級為高,採集PMSM伺服電機的2相電流、母線電壓和溫度,之後使能中斷,執行PMSM伺服控制算法。

  • B點:觸發優先級為低,採集PMSM伺服電機的磁角度傳感器的一對電壓信號,連續採集8次。

  • C點:觸發優先級為高,採集步進伺服電機的2相電流、母線電壓和溫度,之後使能中斷,執行步進伺服控制算法

  • D點:觸發優先級為低,採集步進伺服電機的磁角度傳感器的一對電壓信號,連續採集8次。


在這個案例中,ADC_ETC的優勢充分展現:

  1. 具有觸發優先級控制的能力:A和D、B和C共享同一個觸發源,且會出現同時被觸發的情況,通過優先級控制,優先執行相電流採樣,再執行磁角度傳感器採樣。

  2. 具有強大的連續採樣能力和豐富的採樣結果寄存器:可以連續採集8對信號,並且保存在各自的寄存器中。

 

更多恩智浦AI-IoT市場和產品信息,邀您同時關注“NXP客棧”微信公眾號

我要聯絡