YFROBOT创客社区

标题: 利用ft232r的Bitbang模式给arduino控制器重新烧写bootloader [打印本页]

作者: YFRobot    时间: 2014-1-12 10:44
标题: 利用ft232r的Bitbang模式给arduino控制器重新烧写bootloader
本帖最后由 YFRobot 于 2014-1-15 17:56 编辑

在arduino UNO之前的版本如Arduino Dicimila/NG/Duemilanove中,FT232RL作为USB通信芯片被广泛使用,因为FT232R的每个引脚都可以软件直接操作,称之为“Bitbang Mode”,可以用这种模式来给AVR单片机下载程序。
如果你的arduino板Bootloader损坏,无法下载程序,或者准备自制一块arduino板,你只需要有一个FT232下载器,(引出必要的引脚),就可以利用下面的方法对主芯片的Bootloader进行重写,你将用到下面的软件:
注:操作过程在windows 7 32位/64位 验证通过,如果是LINUX或者MAC用户,请参考原网址:
     http://www.geocities.jp/arduino_ ... /bitbang_w_ide.html
●Avrdude: [attach]739[/attach]
●Avrdude-GUI:[attach]738[/attach],对于Avrdude新用户来说,使用此GUI可以避免烦锁的指令操作符。


硬件接线图:
1)、硬件接线原理图,FT232R需要用到CTS#、DSR#、DCD#、RI#、VCC与标准的6P ICSP引脚相连,如下所示
[attach]775[/attach]
2)、实物接线如下:
[attach]776[/attach]

下载设置(这里以烧写UNO的bootloader作介绍)
将上面两个文件下载后安装到“C:\Program”下,打开"C:\Program Files\avrdude-GUI-1.0.5",双击运行 "avrdude-GUI.exe"。
注:使用“avrdude-GUI-1.0.5”需要安装Microsoft .NET Framework 2.0,可以从这里下载

[attach]774[/attach]
1、avrdude.exe File
点击

                               
登录/注册后可看大图
,加载"avrdude.exe"文件
2、Programmer
点击下拉菜单,选择“FT232R Synchronous BitBang(diecimila)”
3、Device
点击下拉菜单,选择目标芯片,如果是UNO版本,请选择“Atmega328P(m328)”
4、Command line Option
输入:-P ft0 -B 9600   
9600表示下载器工作在9600的波特率下,也可以直接输入"-P ft0",则运行在全速/最高速模式下,对于空白的芯片,推荐使用低波特率。
注:Port 设置项请留空,不需要进行任何配置,否则无法正常工作。


下载测试:
点击"Read",读当前芯片的熔丝位值,如果熔丝位信息与下面不符,需要手动修改,完成后点击“Write”
[attach]779[/attach]
会跳出一个二次确认对话框,点“YES”,再对Lock Bit进行操作,如下:
[attach]777[/attach]
注:不同的芯片熔丝位设置不同,具体的熔丝位配置可以在“C:\arduino-1.0.1\hardware\arduino\boards”里找到。
下面是UNO的熔丝位配置信息:
  1. ##############################################################
  2. uno.name=Arduino Uno
  3. uno.upload.protocol=arduino
  4. uno.upload.maximum_size=32256
  5. uno.upload.speed=115200
  6. uno.bootloader.low_fuses=0xff
  7. uno.bootloader.high_fuses=0xde
  8. uno.bootloader.extended_fuses=0x05
  9. uno.bootloader.path=optiboot
  10. uno.bootloader.file=optiboot_atmega328.hex
  11. uno.bootloader.unlock_bits=0x3F
  12. uno.bootloader.lock_bits=0x0F
  13. uno.build.mcu=atmega328p
  14. uno.build.f_cpu=16000000L
  15. uno.build.core=arduino
  16. uno.build.variant=standard
  17. ##############################################################
复制代码
熔丝位配置完成后,开始调入官方的Bootloader固件,进行固件烧写:
[attach]780[/attach]
1、首先加载固件,固件所在文件路径:
      C:\arduino-1.0.1\hardware\arduino\bootloaders\optiboot\optiboot_atmega328.HEX

2、加载完成后,点击“Erase-Write-Verify”,等待一会,即可完成烧写。
烧写完成后,对加密位赋0X0F,再点击“Write”
[attach]778[/attach]

完成烧写后,移除接线,连接USB线缆到Arduino主板,打开Arduino IDE,烧写官方示例“BLINK”,验证是否成功。

Tips:
烧写固件过程中,如果遇到下列问题,请务必确保接线正确,并且保证FT232RL设备工作正常。
  1. avrdude.exe: BitBang OK
  2. avrdude.exe: pin assign miso 3 sck 5 mosi 6 reset 7
  3. avrdude.exe: drain OK

  4. ft245r:  bitclk 4800 -> ft baud 2400
  5. avrdude.exe: ft245r_program_enable: failed
  6. avrdude.exe: initialization failed, rc=-1
  7.              Double check connections and try again, or use -F to override
  8.              this check.


  9. avrdude.exe done.  Thank you.
复制代码
如果读写熔丝位都没有问题,固化Bootloader时如果出现错误,请用较低的波特率进行烧写,推荐使用9600,即在命令行输入如下指令:
“-P ft0 -B 9600”  
如果有疑问,请跟帖回复!
作者: WANG088    时间: 2015-12-12 15:35

thanks you.
good data.

作者: cyrs    时间: 2020-8-3 12:47
谢谢分享,楼主




欢迎光临 YFROBOT创客社区 (http://yfrobot.com.cn/) Powered by Discuz! X3.1