摘要:處理特定任務的單片機可減輕主單片機或微處理器的任務和工作負荷,從而有助于簡化各種應用的設計流程。
如今,,運行實時操作系統(tǒng)(RTOS)的大型32位單片機(MCU)和微處理器(MPU)日益普及,。不過,,如果使用一個大型單片機處理復雜的應用,,可能會在執(zhí)行小型后臺處理任務時遇到CPU資源方面的問題,,這些任務雖然并不復雜,但十分耗時,。8位和16位MCU等小型器件可用于減輕32位器件的工作負荷,。
試想一下這樣一個示例:將一個32位MCU用于控制汽車的非安全功能,如娛樂系統(tǒng),、環(huán)境照明和空調。此32位器件必須對其資源進行分配,,以便處理與這些功能相關的所有任務,。這樣的任務還包括測量駕駛室內多個點的溫度、打開/關閉空調系統(tǒng),、更新圖形顯示、處理用戶輸入,、調整照明條件和播放音樂,。即使對于大型32位器件,這些工作量也過于繁重,。
但是,如果32位器件將部分任務負荷轉移給幾乎不需要監(jiān)控的子處理器,,每個子處理器僅負責處理其中的1或2個任務,,那么這些任務會更易于管理,。這可以釋放主處理器上的CPU資源,從而降低軟件的復雜性,,同時提高性能并縮短執(zhí)行時間。
這種解決方案與單片機中的外設有異曲同工之妙,。外設是專用硬件的小型模塊,可以添加新功能(例如運算放大器或模數(shù)轉換器),,也可以減少執(zhí)行給定功能時CPU必須承擔的工作量,。在某些情況下,初始化后,,外設可獨立于CPU運行,。
為了說明外設的優(yōu)勢,,我們以產生脈寬調制(PWM)信號為例,。要在沒有專用外設的情況下產生PWM,,只需將I/O線設為高電平,等待一定數(shù)量的周期后,,將其設為低電平,,再等待一段時間,,然后重復操作。這會占用大量CPU周期,,并且對于某些功能(如RTOS)來說,難以可靠地執(zhí)行,。相比之下,PWM外設允許CPU在執(zhí)行其他任務的同時設置所需的波形參數(shù),。
本文中介紹的第一個示例說明了減輕CPU密集型任務負荷的優(yōu)勢,。在該案例中,,使用了一個8位MCU來創(chuàng)建I/O擴展器,。I/O擴展器并不復雜,;然而,,由于需要頻繁處理中斷,,因此它們會占用大量的CPU時間,。通過使用專用MCU來完成這項任務,,大型32位器件可以減少I/O使用和需要處理的中斷次數(shù),。此外,,I/O擴展器的功能集可在軟件中設置,因此支持針對應用進行定制和調整,。
本文中的第二個示例以創(chuàng)建獨立于CPU運行的電壓頻率(V/F)轉換器為例,,展示了獨立于內核的外設的性能,。在這個示例中,,CPU的唯一功能是初始化外設并將調試打印消息發(fā)送到UART,。在大型系統(tǒng)中,,當V/F在后臺運行時,CPU可以執(zhí)行另一個簡單的任務,。
I/O擴展器
使用8位MCU創(chuàng)建I/O擴展器的最大好處是提高靈活性,。I/O擴展器ASIC的功能集已嵌入到器件中,,而MCU可基于其執(zhí)行的軟件定義其行為,。這種靈活性使基于MCU的版本能夠滿足最終應用的需求,。
實現(xiàn)高級I/O擴展器
在器件內部,,高級I/O擴展器在基于查找表的結構上運行。在讀取或寫入之前,,會發(fā)送一個虛擬地址。該地址與單片機上的寄存器無關——僅特定于查找表,。這意味著,,可以透明地添加不在單片機硬件寄存器中的功能,。此外,還可以針對特定用途,,輕松地重新排列表格中的條目,。這種結構的另一個優(yōu)勢是,,能夠向查找表添加權限。例如,,要創(chuàng)建一個只讀寄存器,只需省略查找表的寫條目即可,。
高級I/O擴展器的查找表
這種較為復雜的結構也適用于非標準功能?!癕EM OP”功能允許MCU將其當前的通用輸入和輸出(GPIO)配置保存或加載到存儲器中。
器件中的存儲器存儲
MEM OP也可以將GPIO配置重置為編譯時設置的參數(shù),。
注:并非所有字段均可用于所有操作
MEM OP的功能
此外,,也可以選擇將單片機設置為在上電時加載保存的設置,。如果已使能,,單片機會嘗試加載配置0中的設置,。如果配置執(zhí)行校驗和驗證失敗,,則MCU將恢復為編譯時常數(shù),。如果不需要,,可以在軟件中禁用此功能,。
該解決方案的要點
基于MCU的解決方案的優(yōu)勢在于出色的靈活性。與市場上的ASIC不同,,我們可以為MCU配置特定于應用場景的非標準功能,。此應用程序針對通用PIC16F15244系列MCU開發(fā),。
如需深入了解該實現(xiàn)或想要試用該示例,請參見源資源庫中的README文件,。此外,,還提供帶有Arduino的高級I/O擴展器的演示。
電壓頻率(V/F)轉換器
通過降低物料清單(BOM)成本,,進而減小設計面積,,電壓頻率轉換器可改進傳統(tǒng)的模擬解決方案。市場上的許多V/F轉換器需要配備外部電阻和電容才能運行,,而單片機只需使用通用去耦和上拉組件(所有MCU的必備組件)即可運行,。
TC9400/TC9401/TC9402 10 Hz至100 kHz V/F轉換器的應用原理圖
MCU不使用模擬技術進行數(shù)字化,,而是使用獨立于內核的外設和功能的組合。MCU使用內部帶計算功能的模數(shù)轉換器(ADCC)測量輸入信號,,然后對時鐘信號進行分頻,,以創(chuàng)建可變頻率輸出。在該示例中,,外設已設置為在初始化后獨立于CPU運行,。這意味著,CPU可以用于最終應用中的其他任務,。
對于基于MCU的方案,,其挑戰(zhàn)在于性能不如模擬解決方案。輸出的分辨率本身受到ADCC的限制,。表面上看,,ADCC為12位,但它會以配置為過采樣的14位分辨率運行,,具體取決于程序的配置方式,。同樣,用于合成輸出頻率的片內數(shù)控振蕩器(NCO)具有有限的分辨率,,并且其輸出中可能存在抖動,,具體取決于ADC測得的值。
基于MCU的解決方案可以分為三個不同的外設模塊——模擬采樣模塊,、輸出振蕩器模塊和占空比發(fā)生器,。
解決方案框圖
模擬采樣模塊
模擬采樣模塊實現(xiàn)
模擬采樣模塊負責執(zhí)行模數(shù)轉換。為了在器件的頻率限制下實現(xiàn)100 kHz的輸出,,已將ADCC配置為過采樣,,然后通過平均值處理獲得14位結果。
這種過采樣配置有一個缺點,,即向結果中增加額外的統(tǒng)計噪聲,,可采取計算過采樣的平均值并增加滯后的方法來補償噪聲,。要實現(xiàn)滯后,可使用ADCC的閾值中斷功能,。(為簡單起見,,將僅介紹有關此示例如何使用閾值中斷功能的細節(jié)。)
在ADCC完成過采樣的平均值計算后,,將得出的值與外設中的設定值寄存器進行比較,。如果兩者之差大于或小于設定閾值,,則觸發(fā)中斷。CPU可屏蔽此中斷且不受影響,,然而,,此中斷會觸發(fā)直接存儲器訪問(DMA),將經過平均值處理的過采樣結果復制到ADCC的設定值寄存器,,從而產生滯后,。如果未超過閾值,則不會發(fā)生DMA復制,,從而不會觸發(fā)輸出振蕩器模塊的DMA更新,。
輸出振蕩器模塊
輸出振蕩器模塊的結構
該解決方案的輸出振蕩器模塊負責以所需輸出頻率產生時鐘信號。該輸出信號在內部連接到占空比發(fā)生器,,該元件將輸出頻率減半,,但會產生50%的占空比輸出。因此,,輸出振蕩器模塊以輸出頻率的兩倍運行,。
輸出振蕩器模塊的核心是數(shù)控振蕩器(NCO)。NCO外設的工作原理是在輸入時鐘的上升沿向累加器添加增量值,,然后根據(jù)累加器溢出導出外設的輸出,。(有關NCO的完整說明,請參見數(shù)據(jù)手冊,。)
在該示例中,,已將NCO2設置為在內部創(chuàng)建所需的輸入時鐘頻率,以通過14位輸入獲得100 kHz輸出,。之所以使用14位結果,,是因為ADCC本身的12位結果不足以在沒有外部時鐘源的情況下產生100 kHz輸出。
如果改變NCO2的輸出頻率或使用備用源,,則輸出頻率將調整為不同的輸出范圍,。例如,如果NCO2的頻率降低到1.28 MHz,,則輸出最大為10 kHz,。
占空比發(fā)生器
占空比發(fā)生器框圖
該解決方案的占空比發(fā)生器模塊負責創(chuàng)建50%的占空比輸出。這是一個可選功能——可以直接使用NCO的輸出,,但這樣做會增加占空比的變化幅度,。
該生成器使用一個可配置邏輯單元(CLC)實現(xiàn)。CLC是可配置邏輯的小型模塊,,類似于現(xiàn)場可編程門陣列(FPGA)的一個單元,。CLC可用作離散邏輯門(例如AND-OR或OR-XOR),也可以配置為鎖存器或觸發(fā)器,。在該解決方案中,,CLC實現(xiàn)為帶復位功能的J-K觸發(fā)器,。J和K保持在邏輯高電平。輸出振蕩器模塊用作觸發(fā)器的時鐘,。每個輸入時鐘脈沖均會導致輸出翻轉,,從而產生50%的占空比。注意:輸出振蕩器模塊的頻率抖動將對占空比產生影響,。
Timer 6用作不穩(wěn)定的“看門狗”定時器,。如果輸出沒有產生邊沿(上升沿或下降沿),則定時器將溢出,,并將產生的時鐘脈沖發(fā)送到CLC,,這可以控制輸出頻率范圍的下限。輸出翻轉到定時器頻率的一半(輸出為6 Hz),,而不是達到直流,。
該解決方案的要點
該示例表明,要使用硬件外設創(chuàng)建獨立于內核的功能,,通常必須使用外部集成電路,。這種配置的一個最大優(yōu)勢在于,外設操作可在軟件中設置,,這樣便可輕松地根據(jù)最終應用調整示例,。由于使用了大量外設,因此選擇PIC18-Q43系列MCU來實現(xiàn)該示例,。
有關該示例的更多信息,,請參見示例資源庫中的README文檔。此外,,示例資源庫還包含頻率電壓轉換器的實現(xiàn),,可與電壓頻率轉換器在同一個器件上實現(xiàn)。
總結
盡管高性能單片機和微處理器都有一席之地,,但在執(zhí)行小型專門任務時,,8位和16位MCU的作用不容小覷。這類任務并不一定十分復雜,,但可能十分耗時,,或者是時間關鍵型任務。任務負荷減輕后,,32位器件可擁有更簡單的實現(xiàn),,從而提高可靠性,、減少存儲器占用率并降低功耗,。