首先讲讲题目的由来吧。我做的东西原本是利用ARDUINO MEGA2560及各种模块搭建起来的,程序自然也是用ARDUINO IDE写的。但这种东拼西凑的产品自然不够好,更主要的是,之前ARDUINO板的电源烧掉了,我看了下原理图,当电脑USB电源和12V电源都接上时,USB5V和12V转的5V并联了,以此来提供大电流,但是我上网查了下,两个相同电压的电源并联其实是很容易出问题的,电流的分配关系并没有想象的那么听话是均分的,而是和电源的内阻有关,很容易烧电源,于是想着自己参考着开源原理图设计了一块电路板,修改了电源方案并把所有元件都放在一块板上,并修改固件(即之前说的程序)后烧进单片机中。说到这里,有必要阐述一下AVR与ARDUINO的关系。
ARDUINO是以ATMEL公司的AVR单片机为主控芯片的开源硬件,同时它还有自己的开发环境ARDUINO IDE。那么ARDUINO板是怎么利用AVR单片机搭建起来的呢?比如ARDUINO MEGA2560就是以AT MEGA2560 为主控芯片搭建起来的。ARDUINO把AVR单片机的部分通用I/O口挑出来,给他重新赋予名字:如maga2560 中PD0对应ARDUINO板上的digital 21(PWM和COMMUNICATION 的I/O口也是DIGITAL口),PF0对应ADC0即板子上ANALOG IN的A0.每个版本都是事先把AVR单片机的各设置都设置好了之后才出售的。每个版本的相关信息可通过ARDUINO所在文件夹下hardware\arduino下的boards.txt查看,里面记载了各版本的熔丝位设置,串口波特率设置,bootloader文件所在位置等等。在ARDUINO IDE中选择版本时,就会把相关参数切换为这个文件里说明的参数。
说完I/O口,再说说ARDUINO的下载方式。AVR单片机的下载方式有ISP,JTAG仿真,高压并行下载等。早期的ARUIDNO的下载用的还是CH340G,后来从某个版本开始就使用AT MEGA8以及16来实现USB转串口了。ARDUINO MEGA2560的手册的下载模块原理图如下:
由于这个原理我也不懂,所以就不多说了。重点是,