现在,单片机系统程序的编写、开发和调试都是借助于个人计算机(PC)完成的。用户首先在PC上通过使用专用单片机开发软件平台,编写由汇编语言或高级语言构成的系统程序(源程序),再由编译系统将源程序编译成单片机能够识别和执行的运行代码(目标代码)。运行代码的本身是一组二进制的数据,在PC中对于纯二进制码的数据文件一般是采用BIN格式保存的,以“bin”作为文件的扩展名。但是实际使用中,通常使用的是一种带定位格式的二进制文件(HEX格式的文件),一般以“hex”作为文件的扩展名。
对单片机的编程操作,通常也称为程序下载,是指以特殊手段和软硬件工具,对单片机进行特殊的操作,以实现下面的3种功能:
1)将在PC上生成的该单片机系统程序的运行代码写入单片机的程序存储器中。
2)用于对片内的Flash、EEPROM进行擦除、数据的写入(包括运行代码)和数据的读出。
3)实现对AVR单片机配置熔丝位的设置、芯片型号的读取、加密位的锁定等。
AVR单片机支持多种形式的编程下载方式:
(1)高压并行编程方式
对于外围引脚数大于20的AVR单片机芯片,一般都支持这种高压并行编程方式。这种编程方式也是最传统的单片机的程序下载方式,其优点是编程速度快。但使用这种编程方式需要占用芯片众多的引脚和12V的电压,所以必须采用专用的编程器单独对芯片操作。这样AVR单片机芯片必须从PCB上取下来,不可以实现芯片在线(板)的编程操作,因此这种方式不适合系统调试过程以及产品的批量生产需要。(www.xing528.com)
(2)串行编程方式(ISP)
串行编程方式是通过AVR单片机芯片本身的SPI或JTAG串行口实现的,由于编程时只需要占用比较少的外围引脚,所以可以实现芯片的在系统编程(In System Programmable,ISP),不需要将芯片从PCB上取下来,所以串行编程方式也是最方便和最常用的编程方式。
串行编程方式还细分成SPI、JTAG方式,前者表示通过芯片的SPI串口实现对AVR单片机芯片的编程操作,后者则是通过JTAG串口来实现的。AVR单片机的许多芯片都同时集成有SPI和JTAG两种串口,因此可以同时支持SPI和JTAG的编程。使用JTAG方式编程的优点是,通过JTAG串口还可以实现系统的在片实时仿真调试(On Chip Debug),缺点是需要占用AVR单片机的4个I/O引脚。而采用SPI方式编程,只需要一根简单的编程电缆,同时可以方便地实现I/O口的共用,因此是最常使用的方式。其不足之处是不能实现系统的在片实时仿真调试。
(3)其他编程方式
一些型号的AVR单片机还支持串行高压编程方式和IAP(In Application Programmable,在应用编程)方式。串行高压编程是替代并行高压编程的一种方式,主要针对8个引脚的Tiny系列的AVR单片机使用。IAP方式则是采用了ATMEL公司称为自引导加载(Boot Load)技术实现的,往往在一些需要进行远程修改更新系统程序,或动态改变系统程序的应用中才采用。
ATmega16片内集成了16KB的支持系统在系统编程(ISP)和在应用编程(IAP)的Flash程序存储器,以及512B的EEPROM数据存储器。另外,在它的内部,还有一些专用的可编程单元熔丝位,用于加密锁定和对芯片的配置等。对ATmega16编程下载操作,就是在片外对上述的存储器和熔丝单元进行读/写(烧入)以及擦除的操作。
由于ATmega16片内含有SPI和JTAG串口,所以对ATmega16能使用3种编程的方式:高压并行编程、串行SPI编程、串行JTAG编程。在本书中将主要介绍和采用串行SPI编程方式。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。