原创 AVR通过串口给芯片烧录程序(ATMega16)

2012-4-23 00:02 12673 13 30 分类: MCU/ 嵌入式
 
        相信大家都用过STC系列的51单片机,STC系列的单片机烧录程序都很简单,只需要通过串口就可以实现程序的烧录。于是就想让avr的芯片也能实现通过串口就能下载的功能,这样就可以省去购买usbasp下载线或者高压编程器的费用了。仔细研究avr的芯片手册,发现都是带有bootloader功能,同时这个bootloader功能可以读写芯片的整个flash存储区,并且包括bootloader区,而且还有另外一个特点:如果bootloader功能开启以后,每次复位都会从bootloader启动。

       

        接下来再来研究一下STC芯片的烧录功能:当在烧录软件中按下“下载”按钮以后,烧录软件会通过传给给STC芯片不停的发送一串数据,此时给STC芯片下电,然后上电,芯片上电以后,首先检测是否有烧录的请求,如果有就开始烧录程序,如果没有就开始执行芯片flash中的程序。

 

       于是就有一个大概的思路了,可以给avr的芯片写一个bootloader的串口通信的程序,首先检测是否有烧录请求,如果有就更新flash中的程序,如果没有烧录请求,则执行flash中原有的程序。经过几天的努力这个通过串口给atmega16烧录程序的固件和上位机终于完成了,为了方便大家这里共享处原理图和固件程序。其实这种功能应该有人已经实现了,至少国外的开源硬件arduino就是通过这种方式给atmega8烧录程序的,但是atmega16我没有找到现成的,于是就自己实现了一个。

 

       烧录软件使用winavr中的avrdude程序。这也是一个开源项目,avrdude是一个控制台程序,操作不是很方便,于是写了一个应用程序封装了一下。

 

原理图:

        原理图实际上就是一个带有串口的avr最小系统。

 

avr_com.jpg

 


烧录bootloader程序:

 

       下载 ATMega16串口下载.rar 安装包,解压到本地目录,使用usbasp把“bootloader" 文件夹下的固件烧录到atmega16里,然后修改熔丝位:

 

 熔丝位.jpg

 

验证烧录程序:

 

        把自制的板子通过串口和电脑相连,运行 “AvrSelfProgram.exe” 程序:

avrselfprogram.jpg

 


        在软件中选择正确的串口,并浏览打开要烧录的hex固件,此时按下板子上的复位按钮,然后点击“写FLASH”按钮。这里需要注意:由于芯片复位以后等待烧录请求,如果3秒内没有请求则开始运行上次烧录的程序,所以在板子复位以后,要在3秒之内点击“写FLASH”按钮才能烧录成功,否则就会失败,最开始这个时间可能不好把握,可以多试几次掌握节奏。

如果看到下边的提示,说明程序已经烧录成功:

 

 success.jpg

添加Win7版本的支持,具体请下载附件中Win7软件包。

PARTNER CONTENT

文章评论17条评论)

登录后参与讨论

用户3745486 2016-6-12 16:50

下了 希望有用

用户1225930 2014-4-6 07:39

win7可以下,另一个下不了。

用户1744127 2014-3-27 23:23

下载不了

用户377235 2013-6-2 20:17

下载bootloader不是还要用usbasp吗

用户446305 2013-5-12 17:10

谢谢啊……

用户411535 2013-1-24 20:23

不可以下载了

用户545978 2013-1-4 22:22

可以下载,用ie8浏览器试试

用户430147 2013-1-4 12:10

ATMega16串口下载.rar 下载不了

用户433694 2012-12-15 00:20

值得学习

用户545978 2012-4-22 23:43

哪个文件呢?
相关推荐阅读
用户545978 2016-02-16 22:06
ATMega8熔丝位说明
        最近玩atmega8的arduino,镕丝位的设置总是记不住,所以记录下来备用,同时我也相信很多人也和我一样,有很多都没有关注过是什么功能 1、功能熔丝 熔丝  ...
用户545978 2012-11-17 22:49
赠送旧AVR的JTAG板一块
        今天翻东西的时候找到了一块以前参加竞赛时做的AVR的JTAG仿真器的板子,记得那个时候刚接触单片机,也没啥钱,几个同学在老师的指导下凑钱做了第一块PCB,那么大的一块PCB只实现了...
用户545978 2012-05-07 00:01
Arduino介绍
  Arduino是一款开源的,有一套易用的软件和硬件平台,Arduino可以通过各种外围传感器来感知所在的环境状况,来控制LED指示灯的变化,电机的运转或者作出其它一些交互动作。 开始认...
用户545978 2012-05-06 22:59
ULN2803驱动板驱动两路步进电机的方法(含源代码)
        ULN2803是8路NPN达林顿连接晶体管系列,特别适用于低逻辑电平数字电路,如:TTL,COMS或PMOS/NMOS,和较高的电压/电流要求之间的接口,广泛应用与计算机、打印机、...
用户545978 2012-02-12 22:16
Arduino使用方法/ATMega8最小系统使用方法
前边已经介绍过Arduino,已经了解了什么是Arduino,其实就是一个ATmega8/ATmega168的系统板,这篇文章主要介绍以下几个部分。        1、Arduino的硬件结构图 ...
我要评论
17
13
关闭 站长推荐上一条 /3 下一条