單片機的基本功能對于大多數MCU來說,以下功能是最常見和最基本的。不同單片機的描述方法可能不同,但本質是一樣的。
1. Timer : Timer的種類雖然很多,但可以分為兩大類。第一種是具有固定時間間隔的Timer,也就是說它的定時是由系統設定的,不能由用戶程序控制。系統僅提供幾種不同類型的定時器。給用戶程序一個固定的時間間隔,如32Hz、16Hz、8Hz等。由于這種定時器在4位MCU 中比較常見,可以用來實現時鐘、定時等相關功能。
另一種是可編程定時器。這種定時器的計時可以由用戶程序控制。控制方式包括時鐘源的選擇、預分頻數的選擇、預置數的設置等。大多數MCU同時具備這三種,也有的可能具備其中一種或兩種。這種Timer應用非常靈活,實際使用也是千變萬化的。最常見的應用之一是使用它來實現PWM輸出。
由于可以自由選擇時鐘源,因此此類Timer一般與Event Counter結合使用。
2. IO口:任何MCU都有一定數量的IO口。沒有IO口,MCU將失去與外界通信的通道。根據IO口的可配置情況,可分為以下幾種:
純輸入或純輸出:這種類型的IO口由MCU硬件設計決定,只能輸入或輸出,不能通過軟件實時設置。
3.直接讀寫IO口:例如MCS-51的IO口就 屬于這種IO口。執行讀IO端口命令時,為輸入端口;當執行寫 IO 端口命令時,它自動成為一個輸出端口。
程序編程設置輸入輸出方向:該類IO口的輸入或輸出由程序根據實際需要設置,應用更靈活,可實現一些總線級應用,如12C總線、各種LCD、LED Driver控制總線等。
使用IO口的時候一定要牢記這一點:對于輸入口,必須有一個清電平信號,保證不能懸空(這個可以通過加上拉或下拉電阻來實現) ; 而對于輸出端口,輸出狀態電平必須考慮到其外部連接,應保證Standby或靜態時沒有source current或sink current。
外部中斷:外部中斷是大多數MCU 的基本功能。它們通常用于實時信號生成、數據采樣和狀態檢測。上升沿、下降沿、電平觸發都是中斷方式。在大多數情況下,外部中斷是通過輸入端口處理的。如果是IO口,只有設置為輸入口時才會啟用中斷功能;如果設置為輸出端口,外部中斷功能會自動關閉(ATMEL的ATiny系列有一些例外,輸出端口也可以觸發中斷功能)。外部中斷的應用如下:
外觸發信號檢測:一種是基于實時性要求,如可控硅控制、突發信號檢測等,另一種是基于省電。
信號頻率測量:為確保不丟失信號,外部中斷是最佳選擇。
解碼數據:為了降低遙控應用領域的設計成本,經常需要使用軟件對各種編碼數據進行解碼,例如曼徹斯特編碼和PWM 編碼。
按鍵檢測和系統喚醒:為了使MCU 進入休眠狀態,必須通過外部中斷將其喚醒。最基本的形式是一個按鈕,而層次的變化是由按鈕的動作引起的。
4 、通信接口:MCU提供的通信接口一般有SPI接口、UART。I2C 接口等,描述如下:
SPI接口:這類接口是大多數MCU提供的最基本的通信方式。它的數據傳輸由一個同步時鐘控制。信號包括SDI(串行數據輸入)、SDO(串行數據輸出)、SCLK(串行時鐘)和Ready信號;在某些情況下,可能沒有 Ready 信號;這類接口可以工作在Master模式或者Slave模式,通俗的說就是看誰提供時鐘信號,提供時鐘的一方是Master,對方是Slaver。
UART:屬于最基本的異步傳輸接口。它的信號線只有兩條Rx和Tx線。基本數據格式為:Start Bit + Data Bit(7-bits/8-bits) + Parity Bit(Even, Odd or None) + Stop Bit(1~2Bit)。一位數據所占用的時間稱為波特率。
對于大多數單片機,數據位長度、數據校驗方式(奇校驗、偶校驗或無校驗)、停止位長度和波特率都可以通過程序編程靈活設置。當然。這類接口最常見的方式是與PC的串口通信。
I2C接口:I2C是飛利浦開發的數據傳輸協議。它還使用兩個信號來實現:SDAT(串行數據輸入和輸出)和SCLK(串行時鐘)。最大的好處是可以在這條總線上掛接多個設備,并且可以通過地址來識別和訪問它們;I2C總線最大的優點之一就是通過IO口使用軟件實現非常方便,其傳輸的數據速率完全由SCLK控制。為了控制,它可以快也可以慢,不像 UART 接口,它有嚴格的速率要求。
5 、看門狗:看門狗是大部分單片機的基本配置,只能讓程序復位不能關閉(有些是在程序燒錄時設置的,比如Microchip PIC 系列單片機),而有些單片機是由一個特定的方法,無論它是否打開。比如三星的KS57系列,只要程序訪問Watchdog寄存器,就會自動開啟,不能再次關閉。一般來說,看門狗的復位時間可以通過程序來設置。Watchdog最基本的應用是為MCU因意外故障而死機提供自恢復能力。 |