面包板上的至简 Arduino

来自Jack's Lab
跳转到: 导航, 搜索

1 元器件


ATmega328p,TQFP32 封装,手头没有 PDIP 的 328p 就用这个了


Nano-arduino-01.jpg


为了用杜邦线接插的方便,故将其先焊接在一小片转接板上


Nano-arduino-02.jpg


焊好后,在面包板上加一个 16MHz 晶振外围电路即可,所需要的元件仅为:

1 个 16MHz 无源晶振
2 个 15pF 电容


电路如下:


Nano-arduino-osc.jpg


XTAL1, XTAL2 接晶振,再找一个 VCC 接 5V,GND 接地,即成一个极简系统

ATmega328p 针脚定义为:


Atmega328p-TQFP32-pin.jpg


搭好的效果为:


Nano-arduino-04.jpg


白线连 5V,黑线连接 GND,极简系统即可工作


2 Bootloader 烧写

328p 的片子,可使用 /PATH/TO/arduino-1.0.1/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex

这个 bootloader,烧写的过程可参考 Arduino bootloader 的烧写

至于编程器的连线,可直接连片子的引脚,即:

MISO  --> MISO
MOSI  --> MOSI
SCK   --> SCK
RESET --> RESET


3 arduino upload 测试

烧写有 arduino bootloader 的芯片安如下连接,就可以用 arduino 的开发环境直接上载程序了:

  将 FT232RL 板的 RX 串一个 1K 的电阻连 ATmega 的 TX
  TX 也要串一个 1K 的电阻连 ATmega 的 RX
  DTR 串一个 100nF 的电容连在 RESET


断电重启一下,一般即可像正常 arduino 板一样使用。对于命令行方式,可用如下命令测试是否成功:

$ avrdude -C /d/arduino-1.0.1/hardware/tools/avr/etc/avrdude.conf -p m328p -c arduino -P COM27  -b 57600

avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude.exe: Device signature = 0x1e950f
avrdude.exe: safemode: Fuses OK
avrdude.exe done.  Thank you.


对于已有 bootloader 的板子,avrdude 通过串口与板上的 ATmega328p 通信,实际为 avrdude 通过串口“命令”ATmega328p 对自身的 flash 进行编程,需要写入的数据也从串口传入


烧了一个在数字口 7、1s 闪一次 LED 的程序:

$ avrdude -C /d/arduino-1.0.1/hardware/tools/avr/etc/avrdude.conf -p m328p -c arduino   \
          -P COM27  -b 57600 -D -U flash:w:Blink-7-1s.hex

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude.exe: Device signature = 0x1e950f
avrdude.exe: reading input file "Blink-7-1s.hex"
avrdude.exe: input file Blink-7-1s.hex auto detected as Intel Hex
avrdude.exe: writing flash (2496 bytes):

Writing | ################################################## | 100% 1.27s

avrdude.exe: 2496 bytes of flash written
avrdude.exe: verifying flash memory against Blink-7-1s.hex:
avrdude.exe: load data flash data from input file Blink-7-1s.hex:
avrdude.exe: input file Blink-7-1s.hex auto detected as Intel Hex
avrdude.exe: input file Blink-7-1s.hex contains 2496 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 1.08s

avrdude.exe: verifying ...
avrdude.exe: 2496 bytes of flash verified

avrdude.exe: safemode: Fuses OK
avrdude.exe done.  Thank you.


烧完后去除无关连接线,PD7(对应于 Arduino 的数字 7 口)接一个 LED 灯,效果如下(每秒 LED 灯闪一次):


Nano-arduino-05.jpg


对于测试连接出现的如下错误信息:

$ avrdude -C /d/arduino-1.0.1/hardware/tools/avr/etc/avrdude.conf -p m328p -c arduino -P COM27  -b 115200
avrdude.exe: stk500_getsync(): not in sync: resp=0x00

avrdude.exe done.  Thank you.

一般是波特率的问题,改成 '-b 57600' 试试

还不行的话就要检查硬件连接了,尤其是 RX/TX/RESET(DTR) 这三个线串的电阻和电容有无问题


















个人工具
名字空间

变换
操作
导航
工具箱