首先要明确的是Arduino是一个开发平台(开源电子原型平台)而不是一个系列的开发板,另一点要明确的是Arduino的开发板严格的说不是微型控制器,微型控制器是上面的ATmega328p,Arduino适合做需要快速开发的产品,Arduino的库,以及社区和应用的完善程度不是其他任何平台能比的,没有必要将Arduino与STM32等微型控制器的性能做比较。杀鸡焉用宰牛刀,宰牛也不用杀鸡刀,中科院不会拿银河玩魔兽,你也不会拿计算器吃鸡。
首先要进行引导程序(bootloader)的烧写,只有向ATmega328p烧写了引导程序之后才能够在该芯片上使用arduino的开发语言及工具,这里相当于是自己做了一个arduino去掉了arduino UNO上面对产品来说没有用的部分比如USB接口。这是引脚ATmega328p布局对应的arduino引脚,写程序和接线的时候需要对应。
第一部分 烧写Bootloader
需要用到的材料:
- 16MHz晶振 1个
- 10K电阻 1个
- 18-22 PF 瓷片电容 2个
- 1个Arduino UNO(因为是通过arduinoUNO ISP烧写bootloader)
- 一个ATmega328p
连接图:
步骤:
1. 按照示意图接线
2.tool -> programmer -> arduino as ISP
3.processor -> atmega328
4.tool -> board -> Arduino Duemilanove or Diecimila(注意官方写的是Arduino Duemilanove or Nano w/ ATmega328,没有找到这个选项在哪里,用我的方法也可以的)
5. Tools > Burn Bootloader
这样就烧写好bootloader了。其实ATmega328p内置了一个8MHz的晶振可以直接使用来做最最小系统,具体参考https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard
明确bootloader的作用:
- 完成对最小系统的初始化
- 将运行权交给被加载的程序(让ATmega328p支持arduino IDE及语言)
- 这是操作系统内核运行之前的一段程序
第二部分 向ATmega328p烧写Arudino的程序
一旦ATmega328p烧写了引导程序,就可以使用FTDI来烧写arduino的程序了。我们可以将arduino UNO作为FDTI来ATmega328p烧写程序。首先要将Arduino UNO的ATmega328p移除掉然后使用RX TX与ATmega328p进行通讯。
步骤:
1.按图接线
2.移除arduino UNO上面的ATmega328p,把arduino作为FTDI
3. 按图中进行设置
可以烧写一个blink进行测试,这个时候的13号引脚就要使用文章开头的那种引脚对应的图来连接了,然后另一边接GND。
这个时候旁边的arduino UNO就仅仅起到了供电5V的作用,这个使用使用一个5V稳压电容就可以搞定供电问题了。