AVR單片機的編程方式解析

發表時間:2020-10-08 10:39:43 人氣:623

(1)串行編程(即ISP編程)

ISP是In System Program的縮寫,意思是在系統編程。目前的AVR芯片基本上都具備ISP接口,可通過ISP接口進行編程。它一共使用了兩條電源線:VCC、GND,三條信號線:SCK、MOSI、MISO,以及復位線:RESET。由于僅僅使用了幾條數據線,所以我們亦常將其稱為串行編程。值得注意的是,雖然下載器端使用的信號線名為SCK、MOSI、MISO,但AVR MCU的信號端不一定是名為SCK、MOSI、MISO。

AVR的串行編程方式有很多種,如:

(1)STK200/STK300:并口下載器多采用該燒寫方式,最早期的一種燒寫方式,支持型號少,燒寫速度低,不支持AVR Studio。

(2)STK500:ATMEL最推薦的編程方式,由于采用ATMEL官方的STK500固件,使得它可燒寫全系列AVR(若對固件進行升級亦可支持未來的AVR型號),燒寫速度非???,支持AVR Studio。

(3)AVRISP(準STK500):由于采用ATMEL官方的STK500固件,使得它可燒寫大部分AVR(若對固件進行升級亦可支持未來的AVR型號),燒寫速度非???,支持AVR Studio。

(4)AVRISPmkII:由于采用ATMEL官方的AVRISPmkII固件,使得它可燒寫大部分AVR(若對固件進行升級亦可支持未來的AVR型號),燒寫速度非???,支持AVR Studio。

(5)當然還有其它的ISP方式,但已經那些均不是最為常見的串行編程方式,在此不在作一一介紹。

(2)高壓/并行編程

AVR的高壓編程/并行編程,實際上是更早出現的編程方法,它功能強大,但需要:

1)連接較多的引腳(故稱“并行編程”)

2)使用12V電壓(故稱“高壓編程”)

聯合起來一般叫高壓/并行編程。實際上,有些編程是高壓/串行編程,如Attiny13。(Attiny13端口非常少)高壓/并行編程(理論上)能修復任何熔絲位,例如:

1)Attiny13/24/2313、Atmega8/48/88/168等AVR的RESET端口與IO端口是共用的,由于這類AVR的引腳一般較少,(如Attiny13僅有6個IO口),經常出現IO不夠用的情況,需要將RESET端口設置為IO端口使用,然而,一旦將RESET設置為IO,便無法再進行ISP編程了,更無法使用ISP恢復RESET功能,因為ISP編程需要RESET功能。然而,這種情況下,使用高壓/并行編程,可以恢復RESET功能,(注意:RESET端口與IO端口是共用的AVR,具備debugWIRE功能,“dW”熔絲位必須為啟動狀態)因為高壓/并行編程不需要RESET功能。

2)當設置錯了熔絲位導致芯片鎖死,這種情況下,使用高壓/并行編程,可恢復熔絲位。

(3)JTAG編程

JTAG燒寫方式僅適用于帶JTAG

接口的AVR,另外,JTAG對比ISP燒寫方式主要有個缺點:必須占用JTAG對應的IO端口。例如,ATMEGA16必須占用PC2-PC5這幾個端口。然而,有時候,缺點也是優點,因為對于IO夠用的AVR來說,在產品開發過程,可以用JTAG接口來仿真調試,產品量產后,產品板預留的JTAG接口還可以用來燒寫程序。

(4)IAP編程

AVR MCU的ISP功能和debugWIRE功能是互斥的,也就是說,使能了AVR MCU的 debugWIRE 功能后ISP功能就無法使用,使能了ISP功能后debugWIRE功能就無法使用。

那么,怎樣確定AVR的RESET引腳為ISP功能使用還是debugWIRE功能使用呢?

在具備debugWIRE 的AVR 器件中,有一個可編程的熔絲位DWEN,如果該熔絲被編程(且lockbits未被編程),則debugWIRE 功能被啟用,AVR的RESET 引腳將被作為debugWIRE 功能使用,可與調試器進行debugWIRE仿真通信(此時,ISP 功能被禁用)。AVR芯片出廠時,DWEN熔絲位是未編程的,也即是說ISP 功能是使能的,debugWIRE 被禁用。使用ISP 功能時,通過調試器對debugWIRE熔絲進行編程使能,可啟用debugWIRE功能;使用debugWIRE功能時,對通過調試器對debugWIRE熔絲禁止,可使能ISP 功能。


此文關鍵字: 單片機