AVR单片机在欧美非常流行,有非常丰富的开源软件和硬件,Atmel官方开发工具Atmel Studio 7.0的编译器,就是开源的avr-gcc。当然大名鼎鼎无人不知无人不晓的Arduino也是AVR的主场。
AVR单片机的系统也非常开放,有专门的文档讲述编程下载(ISP)协议,因此各种可以DIY的编程器也有很多,我参照USBasp制作了一个,感觉使用很方便,很好很强大。
USBasp本身使用的依然是AVR的单片机,Atmeag8、Atmega48或者Atmega88都可以。这几种单片机的硬件本身并不支持USB接口,但老外很厉害,愣是用软件实现了整套的USB协议,而且功能还很丰富,真是佩服啊。
实物图:
电路图如下(点击可以查看高清大图),对比原作者的版本,我将电源改为了3.3V电压。现在越来越多的传感器等外部器件,都不再支持5V供电了,所以我使用的MCU都是3.3V供电,省去了各种电平转换电路,非常方便。
PCB设计图如下,这个编程器有一个开关可以选择超低速度下载,可以用于一些默认频率只有1MHz的单片机。
参考资料:
https://github.com/abcminiuser/lufa
https://github.com/obdev/v-usb
https://github.com/kcuzner/avrdude
https://github.com/freetronics/USBASP
https://github.com/fffaraz/awesome-avr
https://github.com/libusb/libusb
http://www.atmel.com/Images/Atmel-0943-In-System-Programming_ApplicationNote_AVR910.pdf