|
現: 2025-01-22 (水) 20:17:15 yuji  |
| + | * 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個カットされていたもので,シリアル番号はきちんと連番になっていた。~ |
| + | |
| + | みなさん偽物には気をつけてください・・・ |