相信大家對單片機都有非常深刻的理解, 而且有比較深入的研究。但是我認為目前很多還是侷限在某款MCU的編程,或者只是對於MCU所包含的Feature感興趣。但是實際上MCU的其他特性可能更為重要。
下面本人就個人的一些經驗和大家共享:
首先是MCU類型的選擇, 目前市場上的MCU有上百種,國內目前最常見的是ARM, 8051, AVR, PIC, MSP430,HT, EMC, Sinowealth等家的單片機,而且幾乎都支持C甚至是C++的編程。但是請大家一定要理解,MCU原名為Micro-Control Unit,因此應該更加強調的是其控制的能力。對於在控制系統中的應用,最重要的是不外乎四個方面,一是抗干擾特性,二是系統的效率,三是系統響應速度,四是系統DC/AC參數。以下對此四方面做個簡單的闡述,日後有時間的話將分別拓展深入探討。
第一是抗干擾特性。要注意的是其EMC/ EMI性能,這個指標在MCU的DataSheet中是不會體現出來的,因此用戶需要從多方面進行了解,來明確其實際可應用的環境以及所選擇的MCU是否合適。如果願意的話可以自己對MCU編寫一個簡單的程序,讓它的IO輸出程序運行狀態,然後進行實際測試。
第二是系統的執行效率。個人認為單片機系統的效率主要由以下因素決定,首先是系統架構- RISC or CISC,通常情況下RISC架構效率的應該比CISC架構要高,由於RISC架構的MCU平均是1T的執行時間,其次是RISC指令的長度是固定的;但是CISC的執行週期以及代碼長度和指令相關,同時Multi-Phase也給系統帶來的不安定因素。因此儘管RISC對於處理複雜算法可能需要大量的指令時間,但是相比較計算可發現大部分的RISC單片機的效率要遠大於CISC架構的。(可參考http://focus.ti.com/lit/an/slaa205b/slaa205b.pdf) 還有一個影響效率的因素是編譯系統,由於目前大量使用C語言,導致對編譯器的依賴非常大。編譯器的好壞會直接影響到同樣程序的效率。個人認為目前IAR是其中做的最好的一家。因此建議大家在對效率非常Care的情況下,優先選擇用ASM。如果考慮到可讀性的話,可以將ASM封裝成C語言,如此兩不誤。(可參考http://www.ednchina.com/blog/eaglef/8831/message.aspx)
第三是系統響應速度。對於控制系統,實時特性是非常重要的,如PWM輸出過流時可否即時保護MOSFET;對於外部中斷的響應速度是否及時;IO輸入輸出是否有Delay等等。因此在研究一個MCU的時候大家要非常重視的就是 1. 中斷響應速度,尤其對於那些有中斷優先級的系統要仔細研究其SPEC;2. IO輸入輸出Delay,控制生效會在指令執行後多長時間後發生。當大家在選用RTOS的時候,也面臨同樣的問題,那就是開關中斷時間;中斷響應速度;任務切換速度等。
第四是DC/AC參數。黨其他特性都差不多的時候,DC/AC參數將會決定一個MCU特性。如IO的驅動能力;內建震盪器的穩定度;工作電壓範圍;功耗等等。可能1個IO的驅動能力不足就會導致系統Fail,此種情況經常發生。因此用戶需要對自己的外圍電路以及系統整體做仔細的評估後方可知道對MCU的DC/AC參數有和需求。
文章评论(0条评论)
登录后参与讨论