FT232BMを用いた AVRマイコンライタ(プログラマ)

概要

昨今のPC事情により,シリアルポートやパラレルポートといったレガシーポートがなくなりつつある。2001年くらいから, intelだかMicrosoftだかが提唱したインタフェースには,当該ポートが無くなっていた。暫くは無くなることもあるまいと, 安心していたところ,2003夏に購入したノートPCにはUSBポートしか無かった。

そんなわけで,ここで紹介するUSB接続のライタを完成させようということになりました。 USB-serial変換用の便利なICが出てきたことで,これを利用することにします。前回,Comicket65では, FT232AMを使っておりましたが,BMを使うようにしました。いろいろと改良されて居るみたいですし, BitBang-modeとやらも気になりますしね。

材料

EAGLE(Cad-sfot社)の出力(bopm.ulp)から,tableをそのまま貼り付けております. descriptionにある部品名は必ずしも正しくはありません.Packageにある,2012・3216と混在しているのは, 部品の入手性によるモノです.今後,1608に統一することが予想されます. (業者経由で買う場合には,既に2012が受注生産に入っているため@03/12末現在)

表.部品一覧
Part Value Device Package Description
C1 CPOL-EUE2.5-7 E2,5-7 POLARIZED CAPACITOR, European symbol
C2 100n C-EUC2012 C2012 CAPACITOR, European symbol
C3 10n C-EUC2012 C2012 CAPACITOR, European symbol
C4 10n C-EUC2012 C2012 CAPACITOR, European symbol
C5 33n C-EUC3216 C3216 CAPACITOR, European symbol
C6 18 C-EUC3216 C3216 CAPACITOR, European symbol
C7 18 C-EUC3216 C3216 CAPACITOR, European symbol
CN1 USB-B型 PN61729 PN61729 BERG
D1 LED LED-3MM LEDs
D2 LED LED-3MM LEDs
IC1 74125P 74125P SOP-14-300 Quad bus BUFFER, 3-state
IC2 AT90S2313P AT90S2313P DIL20 MICROCONTROLLER
IC3 FT232BM FT232BM LQFP-32 USB UART
IC4 93-C46AP 93-C46AP DIL8 Serial EEPROM
JP1 JP3Q JP3Q JUMPER
JP2 JP5Q JP5Q JUMPER
L1 ポリスイッチ R-EU_0204/5 0204/5 RESISTOR, European symbol
R1 10k R-EU_R2012 R2012 RESISTOR, European symbol
R2 10k R-EU_R2012 R2012 RESISTOR, European symbol
R3 150 R-EU_R2012 R2012 RESISTOR, European symbol
R4 330 R-EU_R2012 R2012 RESISTOR, European symbol
R5 330 R-EU_R2012 R2012 RESISTOR, European symbol
R6 470 R-EU_R2012 R2012 RESISTOR, European symbol
R7 10k R-EU_R2012 R2012 RESISTOR, European symbol
R8 27 R-EU_R3216W R3216W RESISTOR, European symbol
R9 150 R-EU_R2012 R2012 RESISTOR, European symbol
R10 27 R-EU_R3216W R3216W RESISTOR, European symbol
R11 1k5 R-EU_R2012 R2012 RESISTOR, European symbol
R12 150 R-EU_R2012 R2012 RESISTOR, European symbol
R13 47k R-EU_R2012 R2012 RESISTOR, European symbol
R14 10k R-EU_M2012 M2012 RESISTOR, European symbol
R15 2k2 R-EU_M2012 M2012 RESISTOR, European symbol
SW1 DIPSW3-DIP DIPSW3-DIP DIL6
X1 7.3728 CRYTALHC49S HC49/S CRYSTAL
X2 6MHz RESONATOR SIP-08 X'tal resonator which include capasitors

制作

此処でいろいろと書こうかと画策しておりましたが, 先駆者のなひたふ様のところにある, NP1003製作方法を 参照してくださいw.SMD実装方法について細かく書かれております..
また,以降の画像では,原則高解像度の画像へリンクを張っております. 細かい部分まで見たい場合にはクリックしてください.少々サイズが大きいので,低速回線のかたは注意してください..

下ごしらえ

基板裏表
Parts面 Solder面

外形加工
送られてきた基板をそのままの状態で配布しております.殆どの基板では,カット面の手触りが悪いと思います.
そこで,手触りが良くなるように,Pカッターなどで削ってください.程度は好みでお願いしますw
シルク切削
記述をミスしたので,修正してください.フットパターンの上にシルクを書いてしまったので,半田が乗りません.特にFT232BMの所は忘れずにお願いします.
道具としては,アートナイフなどを用いると便利かもしれません.刃先が欠けて飛んでいかないように注意しましょう.

また,USBコネクタのフットパターンを間違えた(後述)ので,右の写真中央上部の赤枠で囲まれた部分は,シルクではなくてパターンを剥ぎます.
コネクタ足加工
USBコネクタBタイプの足の加工をおこないます.購入直後だと,足が曲げられています.
右の写真のようにまっすぐに伸ばしましょう.ペンチなどで挟んでやれば良いでしょう.ピンセットでも,手元でなら問題なくできますね.
USBコネクタのパターンカット
裏表を間違えたので,写真のようにパターンカットする必用があります.
ジャンパとキャパシタの実装は,コネクタ等の実装時に行います.

実装

それでは,順を追って実装していきましょう.おおよその流れは次のようになります.

  1. SMD部品(IC)の実装
  2. SMD(抵抗/コンデンサ)の実装
  3. ソケット・コネクタの実装
  4. ジャンパ・空中実装(?)

