RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文詳解ATMEGA128熔絲位配置

電子工程師 ? 作者:工程師陳翠 ? 2018-06-17 09:12 ? 次閱讀

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ū)懭搿T谶M(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ì)介紹熔絲位的配置以及在配置過程中常出現(xiàn)的一些問題,并給出相應(yīng)的解決辦法,成功地解決了因熔絲位配置不當(dāng)而引起的單片機(jī)不能正常工作和死鎖等一系列問題。

1 熔絲位的配置

ATmega128的熔絲位共有3個(gè)字節(jié): 熔絲位擴(kuò)展字節(jié)、熔絲位高字節(jié)和熔絲位低字節(jié)。表1、表2和表3分別描述了所有熔絲位的功能、默認(rèn)值以及它們是如何映射到熔絲位字節(jié)的。如果熔絲位被編程,則返回值為0。表中0代表編程,1代表未編程。

表1 熔絲位擴(kuò)展字節(jié)

一文詳解ATMEGA128熔絲位配置

表2 熔絲位高字節(jié)

一文詳解ATMEGA128熔絲位配置

表3 熔絲位低字節(jié)

一文詳解ATMEGA128熔絲位配置

2 熔絲位配置常見問題

(1) ATmega128部分引腳功能不可用

這是一個(gè)典型的ATmega103兼容模式熔絲位沒有正確配置的問題。ATmega128與ATmega103的引腳百分百兼容,而且通過編程熔絲位M103C,使ATmega128和ATmega103從RAM、I/O引腳和中斷向量角度完全兼容,在使用上完全取代ATmega103。但在兼容模式下ATmega128的一些新特點(diǎn)無法使用:① 只剩下一個(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)無法使用,直接導(dǎo)致ATmega128部分引腳功能不可用。

(2) ATmega128啟動(dòng)后停止在Boot Loader區(qū)

這是一個(gè)復(fù)位向量熔絲位和Boot區(qū)大小選擇熔絲位沒有正確配置的問題。ATmega128具有128 KB的系統(tǒng)內(nèi)可編程Flash。它由兩個(gè)區(qū)構(gòu)成,即應(yīng)用區(qū)和Boot Loader區(qū);兩個(gè)區(qū)的大小可通過BOOTSZ熔絲位配置。在默認(rèn)配置下,應(yīng)用區(qū)區(qū)間為0000H~EFFFH;Boot Loader區(qū)區(qū)間為F000H~FFFFH。

(3) USART不能或不能正確收發(fā)數(shù)據(jù)

這是一個(gè)較難解決的問題,可分兩步來排除錯(cuò)誤。首先檢查USART的工作模式、數(shù)據(jù)幀和波特率等設(shè)置是否正確;然后根據(jù)表4中波特率的計(jì)算公式計(jì)算 BAUD值和UBRR值。如果計(jì)算出的BAUD值與設(shè)置的波特率值相差很遠(yuǎn),則說明晶振沒有正常工作或晶振頻率選擇得不對(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ì)算公式

一文詳解ATMEGA128熔絲位配置

(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)這一問題主要是由于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ī)死鎖的安全隱患。

一文詳解ATMEGA128熔絲位配置

圖1 ATmega128的JTAG接口電路

ATmega128死鎖的預(yù)防原理: ATmega128程序的下載方式有JTAG下載和AVRISP下載兩種,通過這兩種方式都可以進(jìn)行熔絲位的配置。如果只使用JTAG接口,則當(dāng)熔絲位 JTAGEN使能端配置為禁止時(shí),不能再通過JTAG接口恢復(fù)。理論上,如果只使用AVRISP接口,則當(dāng)熔絲位SPIEN使能端禁止后也不能再通過 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í)仍可通過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接口相連;通過雙龍公司的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接口相連;通過雙龍公司的SLAVRISP軟件進(jìn)行相應(yīng)的熔絲位配置,就能重新使能JTAGEN使能端,從而達(dá)到單片機(jī)死鎖后解救的目的。

一文詳解ATMEGA128熔絲位配置

4 結(jié)論

