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