現: 2025-01-22 (水) 20:17:15 yuji ソース
Line 1: Line 1:
 +* FT232RL AVR Writer [#rb8e6784]
 +[[FT232RL>https://ftdichip.com/products/ft232rl/]]はFTDI社のUSB-Serial変換用のICの一つで,[[USB-Serial変換アダプター>https://amzn.to/3WrO4dv]]なんかで広く使われている。~
 +#ref(USB-UART.png,,20%)
 +FT232RLは外付け部品が殆どいらない・クロック発振内蔵・EEPROM内蔵・3.3V出力・Bit Bang搭載・シリアルNo搭載など非常に使いやすいIC。~
 +
 +FT232RLにはBit Bangモードという通常使用する仮想COMデバイスとは違う動作モードがる。~
 +このBit Bangモードを利用すると,USB通信によりFT232RLの各ポートをI/Oポートとして制御できるので,これらのI/Oポートをうまく使うことによりAVR Writerとして使用できるようだ。~
 +
 +AVRチップを使ったAVR Writerを自作する場合,何らかの他のAVR Writerを使って制御プログラムを自作のAVR Writerに書き込む必要がある。~
 +
 +もしFT232RLのボードがAVR Writerとして使用できれば,''ひとつもAVR Writerを持っていなくてもAVRチップにプログラムを書き込むことができるようになる。''~
 +
 +以前購入したFT232RLが載ったUSB-Serial変換アダプターが数枚あるので,それを実際にAVR Writerとして使えるか試してみた。~
 +
 +** 使い方 [#l4117bb8]
 +AVR Writerとして使う場合には,FT232RLの4個のポートとVCCとGNDの計6本をターゲットボードのISPコネクターと接続する。~
 +
 +その後,書き込みプログラムを使って,AVRチップのFlash ROMにプログラムを書き込む。~
 +
 +*** FT232RLが実装された基板をAVR Writerとして使用する時の接続 [#ga7fe585]
 +FT232RLボードのpinとターゲットボードのISPコネクターと接続する。~
 +|FT232RL|AVR ISP|ATtiny85(DIP)|ATmega328P(DIP)|ATmega328P(QFP32)|h
 +|CTS    |1 MISO |6 MISO      |18 MISO        |16 MISO          |
 +|VCC    |2 VCC  |8 VCC        |7  VCC        |6  VCC          |
 +|DSR    |3 SCK  |7 SCK        |19 SCK        |17 SCK          |
 +|DCD    |4 MOSI |5 MOSI      |17 MOSI        |15 MOSI          |
 +|RI    |5 RST  |1 RESET      |1  RESET      |29 RESET        |
 +|GND    |6 GND  |4 GND        |8,22 GND      |3,5,21 GND      |
 +
 +*** 使用する書き込みプログラム [#r908d8e3]
 +2007年に[[すzのAVR研究>http://suz-avr.sblo.jp/s/category/780472-1.html]]で,Bit Bangモードを使ってAVRチップに書き込む独自修正したavrdudeを公開されている。~
 +
 +AVRチップにプログラムを書き込む時に良く使用される''avrdude''は,''バージョン6.0.1''からこの成果をマージしてBit BangモードのFT232RLを使えるようになっているようだ。~
 +
 +''avrdude.conf''に以下のような定義があれば,FT232RLのBit Bangモードに対応している。~
 +#code(text,,nonumber){{
 +programmer # arduino-ft232r
 +   id                    = "arduino-ft232r", "diecimila", "ttl232r2";
 +   desc                  = "Arduino: FT232R connected to ISP";
 +   type                  = "ftdi_syncbb";
 +   prog_modes            = PM_TPI | PM_ISP;
 +   connection_type        = usb;
 +   usbvid                = 0x0403;
 +   usbpid                = 0x6001;
 +   reset                  = 7;  # RI  X3(4)
 +   sck                    = 5;  # DSR X3(2)
 +   sdo                    = 6;  # DCD X3(3)
 +   sdi                    = 3;  # CTS X3(1)
 +;
 +
 + id      = "ft232r";
 + desc    = "FT232R Sybchronous BitBang";
 + type    = "ftdi_syncbb";
 + connection_type = usb;
 + miso    = 1;    #RxD
 + sck      = 2;    #RTS
 + mosi    = 0;    #TxD
 + reset    = 4;    #DTR
 +;
 +
 +programmer # ft232r
 +   id                    = "ft232r";
 +   desc                  = "FT232R based generic programmer";
 +   type                  = "ftdi_syncbb";
 +   prog_modes            = PM_TPI | PM_ISP;
 +   is_serialadapter      = yes;
 +   connection_type        = usb;
 +   usbvid                = 0x0403;    # For use as serial adapter
 +   usbpid                = 0x6001;    #
 +   reset                  = 4;        # DTR
 +   sck                    = 0;        # TxD
 +   sdo                    = 2;        # RTS
 +   sdi                    = 1;        # RxD
 +;
 +}}
 +
 +** Windowsのデバイスドライバーのインストール [#gacae086]
 +アプリケーションからFT232RLをBit Bangモードでアクセスする場合は,FTDI社のD2XXデバイスドライバーとlibusbライブラリを使う。~
 +
 +最近のFTDI社のWindows用デバイスドライバーは,VCPとD2XXのデバイスドライバーは統合されていて,デバイスドライバーのインストール時に両方共インストールされる。また,Windows10 1904あたりから標準でこのFTDIのデバイスドライバーがセットアップされているようだ。~
 +
 +デバイスドライバーがインストールされていない場合は,FTDI社からダウンロードしてインストールする。~
 +[[FTDIのD2XX Direct Drivers>https://ftdichip.com/drivers/d2xx-drivers/]]からWindows用のデバイスドライバー[[CDM2.xx.xxx_Setup.zip>https://ftdichip.com/wp-content/uploads/2021/08/CDM212364_Setup.zip]]をダウンロードする。~
 +zipファイルを解凍するとCDM2xxxxx_setup.exeファイルがあるので,ダブルクリックしてインストールする。~
 +
 +この後,FT232RLが実装されたボードをPCのUSBコネクターに挿入すると,デバイスドライバーがロードされる。~
 +- USBデバイス情報~
 + VID: 0403
 + PID: 6001
 +
 +デフォルトで仮想COMポートとして動作しているが,avrdudeからはその状態でもBit Bangモードでアクセス出来るようになっている。~
 +
 +** avrdudeでの操作 [#v4d57a7e]
 +avrdudeでは-c arduino-ft232rもしくはdiecimila(接続pinが違うft232rも定義されている)で,AVR Writerとして動作する。~
 + > avrdude -c arduino-ft232r -p m168p -t
 +
 +ATtiny85Vを125kHzで動かしている場合は,-Bオプションでクロックスピードを指定する。(ttl232r2はarduino-ft232rの別名としてavrdude.confに追加した。)~
 + > avrdude -c ttl232r2 -p t85 -B 100 -t
 +
 +* 偽物FT232RL [#pc969753]
 +どうも[[中国製のUSB-Serial変換アダプター基板(赤色)>https://amzn.to/3WrO4dv]]に実装されているFT232RLは,FTDI製の物ではない偽物が多くあるらしい,というかほぼ全てが偽物のFT232RLが使われている。~
 +
 +見た目(型番表示の部分が偽物は雑な印刷)や形状などからは全く偽物と気づくことは難しい。~
 +FTDI社からダウンロードできる[[FT_Progツール>https://ftdichip.com/wp-content/uploads/2024/11/FT_Prog_v3.12.55.667-Installer.zip]]を使うと,FT232RLチップのシリアル番号を確認することが出来るので,そのシリアル番号から偽物かどうか判断できるようだ。~
 +
 +偽物FT232RLでは,
 + A400Y7MZ
 + A50285BI
 + A5XK3RJT
 +  :
 +というシリアル番号が多く使われているらしい。~
 +
 +手元にFT232RLのUSB-Serial変換アダプター基板(上記の画像のボード)が4枚あったんで確認してみたところ,残念ながら全て同じ''A50285BI''のシリアル番号で偽物だった XD ~
 +本物であれば当然,1個1個別々のシリアル番号になっている。安いわけだ!~
 +
 +このような偽物FT232RLでは,Bit Bangモードを使ったavrdudeでのAVRチップへの書き込みはうまく動作しないみたい。~
 +どうやらFTDI社のデバイスドライバーは,偽物のFT232RLだった場合は特定の機能が動作しないようにしているようだ。もしくは偽物の場合,Bit Bang機能そのものに問題があるのかもしれない。~
 +
 +試しにいくつかのバージョンのデバイスドライバーを試してみたが,どれも正常に動作しなかった。~
 +偽物によっては古いバージョンのデバイスドライバーだとうまくいく場合もあるらしいが・・・~
 +- 2021/07/05 2.12.36.4(最新ドライバ)~
 +動作しない。~
 +- 2017/08/16 2.12.28.0~
 +動作しない。~
 +- 2015/07/10 2.12.6.0~
 +動作しない。~
 +- 2011/03/18 2.08.14.0~
 +動作しない。~
 +- 2009/02/25 2.04.16.0~
 +動作しない。~
 +
 +** 偽物FT232RLを本物FT232RLに交換 [#d7d0d59e]
 +''秋月電子で購入できるFT232RLは,FTDI社製の本物らしい。''~
 +
 +そこで[[秋月電子からFT232RL>https://akizukidenshi.com/catalog/g/g101739/]]チップを2個購入(@550円)して,手元にあるUSB-Serialコンバーター基板に実装されている偽物FT232RLを,本物であろうチップに交換してみた。~
 +
 +結果は,最新デバイスドライバー2021/07/05 2.12.36.4で,なんの問題もなくAVR Writerとして動作しました :)
 +
 +購入した2個のFT232RLはテープ品から2個カットされていたもので,シリアル番号はきちんと連番になっていた。~
 +
 +みなさん偽物には気をつけてください・・・
  

  • 開発/AVR/AVR Writer/FT232RL Writer のバックアップ差分(No. All)
    • 現: 2025-01-22 (水) 20:17:15 yuji

トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 137, today: 1, yesterday: 2