特に説明する必要も無いでしょう.実装写真だけ掲載させて頂きます. 拡大してみれば抵抗値も読み取れる解像度ですので,まず問題ないでしょう.
大きすぎるというのも問題ですけど・・・.あと,フラックスべっとりしているのもよくわかりますね.

実装写真館(違

はんだ面(ジャンパ未実装/先に部品・コネクタまで実装してください)
はんだ面〜実装中〜
はんだ面(ジャンパ/コネクタ/空中実装済)
はんだ面〜実装済〜
部品面(実装済)
部品面〜実装済〜

制御ソフトウェア

ライタFirmware

AT90S2313-10を制御マイコンとして実装します.ライタを作るのにライタが必要だという, 鶏と卵問題は,いつの世にも有るわけで.ここでの配布,もしくは既にライタを作られていれば, そちらを用いて書き込みをお願いいたします.
また,今回(2004-01-03)配布させていただくversionでは,AT90S2313への書き込み・読み込みは確認済みです. すなわち,これを用いて今後のversion-upは各自で行えると云うことです. わざわざDIPにして,ソケットを実装したのはそのためです.若干コストが上がったので,自己書き換え可能なマイコンにしたほうが, 後々のためだったかもしれませんが.
基本的に,PC側の制御ソフトが作られる前に動作確認が出来るよう,intel-hexファイルの読み込み,書き出しをマイコン側で行っております.そのため,本来欲しい機能を削除したりしておりますので,今後の変更は大いにあると思います.

仕様

目的
本仕様は FTS232AM を用いたUSB接続 ATMEL AVRマイコンシリアルライタの仕様である.
概要
プロトコルという名の覚え書きみたいなメモ(ナニ
簡単のため,ASCII文字1文字でコマンドとする。
HEXファイルの認識のため,':'で始まる行は全てintel hexとして扱う.
書き込み開始状態でなければ,':'はエラー扱いね.
基本は大文字。同様でも少し異なるモノは小文字にしてみる.
状態としては, 下記三種がある. Conv-ModeはH/W Resetでのみreturn.
面倒なので,入出力はIntelHex Dumpのみとする。
コマンド
---{Program-Mode/CMD-Mode}
・[p] プログラミングモードへ移行
・[v] get S/W name & ver.
---{Program-Mode}
・[l] leave Programming mode
・[e] chip erase
・[W] PROGRAM write
・[R] PROGRAM read
・[w] DATA write
・[r] DATA read
・[c] detect target device
・[i] 特殊コマンド. targetからデータ入力. "i112233xx" "xx[ret]"
・[o] 特殊コマンド. targetへ データ出力. "o112233DD" "[ret]"
エラーコード
書式
RE:xx[CR][LF]
番号
ラベル/名称 メモ
0x00 正常 OK
0x0? (予約) reserved
0x10 m_ver version ( 0x00[ver:ASCII x4]) ex.) "RE:100.00[CR][LF]"
0x80 m_error unknown command
0x88 m_dwpm_err_fmt M_R/W:: format error
0x89 m_dwpm_err_sum M_R/W:: CheckSum error
0x8A m_dwpm_err_adr M_R/W:: invalid Address(Over)

制御PC側software

未完成/未着手です.
現状,terminalソフトを用いてtextで入出力を行っております.ドライバについては,FTDI社の標準COMポートドライバを用います. 拡張モードドライバではありません.これらは排他的にinstallが可能な模様ですので,注意してください. また,本機ではFT232BMを用いておりますので,FT232AM用のドライバではありません.FT232AM用のドライバでも,認識してwindowsからCOMポートが 増えるようには見えます.実際に通信を行う際に適切な動作をせずにPCがハングアップします.

つかいかた

正直,使いにくいですw
手順を以下に記します.大きく分けて,デバイス認識までと,読み込み・書き込みの3つに分別されます.また,特に断りのない限り,改行など入力しないようにお願いいたします.コマンドは一文字であり,ライン入力処理など行っておりません.

  ☆デバイスの認識まで
  1. 書き込みターゲットへISP結線する.(コネクタ類は適宜用意する)
  2. ライタ接続→COMポート増加( ´ー`)
  3. ターゲット側電源投入
  4. terminalソフト起動(設定は115200bps/Nonparity 8bit data, 1bit stopbit, フロー制御 H/W)
  5. おもむろに"p"と打つ.レスポンスは無いかもしれない.
  6. "c"と打ってみる.これで,デバイスコードを返してくるはず.(2313では,"1E 91 01")
  ☆書き込み
  1. プログラム領域のクリアを行います.おもむろに"e"とだけ打ってください.
    現在,ターゲットデバイスの初期データと同一の値は書き込まないようにコーディングしていますので,初期化しておくべきです.
  2. プログラム領域への書き込みは"W"を,データ領域(EEPROM)への書き込みは"w"を入力します.
  3. そのあとでintel-8hexフォーマットの書き込みたいファイル(AVR-studioなどの出力したもの)をテキスト形式でそのまま送信します.
  4. 途中,チェックサムやフォーマットを確認して,以上が有れば先に記述したエラーコードを返します.
    (0x80の場合,書き込み完了後の改行だけ送信でも出ますので無視してください.)
  ☆読み込み
  1. プログラム領域からの読み込みは"R"を,データ領域(EEPROM)からの読み込みは"r"を入力します.
  2. あとは,intel-8hexフォーマットにて流れてきます.

まぁ,こんな感じです.結構癖がありますが,単純な読み書きは出来るみたいです.


Sunday, 04-Jan-2004 19:55:00 JST