熔絲位的正確配置是學(xué)習(xí)和使用AVR單片機(jī)的第一步。熔絲位配置不當(dāng),可能出現(xiàn)單片機(jī)不能正常工作和死鎖等一系列問題。本文列舉了熔絲位在配置過程中常出現(xiàn)的一些典型問題,并給出了相應(yīng)的解決辦法,尤其詳細(xì)介紹了一種ATmega128死鎖的預(yù)防和解救辦法。這些典型問題和解決辦法有助于正確地理解與配置AVR單片機(jī)的熔絲位,對(duì)初學(xué)者起到參考作用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ATmega128
    +關(guān)注

    關(guān)注

    3

    文章

    76

    瀏覽量

    26608
  • 熔絲
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    11302
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ATMEGA128ATMEGA128A 區(qū)別??

    什么的....升級(jí)主要表現(xiàn)在哪些地方???我開始用的是ATMEGA128開發(fā)板,后來自己畫了塊板子,用的是ATMEGA128A,在使用的時(shí)候應(yīng)該注意點(diǎn)什么???請(qǐng)各位各抒己見,謝謝!
    發(fā)表于 12-25 22:04

    Atmega128串口詳解

    Atmega128串口詳解
    發(fā)表于 08-19 10:07

    ATMEGA640設(shè)定

    ATMEGA640設(shè)定CKSEL設(shè)定為0011時(shí)(內(nèi)部rc 128KHZ)時(shí),芯片被鎖,無法使用,這現(xiàn)象很奇怪,希望高手能解答
    發(fā)表于 07-10 09:34

    如何對(duì)AVR進(jìn)行配置

    對(duì)AVR配置是比較細(xì)致的工作,用戶往往忽視其重要性,或感到不易掌握。下面給出對(duì)AVR
    發(fā)表于 07-13 07:24

    對(duì)AVR配置操作時(shí)有哪些注意要點(diǎn)和事項(xiàng)?

    對(duì)AVR配置操作時(shí)有哪些注意要點(diǎn)和事項(xiàng)?ATmega128
    發(fā)表于 09-26 06:54

    怎樣去設(shè)置AVR單片機(jī)

    AVR單片機(jī)設(shè)置可以控制avr單片機(jī)的
    發(fā)表于 11-23 09:01

    atmega128資料pdf

    ATmega128為基于AVR RISC結(jié)構(gòu)的8低功耗CMOS微處理器。由于其先進(jìn)的指令集以及單周期指令執(zhí)行時(shí)間, ATmega128 的數(shù)據(jù)吞吐率高達(dá)1 MIPS/MHz,從而可以緩減系統(tǒng)在功耗和處理速度
    發(fā)表于 04-07 15:04 ?2021次下載

    atmega128 pdf

    ATmega128為基于AVR RISC結(jié)構(gòu)的8低功耗CMOS微處理器。由于其先進(jìn)的指令集以及單周期指令執(zhí)行時(shí)間, ATmega128 的數(shù)據(jù)吞吐率高達(dá)1 MIPS/MHz,從而可以緩減系統(tǒng)在功耗和處理速度之
    發(fā)表于 04-08 10:47 ?9次下載

    ATMEGA8的說明

    ATMEGA8的說明,感興趣的小伙伴可以瞧瞧。
    發(fā)表于 11-03 15:15 ?0次下載

    ATmega128手冊(cè)

    ATmega128手冊(cè)是官方網(wǎng)站發(fā)布的,很詳細(xì)
    發(fā)表于 12-12 21:36 ?84次下載

    ATmega128單片機(jī)的資料匯總

    在 AVR的器件手冊(cè)中,使用已編程( Programmed )和未編程( Unprogrammed )定義的狀態(tài)。 “Unprogrammed”表示絲狀態(tài)為“ 1”(禁止);“
    發(fā)表于 06-30 08:00 ?9次下載
    <b class='flag-5'>ATmega128</b>單片機(jī)<b class='flag-5'>熔</b><b class='flag-5'>絲</b><b class='flag-5'>位</b>的資料匯總

    AVR單片機(jī)設(shè)置

    AVR單片機(jī)設(shè)置 可以控制avr單片機(jī)的
    發(fā)表于 11-14 20:21 ?12次下載
    AVR單片機(jī)<b class='flag-5'>熔</b><b class='flag-5'>絲</b><b class='flag-5'>位</b>設(shè)置

    ATmega128單片機(jī)](修改后無法燒錄程序情況)

    @ATmega128單片機(jī),AVR,ATmega128單片機(jī)](修改后無法燒錄程序情況)本人是AVR單片機(jī)小白,前段時(shí)間開始學(xué)習(xí)AVR單片機(jī),由于腦殘更改了AVR單片機(jī)的
    發(fā)表于 11-15 09:36 ?26次下載
    <b class='flag-5'>ATmega128</b>單片機(jī)](<b class='flag-5'>熔</b><b class='flag-5'>絲</b>修改后無法燒錄程序情況)

    Atmega128 AVR Studio(Fuse)設(shè)置

    Atmega128 AVR Studio(Fuse)設(shè)置
    發(fā)表于 11-15 16:21 ?38次下載
    <b class='flag-5'>Atmega128</b>  AVR Studio<b class='flag-5'>熔</b><b class='flag-5'>絲</b><b class='flag-5'>位</b>(Fuse)設(shè)置

    8微處理器atmega128數(shù)據(jù)手冊(cè)

    8微處理器atmega128數(shù)據(jù)手冊(cè)免費(fèi)下載。
    發(fā)表于 04-28 17:36 ?13次下載
    RM新时代网站-首页