购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.6.1 正确配置AVR的熔丝位

对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性或感到不易掌握。下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。

① 在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是配置熔丝位成为未编程状态“1”或成为已编程状态“0”。

② 熔丝位状态显示框,显示芯片的各个熔丝位的详细状况,AVR的熔丝位打“√”表示“0”,表示启用该选项;取消表示“1”,表示不启用该选项。

③ 新的AVR芯片在使用前,应首先查看它熔丝位的配置情况,再根据实际需要,进行熔丝位的配置,并将各个熔丝位的状态记录备案。

④ AVR芯片加密以后,只是不能读取芯片内部Flash和EEPROM中的数据,熔丝位的状态仍然可以读取,但不能修改配置。芯片擦除命令是将Flash和EEPROM中的数据清除,并同时将两位锁定位状态配置成“11”,处于无锁定状态。但芯片擦除命令并不改变其他熔丝位的状态。

⑤ 正确的操作程序:在芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的锁定位。芯片被锁定后,如果发现熔丝位配置不对,必须使用芯片擦除命令,清除芯片中的数据,并解除锁定。然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的锁定位。

⑥ 使用ISP串行方式下载编程时,应配置SPIEN熔丝位为“0”(前面有“√”)。芯片出厂时SPIEN位的状态默认为“0”,表示允许ISP串行方式下载数据。只有该位处于编程状态“0”,才可以通过AVR的SPI口进行ISP下载,如果该位被配置为未编程“1”后,ISP串行方式下载数据立即被禁止,此时只能通过并行方式或JTAG编程方式才能将SPIEN的状态重新设置为“0”,开放ISP。通常情况下,应保持SPIEN的状态为“0”,允许ISP编程不会影响其引脚的I/O功能。只要在硬件电路设计时,注意ISP接口与其并接的器件进行必要的隔离,如使用串接电阻或断路跳线等。

⑦ 当系统中不使用JTAG接口下载编程或实时在线仿真调试,且JTAG接口的引脚需要作为I/O口使用时,必须设置熔丝位JTAGEN的状态为“1”(取消前面的“√”)。芯片出厂时,JTAGEN的状态默认为“0”,表示允许JTAG接口,JTAG的外部引脚不能作为I/O口使用。当JTAGEN的状态设置为“1”后,JTAG接口立即被禁止,此时只能通过并行方式或ISP编程方式才能将JTAG重新设置为“0”,开放JTAG。

⑧ 一般情况下,不要设置熔丝位把RESET引脚定义成I/O使用(如设置ATmega8 熔丝位RSTDISBL的状态为“0”),这样会造成ISP的下载编程无法进行,因为在进入ISP方式编程时前,需要将RESET引脚拉低,使芯片先进入复位状态。

⑨ 使用内部有RC振荡器的AVR芯片时,要特别注意熔丝位CKSEL的配置。一般情况下,芯片出厂时CKSEL位的状态默认为使用内部 1MHz的RC振荡器作为系统的时钟源。如果使用了外部振荡器作为系统的时钟源时,不要忘记首先正确配置CKSEL熔丝位,否则整个系统的定时都会出现问题。而当在设计中没有使用外部振荡器(或某钟特定的振荡源)作为系统的时钟源时,千万不要误操作或错误地把CKSEL熔丝位配置成使用外部振荡器(或其他不同类型的振荡源)。一旦这种情况产生,使用ISP编程方式则无法对芯片操作了(因为ISP方式需要芯片的系统时钟工作并产生定时控制信号),芯片看上去“坏了”。此时只有取下芯片,使用并行编程方式或使用JTAG方式(如果JTAG为允许时且目标板上留有JTAG接口)来解救了。一旦ISP可以对芯片操作,立即将CKSEL配置成使用内部 1MHz的RC振荡器作为系统的时钟源,然后再根据实际情况重新正确配置CKSEL。

⑩ 使用支持IAP的AVR芯片时,如果不使用BOOTLOADER功能,注意不要把熔丝位BOOTRST设置为“0”状态,它会使芯片在上电时不从Flash的 0x0000 处开始执行程序。芯片出厂时BOOTRST位的状态默认为“1”。 SbwGwXoryIFty3FfF0CclhfSwLXh7Kp3Vib487+moY2pkz6rzQFafzQ6LoJCsZYi

点击中间区域
呼出菜单
上一章
目录
下一章
×