AVR系列單片機在仿真調試之前,首先必須對AVR的熔絲位和鎖定位進行配置。如果配置不當,則可能造成單片機不能正常工作,嚴重時可能導致單片機死鎖。因此,對單片機熔絲位和鎖定位的正確配置顯得尤為重要。
熔絲位是對單片機具體功能和工作模式的限定,其正確配置與否直接影響到單片機能否正常工作;鎖定位是對單片機的程序和數據進行加密,以防止單片機中的程序和數據被讀出或寫入。在進行配置時,一般先配置熔絲位,再配置鎖定位。鎖定位又分為引導程序區鎖定位和程序及數據存儲器鎖定位兩類。對引導程序區鎖定位進行編程可以實現兩套保護模式,即應用區保護模式和Boot Loader區保護模式;不同的編程配置可以實現不同的加密級別。對程序及數據存儲器鎖定位進行編程可以禁止對并行和SPI/JTAG串行編程模式中 Flash和EEPROM進一步編程,從而對程序和存儲器中的數據進行保護。
由于引導程序鎖定位和程序及數據存儲器鎖定位的配置具有可逆性,因此可根據不同的需要多次編程,靈活改變。但是,在配置熔絲位時應特別注意,部分熔絲位(如OCDEN、JTAGEN和SPIEN等)的配置是不可逆的。在采用單一編程下載情況下(例如只采用JTAG下載或者只采用AVRISP并行下載),一旦配置后將不可改變。鑒于熔絲位配置的重要性,本文以AVR系列的ATmega128單片機為例,詳細介紹熔絲位的配置以及在配置過程中常出現的一些問題,并給出相應的解決辦法,成功地解決了因熔絲位配置不當而引起的單片機不能正常工作和死鎖等一系列問題。
1 熔絲位的配置
ATmega128的熔絲位共有3個字節: 熔絲位擴展字節、熔絲位高字節和熔絲位低字節。表1、表2和表3分別描述了所有熔絲位的功能、默認值以及它們是如何映射到熔絲位字節的。如果熔絲位被編程,則返回值為0。表中0代表編程,1代表未編程。
表1 熔絲位擴展字節
表2 熔絲位高字節
表3 熔絲位低字節
2 熔絲位配置常見問題
(1) ATmega128部分引腳功能不可用
這是一個典型的ATmega103兼容模式熔絲位沒有正確配置的問題。ATmega128與ATmega103的引腳百分百兼容,而且通過編程熔絲位M103C,使ATmega128和ATmega103從RAM、I/O引腳和中斷向量角度完全兼容,在使用上完全取代ATmega103。但在兼容模式下ATmega128的一些新特點無法使用:① 只剩下一個USART,而且只支持異步模式,波特率只有低8位可用;② 只有1個16位定時器和2個比較器,而不是2個16位定時器和3個比較器;③ 不支持兩線接口;④ 端口C只能輸出;⑤ 端口G可能用作第二功能,而不能作為通用I/O端口;⑥ 端口F只能作為輸入,而不能作為ADC的模擬輸入引腳;⑦ 不支持引導程序功能;⑧ 不能調節片內RC振蕩器的頻率。這些新
特點無法使用,直接導致ATmega128部分引腳功能不可用。
(2) ATmega128啟動后停止在Boot Loader區
這是一個復位向量熔絲位和Boot區大小選擇熔絲位沒有正確配置的問題。ATmega128具有128 KB的系統內可編程Flash。它由兩個區構成,即應用區和Boot Loader區;兩個區的大小可通過BOOTSZ熔絲位配置。在默認配置下,應用區區間為0000H~EFFFH;Boot Loader區區間為F000H~FFFFH。
(3) USART不能或不能正確收發數據
這是一個較難解決的問題,可分兩步來排除錯誤。首先檢查USART的工作模式、數據幀和波特率等設置是否正確;然后根據表4中波特率的計算公式計算 BAUD值和UBRR值。如果計算出的BAUD值與設置的波特率值相差很遠,則說明晶振沒有正常工作或晶振頻率選擇得不對,這時應對晶振的熔絲位進行正確配置。在默認狀態下,ATmega128工作于內部提供的晶振1 MHz下。若要使ATmega128工作于外部晶振下,應對相應的熔絲位進行配置。
表4 波特率計算公式
(4) ATmega128的PF口不能正常工作
ATmega128的PF口是普通I/O口、數模轉換口和JTAG接口的分時復用口。PF口用作JTAG接口后,不能再用作普通I/O口;若想作普通I/O使用,則須對熔絲位進行編程禁止JTAGEN使能端。
(5) JTAG仿真器不能連接到目標板
出現這一問題主要是由于JTAGEN使能端熔絲位被編程為禁止。如果使用JTAG仿真器進行程序編程下載,則此時JTAGEN使能端的熔絲位不可恢復。
3 ATmega128死鎖的預防和解救措施
ATmega128的JTAG接口支持片內調試和程序下載,還能實現對Flash、EEPROM、熔絲位和鎖定位的編程,其接口電路如圖1所示。雖然JTAG接口使用非常方便,但是存在因熔絲位JTAGEN使能端配置不當而造成單片機死鎖的安全隱患。
圖1 ATmega128的JTAG接口電路
ATmega128死鎖的預防原理: ATmega128程序的下載方式有JTAG下載和AVRISP下載兩種,通過這兩種方式都可以進行熔絲位的配置。如果只使用JTAG接口,則當熔絲位 JTAGEN使能端配置為禁止時,不能再通過JTAG接口恢復。理論上,如果只使用AVRISP接口,則當熔絲位SPIEN使能端禁止后也不能再通過 AVRISP接口恢復。但這種情況一般不會出現,因為芯片在出廠時已默認為SPI編程使能,且不可再對其進行配置。因此當使用JTAG接口時應預設 AVRISP接口,以便當JTAGEN使能端被禁止時仍可通過AVRISP接口恢復,從而達到預防單片機死鎖的目的。
ATmega128死鎖后解救措施: 首先制作一條AVRISP并行下載線,電路如圖2所示。對于ATmega128和ATmega64,圖中MOSI和MISO分別用引腳 PE0(PDI/RXD)和PE1(PDO/TXD)替代。把并行口連接到計算機,10針接口與目標板上單片機預留的AVRISP接口相連;通過雙龍公司的SLAVRISP軟件進行相應的熔絲位配置,就能重新使能JTAGEN使能端,從而達到單片機死鎖后解救的目的。
ATmega128死鎖后解救措施: 首先制作一條AVRISP并行下載線,電路如圖2所示。對于ATmega128和ATmega64,圖中MOSI和MISO分別用引腳 PE0(PDI/RXD)和PE1(PDO/TXD)替代。把并行口連接到計算機,10針接口與目標板上單片機預留的AVRISP接口相連;通過雙龍公司的SLAVRISP軟件進行相應的熔絲位配置,就能重新使能JTAGEN使能端,從而達到單片機死鎖后解救的目的。
4 結論
熔絲位的正確配置是學習和使用AVR單片機的第一步。熔絲位配置不當,可能出現單片機不能正常工作和死鎖等一系列問題。本文列舉了熔絲位在配置過程中常出現的一些典型問題,并給出了相應的解決辦法,尤其詳細介紹了一種ATmega128死鎖的預防和解救辦法。這些典型問題和解決辦法有助于正確地理解與配置AVR單片機的熔絲位,對初學者起到參考作用。
-
ATmega128
+關注
關注
3文章
76瀏覽量
27002 -
熔絲
+關注
關注
0文章
31瀏覽量
11622
發布評論請先 登錄
ATMEGA128和ATMEGA128A 區別??
atmega128中文資料pdf
atmega128 pdf
ATmega128單片機熔絲位的資料匯總

ATmega128單片機](熔絲修改后無法燒錄程序情況)
](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論