漫談系列的前兩期分別介紹了 MM32F5270 所采用的?“星辰”STAR-MC1 處理器和多并發(fā)總線架構(gòu)設(shè)計(jì),相信讀者在讀完了前面的介紹后,已經(jīng)對(duì) MM32F5270 的高性能設(shè)計(jì)特點(diǎn)有了一定的了解。本期,筆者接著來聊聊在 MM32F5270 中首次采用的外設(shè)間互聯(lián)矩陣 MindSwitch 和組合邏輯單元 CLU,看看 MM32F5270 是如何通過 MindSwitch 和 CLU 來實(shí)現(xiàn)可任意編程、任意重組的外設(shè)間互聯(lián)系統(tǒng)的。 ?
注:為避免讀者把外設(shè)互聯(lián)和上期談到的總線互聯(lián)混淆,這里做一個(gè)簡單的解釋??偩€互聯(lián)指的是CPU、DMA 等總線 Master 和存儲(chǔ)、外設(shè)等總線 Slave 間的數(shù)據(jù)傳遞,而外設(shè)互聯(lián)指的是外設(shè)間的控制信號(hào)的交互。
痛點(diǎn):IP-to-IP
MCU 中文翻譯為微控制器,可以定義為使用處理器來控制外圍設(shè)備以實(shí)現(xiàn)和外部世界交互的控制單元,這里的交互包括外部信號(hào)的采集、通信以及對(duì)外部電路的控制。因此, MCU 一般具備比較豐富的外圍設(shè)備(外設(shè),Peripherals),常見的外設(shè)如下表所示: ?
? 需要補(bǔ)充說明的是,上表中僅僅列舉了外設(shè)的類型,而在一個(gè) MCU 中,其每種外設(shè)的數(shù)量可能是有很多個(gè)的,這樣一來,所有外設(shè)的數(shù)量就變得很龐大。 ? 而在實(shí)際應(yīng)用中,這些外設(shè)往往不是孤立的,很多情況下都需要多個(gè)外設(shè)間的協(xié)同配合去實(shí)現(xiàn)某項(xiàng)功能,典型的例子如電機(jī)控制系統(tǒng),這類系統(tǒng)中往往需要 ADC、定時(shí)器、PWM等模塊間的精確同步。因此,當(dāng)這些數(shù)量龐大的外設(shè)間需要交互時(shí),如何高效便捷的管理成了芯片設(shè)計(jì)中的一個(gè)主要難題(芯片設(shè)計(jì)人員一般將此叫做 IP-to-IP 設(shè)計(jì))。 ? 而 MCU 的一個(gè)主要特點(diǎn)是其面向的應(yīng)用非常廣泛,這就導(dǎo)致不同的用戶對(duì)于外設(shè)資源的使用千差萬別,外設(shè)間的同步邏輯更是各不相同。 ? 為滿足不同應(yīng)用的需求,就需要外設(shè)間的互聯(lián)做到靈活可配。但在很多市面上常見的 MCU 中,外設(shè)間的同步邏輯是固定的,是軟件無法配置的。這種 IP-to-IP 設(shè)計(jì)雖然能夠滿足一些典型應(yīng)用的需求,但確無法滿足所有用戶的需求。? 以靈動(dòng)的產(chǎn)品為例,MM32F3270 和 MM32F5270 中均配備了2 個(gè) 5 通道高級(jí)定時(shí)器和 4 個(gè) 4 通道通用定時(shí)器,每個(gè)定時(shí)器都有一路觸發(fā)脈沖輸出(TRGO 信號(hào),具體含義參考用戶手冊(cè)),同時(shí)定時(shí)器的每個(gè)通道都可以產(chǎn)生一個(gè)觸發(fā)脈沖輸出,因此,這里一共有 32 個(gè)觸發(fā)脈沖信號(hào),這些脈沖可用于觸發(fā)其它模塊的執(zhí)行,如觸發(fā) ADC 的采樣和 DAC 的轉(zhuǎn)換,或觸發(fā)其它定時(shí)器的計(jì)數(shù)以實(shí)現(xiàn)多計(jì)數(shù)器間的同步。 ? 以定時(shí)器觸發(fā) ADC 采樣為例,傳統(tǒng)的做法是根據(jù)應(yīng)用經(jīng)驗(yàn),固定幾種常見的觸發(fā)方式,這里可以參考 MM32F3270 中的做法,如下圖所示??梢钥吹?,這里 ADC 的觸發(fā)源是通過一個(gè) 5 位的 TRGSEL 寄存器來選擇的。 ? 這里主要有兩個(gè)局限: ?觸發(fā)源有限? 這里的觸發(fā)源僅覆蓋了 32 個(gè)觸發(fā)脈沖信號(hào)中的半數(shù),例如如果用戶想選擇 TIM1\_TRGO,或者 TIM2\_CC3 等來觸發(fā),這里是無法實(shí)現(xiàn)的 ?觸發(fā)源的組合有限? 假如用戶需要在 1 個(gè) PWM 周期內(nèi)多次觸發(fā) ADC,則需要多個(gè)觸發(fā)源的邏輯組合(OR 運(yùn)算),但這里支持的信號(hào)組合非常有限。 ?
互聯(lián)矩陣 MindSwitch
MindSwitch就是針對(duì)這一痛點(diǎn)而設(shè)計(jì),實(shí)現(xiàn)了可以任意編程、任意重組的 IP-to-IP 互聯(lián)網(wǎng)絡(luò)。MindSwitch 將系統(tǒng)常用的觸發(fā)源都連接到了其輸入端,解決了觸發(fā)源限制;而 MindSwitch 內(nèi)置的組合邏輯單元 CLU (Combinational Logic Unit) 則支持任意信號(hào)的邏輯組合,解決了觸發(fā)源組合限制。? MindSwitch 和 CLU 的構(gòu)造如下圖所示,其主要特性包括: ? 分為觸發(fā)矩陣(Trigger Matrix)和連接矩陣(Connection Matrix)? 可配置觸發(fā)源和觸發(fā)目標(biāo) ?
觸發(fā)源和觸發(fā)目標(biāo)可自由配置
支持外設(shè)硬件觸發(fā)和軟件觸發(fā)
內(nèi)部集成四個(gè)組合邏輯單元 CLU,提供 OR-OR 組合邏輯操作
可配置連接源和連接目標(biāo) ?
連接源和連接目標(biāo)可自由配置
內(nèi)部集成四個(gè)組合邏輯單元 CLU,提供多種組合邏輯操作
支持不同時(shí)鐘頻率的觸發(fā)源和觸發(fā)目標(biāo)之間協(xié)同工作 ? 讀者可以把 MindSwitch 理解成兩個(gè)獨(dú)立的 M 到 N 映射矩陣,其中 M 是源的數(shù)量,N 是目標(biāo)數(shù)量,任意源可以映射到任意目標(biāo)上。 ?
? 這里,觸發(fā)指的是邊沿觸發(fā)(上升沿、下降沿),而連接指的是電平信號(hào)的直連。 ? 在 MindSwitch 內(nèi)部,這兩種類型的互聯(lián)矩陣是互相獨(dú)立的,即 MindSwitch 內(nèi)部包含了 1 個(gè)觸發(fā)類型互聯(lián)矩陣(Trigger Matrix)和 1 個(gè)連接類型 互聯(lián)矩陣(Connection Matrix),兩個(gè) Matrix 互相獨(dú)立,互不干擾,觸發(fā)源僅能連接到觸發(fā)目標(biāo)上,而連接源僅能和連接目標(biāo)相連。 ? 這里 CLU 是一個(gè) 4 輸入 1 輸出的組合邏輯單元,后文會(huì)有更具體的介紹,這里先跳過。 ?用戶可將任意觸發(fā)源連接到任意觸發(fā)目標(biāo)上,或者通過 CLU 將任意 4 個(gè)觸發(fā)源進(jìn)行 OR-OR 邏輯組合后連接到任意觸發(fā)目標(biāo)上。這里的配置都是軟件編程的,即用戶可以根據(jù)其應(yīng)用場景的需要進(jìn)行任意配置。 ? 觸發(fā)和連接的區(qū)別是,觸發(fā)信號(hào)需要 MindSwitch 做同步處理,且觸發(fā)信號(hào)僅支持 OR-OR 邏輯操作。 ? 下表整理了 MM32F5270 中的所有源和目標(biāo)的數(shù)量和類別,具體列表可參考芯片的用戶手冊(cè)。 ?
?
組合邏輯單元 CLU
上文已經(jīng)提到過 MindSwitch 中內(nèi)置了 4 個(gè) CLU 單元 (CLU0~CLU3),CLU 的全稱是 Combinational Logic Unit,即組合邏輯單元。顧名思義,即實(shí)現(xiàn)與、或、非等組合邏輯運(yùn)算的單元。 ? 每個(gè) CLU 都是一個(gè) 4 輸入 1 輸出的單元。4 個(gè)輸入命名為 CLUxIN0~CLUxIN3,這里將 CLUxIN0 和 CLUxIN1,CLUxIN2 和 CLUxIN3 兩兩組合(第一級(jí)組合),再將組合后的信號(hào)進(jìn)行組合(第二級(jí)組合),得到 CLUx 的輸出。CLU 的運(yùn)算類型根據(jù)兩級(jí)組合的不同進(jìn)行區(qū)分,可以分為: ?
OR-OR
AND-OR
OR-XOR
AND-AND
以 AND-OR 為例,即CLUxIN0 和 CLUxIN1 做邏輯與(AND)運(yùn)算,CLUxIN2 和 CLUxIN3 做邏輯與運(yùn)算,兩者的結(jié)果再進(jìn)行邏輯或(OR)運(yùn)算,其邏輯表達(dá)式如下: ?CLUxOUT = (CLUxIN0 & CLUxIN1) | (CLUxIN2 & CLUxIN3)? 具體四種模式的電路圖如下圖所示。 ? 對(duì)于 Connection Matrix,每個(gè) CLU 都可以通過 CLUMODE 寄存器來配置成上述任意模式;對(duì)于 Trigger Matrix,僅支持 OR-OR 操作。 ? 對(duì)于很多應(yīng)用場景,用戶可能僅需要 2 個(gè)或 3 個(gè)信號(hào)的邏輯組合,此時(shí),用戶只需要將空閑的一路或多路 CLUxINx 選擇為固定電平即可。同時(shí)注意到,任意 CLU 輸入都可以選擇邏輯取反操作,這大大增加了 CLU 的靈活性。 ?
實(shí)例說明
經(jīng)過上述介紹,讀者可能還是無法直接感受到 MindSwitch 和 CLU 的強(qiáng)大。這里,以幾個(gè)典型用例來進(jìn)一步說明。 ?
單電阻 FOC 中的 ADC 采樣控制
在單電阻 FoC 控制中,需要在一個(gè) PWM 周期內(nèi)依次采集兩相電流、母線電壓和環(huán)境溫度等信息。因此,需要在一個(gè) PWM 周期內(nèi)觸發(fā)多次 ADC 的采樣,這里以 3 次為例說明。 ? 還是以 MM32F3270 為例,參考上文中 MM32F3270 的 ADC 觸發(fā)源配置表,可知 MM32F3270 的多路觸發(fā)源僅支持 TIM1 或者 TIM8 ?的 CC4 或 CC5 觸發(fā),因此其驅(qū)動(dòng)電機(jī)的時(shí)候的資源分配是這樣的: ?
通過 TIM1 的通道 1、2、3 來做為三相電機(jī)的驅(qū)動(dòng),而通道 CC4 和 CC5 用于觸發(fā) ADC 的采樣。
可以看出,這樣的操作有兩個(gè)弊端: ?
1 個(gè) PWM 周期僅能觸發(fā)兩次 ADC 采樣,如果想要實(shí)現(xiàn)更多的采樣,則需要采用更復(fù)雜的軟件手段
假如使用其它定時(shí)器(TIM2/3/4/5)去做觸發(fā),則僅支持最多一次采樣
而MM32F5270 采用 MindSwitch 可實(shí)現(xiàn)單 PWM 周期內(nèi)任意時(shí)刻的 4 次 ADC 觸發(fā)。? 還是以上述應(yīng)用場景為例,依然用 TIM1 的通道1、2、3 來驅(qū)動(dòng)電機(jī),但 ADC 觸發(fā)部分可以有以下兩種優(yōu)化方法: ?方法1? 用 TIM1 的通道 4、5 觸發(fā)(CC4/CC5)加上 TIM1 的 TRGO 信號(hào)做觸發(fā)源,這三個(gè)信號(hào)通過 OR-OR 邏輯組合,再送到 ADC 做觸發(fā)??蓪?shí)現(xiàn)每個(gè) PWM 周期觸發(fā) 3 次 ADC 采樣。 ?方法2? 用 TIM3(或其它通用 4 通道定時(shí)器)的通道 1、2、3 (CC1/CC2/CC3)來做觸發(fā),這三個(gè)信號(hào)通過 OR-OR 邏輯組合,再送到 ADC 做觸發(fā)。可實(shí)現(xiàn)每個(gè) PWM 周期觸發(fā) 3 次 ADC 采樣。 ?
注:方法2 需要確保 TIM1 和 TIM3 是嚴(yán)格同步的。
方法 1 的優(yōu)點(diǎn)是僅通過 TIM1 搞定一路電機(jī)的驅(qū)動(dòng)和采樣。但如果定時(shí)器資源還有富余,則可以采用方法2。如果將 TIM3 的 CC4 或者 TRGO 信號(hào)也利用起來,則方法 2 能輕松實(shí)現(xiàn)每個(gè) PWM 周期觸發(fā) 4 次 ADC 采樣。 ? 方法1 的內(nèi)部連接示意如下: ?
? 方法2 的內(nèi)部連接示意如下: ?
? 方法1 的整個(gè)步驟和定時(shí)器計(jì)數(shù)和觸發(fā)波形如下圖所示。讀者可以試著自己推導(dǎo) 方法 2 的定時(shí)器波形和 CLU 邏輯表達(dá)式。 ?
在 Sensorless BLDC 電機(jī)控制中,往往通過檢測反電動(dòng)勢來判斷電機(jī)當(dāng)前所處的位置,而其中的關(guān)鍵在于對(duì)反電動(dòng)勢過零點(diǎn)的判斷。這里,一種比較快速的方法是通過芯片內(nèi)置的高速比較器來判斷。 ? MM32F5270 中就包含了 3 路高速模擬比較器(COMP),可分別檢測三相反電動(dòng)勢的過零點(diǎn)。 ? 但真實(shí)情況下,MOS 管在導(dǎo)通和關(guān)斷的瞬間會(huì)在反電動(dòng)勢上產(chǎn)生較大的毛刺,如下圖所示。這個(gè)毛刺會(huì)導(dǎo)致比較器誤判,因此,需要通過某種方法讓比較器在 PWM 開關(guān)瞬間不工作。 ? 傳統(tǒng)的方法往往需要通過復(fù)雜的軟件干預(yù),如通過中斷去定期使能和關(guān)閉比較器等。但這種方法會(huì)額外占用 CPU 帶寬,特別是對(duì)轉(zhuǎn)速要求較高的場景有較大限制。 ?
?而MM32F5270 通過 MindSwitch 和比較器的窗口功能可實(shí)現(xiàn)全硬件過零檢測。? 首先,MM32F5270 在模擬比較器中新增了窗口使能控制,僅在窗口信號(hào)有效時(shí),比較器的輸出結(jié)果才有效。 ? 同時(shí),可以采用某個(gè)定時(shí)器的輸出通過 MindSwitch 連接到比較器的窗口信號(hào)上。 ? 如果僅采用單個(gè) TIM 通道輸出,則不需要 CLU 的參與;如果需要多路信號(hào)邏輯組合后來產(chǎn)生一個(gè)更復(fù)雜的窗口信號(hào),則可加入 CLU 運(yùn)算。 ?
? 整個(gè)步驟和定時(shí)器計(jì)數(shù)和觸發(fā)波形如下圖所示: ?
替代外部邏輯器件
在很多應(yīng)用中,用戶可能需要對(duì)某些信號(hào)進(jìn)行邏輯組合,常見的邏輯運(yùn)算包括與運(yùn)算、或運(yùn)算、非運(yùn)算(取反)等基礎(chǔ)單元以及更復(fù)雜真值表的組合邏輯運(yùn)算。一般情況下,用戶需要額外購買邏輯芯片(如 74 系列)來實(shí)現(xiàn)上述功能。 ?MM32F5270 通過 CLU 可以覆蓋簡單的邏輯芯片,從而幫助用戶節(jié)省 BOM 成本。? 這里,用戶可以把需要進(jìn)行邏輯組合的信號(hào)從 GPIO 輸入,進(jìn)入 CLU 進(jìn)行邏輯組合,并將 CLU輸出通過 GPIO交回給板級(jí)電路。此時(shí)的 MindSwitch 內(nèi)部連接如下圖所示: ?
更靈活的 PCB 布線
在實(shí)際應(yīng)用中,用戶可能會(huì)遇到下面這種情況: ? 在芯片的引腳分布上,某個(gè)引腳的腳位和其相關(guān)外圍電路的距離較遠(yuǎn),從而導(dǎo)致無法通過單層布通。此時(shí),如果功能引腳的腳位是可調(diào)的,就能很好的解決這個(gè)問題。 ?MM32F5270 也將這個(gè)功能集成到了 MindSwitch 中,可通過 MindSwitch 實(shí)現(xiàn)靈活的 PCB 布局布線。? 如下圖所示。假設(shè) TIMER 輸出的引腳是分布在芯片的左上角(橘黃色高亮),而其對(duì)應(yīng)的外圍電路位于 PCB 的右下角(藍(lán)色方框)??梢钥吹?,如果沒有 MindSwitch,TIMER 輸出需要很長的路徑才能繞線到 PCB 右側(cè)的外圍器件上(如圖中黃色路徑)。這個(gè)路徑是比較長的,且當(dāng)布線層數(shù)較少時(shí),可能無法成功布通,此時(shí)用戶需要調(diào)整其原有的布局,PCB 布線的難度提高。 ? 而通過 MindSwitch,用戶可以將 TIMER 的輸出連接到 MindSwitch 輸入,并通過 MindSwitch 將其連接到芯片右下角的 GPIO 上 (橘黃色高亮),再以較短的路徑連接到外圍器件。通過 MindSwitch 給用戶的布局布線提供了更高的靈活度。 ?
? 除了上述提到的 4 種典型應(yīng)用場景,MindSwitch 和 CLU 還可以用于支持以下場景: ? 方便用戶調(diào)試 – 用戶可以將內(nèi)部信號(hào)通過 MindSwitch 引出到片外通過示波器等觀測。 ? 靈活的波形組合 – 在一些復(fù)雜的應(yīng)用中,需要用到非常規(guī)的控制波形,這樣的波形可以通過多個(gè)定時(shí)器的輸出波形進(jìn)行邏輯組合產(chǎn)生。 ?需要強(qiáng)調(diào)的是,MindSwitch 和 CLU 的最大優(yōu)勢就是可以任意編程、任意重組。?筆者相信,我們的用戶一定還可以將它們擴(kuò)展到更多、更有趣的應(yīng)用場景,讓我們拭目以待吧。
小結(jié) & NEXT
本文介紹了MM32F5270 中引入的全新外設(shè)間互聯(lián)矩陣 MindSwitch 和組合邏輯單元 CLU 的功能和原理,并通過一些實(shí)例說明了 MindSwitch 和 CLU 對(duì)應(yīng)用所帶來的幫助。 ? 未完待續(xù)!本文是 MM32F5 漫談系列的第三篇,后續(xù)將為大家持續(xù)更新,旨在分享 MM32F5 系列中所包含的那些有趣的技術(shù),敬請(qǐng)期待! ?關(guān)于靈動(dòng)? 靈動(dòng)成立于 2011 年,是中國本土領(lǐng)先的通用 32 位 MCU 產(chǎn)品及解決方案供應(yīng)商。公司基于 Arm Cortex-M 系列內(nèi)核開發(fā)的 MM32 MCU 產(chǎn)品擁有 F/L/SPIN/W 四大系列,目前已量產(chǎn) 200?多款型號(hào),累計(jì)出貨數(shù)億顆,每年都有近億臺(tái)配備了靈動(dòng) MM32MCU 的優(yōu)秀產(chǎn)品交付到客戶手中,在本土通用 32 位 MCU 公司中位居前列。 ?
? 靈動(dòng)客戶涵蓋智能工業(yè)、汽車電子、通信基建、醫(yī)療健康、智慧家電、物聯(lián)網(wǎng)、個(gè)人設(shè)備、手機(jī)和電腦等應(yīng)用領(lǐng)域。靈動(dòng)微電子是中國為數(shù)不多的同時(shí)獲得了 Arm-KEIL、IAR、SEGGER 官方支持的本土 MCU 公司,并建立了獨(dú)立、完整的通用 MCU 生態(tài)體系,可以為客戶提供從硬件芯片到軟件算法、從參考方案到系統(tǒng)設(shè)計(jì)的全方位支持。 ? ?
?
審核編輯 :李倩
?
評(píng)論