淺析Arduino內部技術及合理運用開發(fā)
本文關鍵詞:Arduino技術內幕,由筆耕文化傳播整理發(fā)布。
【摘要】Arduino是由一個基于AVR單片機具開放源代碼的硬件平臺和為Arduino板編寫程序的開發(fā)環(huán)境組成。因其具有多平臺、編程環(huán)境簡單、軟硬件開源都可擴展等諸多優(yōu)點而受到許多非專業(yè)愛好者的喜愛。但在其技術內部有著許多東西可挖掘,以此方可合理運用。
【關鍵詞】Arduino;AVR;技術內部;合理運用
引言
Arduino是源于意大利基于AVR單片機具有開放源碼的硬件平臺。Arduino也具有類似Java,C語言的集成開發(fā)環(huán)境。他幫助許多愛發(fā)明創(chuàng)造的業(yè)余者和真正的開發(fā)者實現(xiàn)了自己的想法。具有獨立性和互動性的Arduino可以與PC外圍裝置連接,,也能與PC軟件進行溝通,如:Flash,Processing,Max/Msp。與其他大多數(shù)的單片機系統(tǒng)相比,Arduino還可以在Windous,Macintesh Osx和Linux操作系統(tǒng)上運行。當然有經(jīng)驗的設計師可以對硬件和軟件開源進行擴展?偟膩碚fArduino更適宜非專業(yè)愛好者使用。為了滿足這一類愛好者的求知欲,得對Arduino的內部進行深入的了解。
1.電源
要將外部電源輸送、穩(wěn)壓和過濾給Arduino則需要電源電路。電源電路分為外接電源輸入部分和USB電源輸入部分。外接電源輸入部分由二極管、穩(wěn)壓管USB輸入口組成,輸入范圍是從7V到12V。二極管的作用是當電源輸入正反極反轉時也不會燒壞器件。穩(wěn)壓管是將7V到12V的電壓穩(wěn)定為5V。在USB電源輸入電路中由保險管、電阻非常大的排阻、集成運算放大器、PMOS、線性穩(wěn)壓器組成。運行時,若電流大于500mA,保險管會自動斷開保護電路板。保險管也具有自我恢復功能,當電壓恢復到5V的電壓范圍后,保險管則自動恢復連接,為Arduino提供5V的電壓。而排阻則用來對前面的外接電源輸入進行分壓。對于運算放大器若輸出為高電平,則PMOS處于截止狀態(tài),此時切斷了USB的供電。若輸出為低電平,則PMOS處于導通狀態(tài),此時USB對Arduino供電。線性穩(wěn)壓器則是負責將5V的電源轉變?yōu)?V電源。(這里主要說的是Arduino UNO)
2.串口
要實現(xiàn)PC或其他設備與Arduino之間的通信則需要使用串口。Arduino的串口USART(即Universal Synchronous/Asynchronous Receiver/Transmitter,通用同步/異步接收器/發(fā)送器)通常與PC的Rs-232端口相連,它以預設的速率異步地在一條線上發(fā)送或接受數(shù)據(jù)。當串口在異步模式時,不需要一個分離的時鐘信號;當在同步模式時,則需要一個專用的信號表示時鐘信息。Rs-232與串口相連時,不可直接相連,Rs-232的電壓比較高,容易燒壞Arduino的電路板,需要一個Rs-232到TTL的適配器。在以往的Arduino中也有個Rs-232的串口存在。后來慢慢轉變?yōu)榱爽F(xiàn)在流行的更小的USB端口,好處在于在通信的同時能提供5V的穩(wěn)壓。USB規(guī)范允許一個已枚舉的設備(能夠正確向USB主機申報自己的設備,如Arduino I/O電路板)使用5V上最多500mA的電流,而未枚舉的可以用100mA的電流。
3.處理器
這里講的主要處理器為ATmega328,其程序儲存為32KB,其余的大多數(shù)處理器只是程序儲存不同而已。在Arduino中為了使用的方便,對其進行了二次封裝。第一次是將AVR CPU、內存陣列(有程序Flash,數(shù)據(jù)SRAM,EEPROM)、時針和外圍設備(有I/O端口,定時器/計數(shù)器,異步串行接口,同步串行接口,兩線串行接口,模數(shù)轉換)封裝為ATmega328。第二次是將ALU、一組32個通用8位寄存器、一個狀態(tài)寄存器、程序計數(shù)器、一個指令譯碼器和與內置的內存陣列及片內外圍設備的借口封裝為AVR CPU。
3.1 時鐘源
一般的Arduino電路用外部的陶瓷諧振器或石英晶體來決定其系統(tǒng)時鐘頻率。在ATmega328中有一個片內振蕩器,它有兩個模式:低功率模式消耗的功率小,但無法傳輸?shù)叫酒饷?全幅模式則消耗的功率增大。
3.2 程序儲存器
程序儲存器儲存著CPU要執(zhí)行的程序語言指令。AVR中,可編程的16位寬Flash陣列作為程序儲存器。有時它也被看做ROM,即只讀儲存器,當?shù)綦姇r也不會丟失數(shù)據(jù)。Arduino中有一小段常駐的固件,叫引導裝載程序,它與PC機通信,將編譯好的程序從PC送過來保存在AVR的程序儲存器中。因此就減少了使用芯片編譯硬件減少了成本。為了跟蹤程序執(zhí)行的位置,則需要寄存器PC。當重啟時,PC清除為0,執(zhí)行的順序則變?yōu)榱顺绦虺跏蓟a的開頭。
3.3 數(shù)據(jù)儲存器
在AVR中用的是SARM來保存程序運行中的數(shù)據(jù)。SRAM即靜態(tài)隨機存取內存;陟o態(tài)位格的數(shù)據(jù)儲存器是不需要動態(tài)時鐘信號來觸發(fā)刷新保持數(shù)據(jù)的動作,而動態(tài)RAM則需要。對于SRAM內存,只要芯片有電就保持著里面的數(shù)據(jù)。但掉電時,內存的狀態(tài)時不確定的,不要誤以為會是某個特定的值。
3.4 通用寄存器
在AVR芯片中的通用寄存器組是由編號為R0到R31的寄存器組成的。由R26和R27組成的X,R28和R29組成的Y,R30和R31組成的Z是16位指向數(shù)據(jù)存儲器的索引指針。當由復雜的指令時,可將X,Y,Z寄存器作為數(shù)據(jù)指針,加上指令內可選的偏移量,加到索引寄存器上形成有效的目的地址。
3.5 EEPROM
EEPROM(Electrically Erasable,Programmable Read-only Memory,電子可擦除只讀儲存器)。它是只讀的,也是可寫入的,還是可擦除的。EEPROM大部分和程序儲存器一樣,不同的是他可以承受多次的擦除和寫入。這樣便使得用戶可以隨意的更改數(shù)據(jù)和配置了。要尋址EEPROM則需要通過一個特殊的寄存器來訪問,還需要一個相關的I/O寄存器的一個位,則可以引起一個讀的操作,而結果要在另一個寄存器中才可以讀到。寫入的操作也是類似的:先把地址寫入EEPROM地址寄存器,再復制數(shù)據(jù)進入EEPROM數(shù)據(jù)寄存器,最后做稍微復雜的位操作。這種操作的復雜性更利于保護其數(shù)據(jù)。
4.結束語
通過對Arduino的電源、串口和處理器中的各個部分硬件的淺析,可以使得非專業(yè)的愛好者更了解它,進而設計出更滿足要求、更合理、更可靠的東西。
參考文獻
[1]蔡睿妍.Arduino的原理及應用[J].電子設計工程,2012, 20(16):155-157.
[2]楊繼志,郭敬.Arduino互動產(chǎn)品平臺創(chuàng)新[J].單片機與嵌入式系統(tǒng)應用,2012(4):39-41
[3]Massimo BanZi.愛上Arduino[M].2版.北京:人民郵電出版社,2012.
[4]Dale Wheat.Arduino技術內幕[M].北京:人民郵電出版社,2013.
本文關鍵詞:Arduino技術內幕,由筆耕文化傳播整理發(fā)布。
本文編號:360688
本文鏈接:http://www.sikaile.net/wenshubaike/mishujinen/360688.html