嵌入式工程師分享:學習單片機必備的八大步驟
成為一名嵌入式工程師,簡單的單片機基礎學習與應用是不可缺少的。學習單片機就是學習單片機的硬件結構,內部資源與外設的應用。在C語言中(極少量的匯編)掌握各種功能的初始化,啟動與停止,實現各種功能函數的編寫與調試。
第一步:數字I/O的應用
在大多數的單片機實驗中,跑馬燈實驗正是數字I/O的典型應用,也是跑馬燈的實驗被安排第一個的原因。通過將單片機的I/O引腳位進行置位或清零來點亮或關閉LED燈,雖然簡單,但是這就是數字電路中的邏輯功能。數學I/O應用的實驗還有按鍵實驗,當按下某鍵時,某LED燈被點亮。數字I/O實驗教會我們單片機的編程思想,必須首先對單片機的相應寄存器進行配置,以初始化I/O引腳,這樣才能使該引腳具備數字輸入與輸出功能。 單片機的一個內置或外置功能的使用,就是對該功能相關的寄存器進行設置,初始化,而這便是單片機編程的特點。少則4、5個函數搞定,多則十幾行程序,要有耐心,別怕麻煩,所有的單片機都是這樣。
第二步:RS232串口通訊
單片機都有UART接口,這個簡單、古老的通訊方式可以與我們PC機的RS232接口直接連接通訊,當然,因為它們兩者電平邏輯不同,必須要使用一個RS232電平轉換芯片才能與PC機連接,例如Max232芯片。
UART接口的使用是非常重要的,通過這個接口,我們可以使單片機與PC機之間交換信息,“接口”概念的學習也便由此引入。使用UART接口也會學習到目前最為簡單與常用的通信協議等知識。我們也可以通過PC機的串口調試軟件來監視到單片機實驗板的數據,想一想,這會是一個多么神奇的事情啊~~
第三步:定時器的使用
學會定時器的使用,就可以利用單片機來實現典型的時序邏輯電路。時序邏輯電路的應用是最強大、最廣泛的。例如,在工業的控制中,我們讓某個開關每隔1秒鐘打開與關閉一次。這個方案可以通過普通的數字集成電路實現,也可以通過PLC來實現,也可以通過CPLD或FPGA來實現,但是只有單片機的實現是最簡單,成本也是最經濟的。定時器是單片機內部資源里最為重要的一個,更是邏輯與時間控制實現的基礎。
第四步:中斷
在單片機軟件設計架構中,一段程序循環執行是其一個特點,也是一個弊端。每個操作指令的執行都需要一定的執行時間,如果程序沒有執行到該指令,則該指令的動作就不會觸發,這樣就會忽略許多快速發生的事件,例如方波頻率檢測的上升沿。針對在單片機程序正常運行時能夠對外部事件立即做出響應而設計了中斷功能。當中斷功能執行時,單片機優先處理中斷程序,當中斷處理完成后,再回到單片機的正常程序執行中。中斷的機理是比較容易理解的,但是什么時候打開中斷,什么時候關閉、屏蔽中斷,需要如何配置才能使能中斷的某些功能,中斷里要執行哪些程序,這些程序的要滿足哪些要求就需要花些時間去理解與實踐了。中斷學會后,就可以編寫復雜結構功能的程序,可以一邊閃著小LED燈,一邊掃描著按鍵,一邊發送著數據,也可以干著多個事情……打個比喻,中斷功能可以使單片機吃著碗里的,看著鍋里的。根據傳說中的8020定律,如果您掌握了上面提到的這四步,那么,您已經學會了80%的內容了。
第五步:I2C、SPI通訊接口
單片機系統畢竟資源有限,而利用I2C、SPI通訊接口進行擴展外設是最常用的方法,也是非常重要的方法。這兩個通訊接口都是串行通訊接口,典型的基礎實驗就是I2C的EEPROM實驗與SPI的SD卡讀寫實驗。
第六步:比較,捕捉,PWM功能
比較,捕捉與PWM功能可以使單片機更加適合電機控制,信號檢測,實現電機速度與步長的調節。PWM波現在又是LED調光的主要手段。這里已經初步接觸了數字電路里的模擬電路部分。
第七步:A/D模數采集
單片機目前基本都自帶多通道A/D模數轉換器,通過這些A/D轉換器可以單片機獲取模擬量,用于檢測電壓、電流等信號。學習時要分清模擬地與數字地,參考電壓,采樣時間,轉換速率,轉換誤差等重要概念。這一步學會了數字電路控制模擬電路部分,而最簡單的A/D模數轉換器就是電壓表實驗。
第八步:學習USB接口、TCP/IP協議、工業總線
目前主流的通訊協議為USB協——下位機與上位機高速通訊接口;TCP/IP——萬能的互聯網使用的通訊協議;工業總線——諸如Modbus,CANOpen等工業控制各個模塊之間通訊的協議。這些都會應用在未來的項目里,集成入單片機里的固件,并且也是當前產品開發的一個發展方向。
來源: eepw.com