熔丝位是ATMEL公司AVR单片机比较独到的特征。在每一种型号的AVR单片机内部都有一些特定含义的熔丝位,其特性表现为多次擦写的E²PROM。用户通过配置(编程)这些熔丝位,可以固定地设置AVR的一些特性,参数以及I/O配置等,当然也包括对片内运行代码的锁定(加密)。
用户使用并行编程方式、ISP编程方式、JTAG编程方式都可以对AVR的熔丝位进行配置,但不同的编程工具软件提供对熔丝位的配置方式(指人机界面)也是不同的。有的是通过直接填写熔丝位位值(如:CVAVR、PonyProg2000和SLISP等),有的是通过列出表格选择(如 AVR STUDIO、BASCOM-AVR)。前者程序界面比较简单,但是需要用户在仔细查询操作,会引起一些意想不到的后果,如造成芯片无法正常运行,无法再次定入ISP编程模式等。建议用户对AVR的熔丝位进行配置时,选择用户表格选择方式界面的编程软件,如BASCOM-AVR。不过版主使用的是前者PonyProg2000。
正确配置AVR熔丝位
对AVR熔丝位的配置操作是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。
1. 在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态, “Unprogrammed”表示熔丝位的状态为1(禁止);“Programmed” 表示熔丝位的状态为0(允许)。因此,配置 熔丝位的过程实际上是“配置熔丝位成为未编程状态1或成为已编程状态0”。
2. 在使用通过选择打钩“?”方式确定熔丝位状态值的编程工具软件时,首先仔细阅读软件的使用说明书,弄清“?”表示设置熔丝位状态为0还是为1。
3. 新的AVR芯片在使用前,应先查看它的熔丝位的配置情况,再根据实际需要进行熔丝位的配置,并将各个熔丝位的状态记录备案。
4. AVR芯片加密以后仅仅是不能读取芯片内部的Flash和E²PROM中的数据,熔丝位的状态仍然可以读取但不能修改配置。芯片擦除命令是将Flash和E²PROM中的数据清除,并同时并两位锁定位状态配置成“11”,处于无锁定状态。但芯片擦除命令并不能改变其他熔丝位的状态。
5. 正确的操作步骤是:在芯片无锁定状态下,将代码写入芯片中,配置相关的熔丝位,最后配置芯片的锁定位。芯片锁定后,如果发现熔丝位配置不对,必须使用芯片擦除命令清除芯片中的数据,并解除锁定。然后重新写入代码,修改相关的熔丝位,最后再次配置芯片的锁定位。
6. 使用ISP串行方式下载编程时,应配置SPIEN熔丝位为0,芯片出厂时SPIEN位的状态默认为0,表示允许ISP串行方式下载编程。只有该位处于编程状态0时才可以通过AVR的ISP口进行ISP下载编程,如果该位处于编程状态1后,ISP串行方式下载数据立即被禁止,此时只有通过并口方式或JTAG编程方式才能将SPIEN的状态重新设置为0来开放ISP编程方式。所以有时芯片在ISP方式下不能写入,不要认为芯片已坏,可以按以上方法开放ISP编程。通常情况下,应保持SPIEN的状态为0,允许ISP编程不会影响其引脚的I/O功能,只要在硬件电路设计时,注意ISP接口与其接口器件进行必要的隔离,如使用串接电阻或断路跳线等。
7. 当不需要使用JTAG接口编程方式,且JTAG接口引脚需要作为I/O口使用时,最好设置熔丝位JTAGEN的状态为1。芯片出厂时 JTAGEN的状态默认为0,表示允许JTAG编程方式,JTAG引脚不能作为I/O口使用,所以新的芯片如果需要用到JTAG引脚作I/O口,需设置 JTAGEN为1,当JTAGEN的状态设置为1后JTAG接口立即被禁止,此时只有通过并行方式或ISP编程方式才能将JTAG重新设置为0开放 JTAG。
此帖出自
小平头技术问答
一周热门 更多>