接下来再来研究一下STC芯片的烧录功能:当在烧录软件中按下“下载”按钮以后,烧录软件会通过传给给STC芯片不停的发送一串数据,此时给STC芯片下电,然后上电,芯片上电以后,首先检测是否有烧录的请求,如果有就开始烧录程序,如果没有就开始执行芯片flash中的程序。
于是就有一个大概的思路了,可以给avr的芯片写一个bootloader的串口通信的程序,首先检测是否有烧录请求,如果有就更新flash中的程序,如果没有烧录请求,则执行flash中原有的程序。经过几天的努力这个通过串口给atmega16烧录程序的固件和上位机终于完成了,为了方便大家这里共享处原理图和固件程序。其实这种功能应该有人已经实现了,至少国外的开源硬件arduino就是通过这种方式给atmega8烧录程序的,但是atmega16我没有找到现成的,于是就自己实现了一个。
烧录软件使用winavr中的avrdude程序。这也是一个开源项目,avrdude是一个控制台程序,操作不是很方便,于是写了一个应用程序封装了一下。
原理图:
原理图实际上就是一个带有串口的avr最小系统。
烧录bootloader程序:
下载 ATMega16串口下载.rar 安装包,解压到本地目录,使用usbasp把“bootloader" 文件夹下的固件烧录到atmega16里,然后修改熔丝位:
验证烧录程序:
把自制的板子通过串口和电脑相连,运行 “AvrSelfProgram.exe” 程序:
在软件中选择正确的串口,并浏览打开要烧录的hex固件,此时按下板子上的复位按钮,然后点击“写FLASH”按钮。这里需要注意:由于芯片复位以后等待烧录请求,如果3秒内没有请求则开始运行上次烧录的程序,所以在板子复位以后,要在3秒之内点击“写FLASH”按钮才能烧录成功,否则就会失败,最开始这个时间可能不好把握,可以多试几次掌握节奏。
如果看到下边的提示,说明程序已经烧录成功:
添加Win7版本的支持,具体请下载附件中Win7软件包。
用户3745486 2016-6-12 16:50
用户1225930 2014-4-6 07:39
用户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
用户430147 2013-1-4 12:10
用户433694 2012-12-15 00:20
用户545978 2012-4-22 23:43