楽天市場
[無料でホームページを作成] [通報・削除依頼]

極小ブートローダー PIC10F322 其の2

前回、PIC10F322用の68ワードのブートローダーを紹介しました。

今回は同じブートローダーをUSB-シリアル変換を用いて実現する方法を検討します。


1.USB-シリアル変換器
USB-シリアル変換器といえばFT232RLを搭載したAE-UM232Rなどがメジャーですが、私は所有していません。
今回はPIC18F14K50を使用して、RI信号を検出可能なUSB-シリアル変換器を試作しました。
ピンの配置はAE-UM232Rに合わせています。
ブートローダー用に製作したのでハードウエアフロー制御には対応していません。
img_20150117-123911.jpg
img_20150117-124002.jpg


2.USB-シリアル変換器の回路
回路は非常に簡単でPIC18F14K50とUSBコネクタ、セラミック発振子、抵抗1つとコンデンサ2つで製作できます。
AE-UM232R的に使用したいので12ピンのメスソケットを2つつけて基板化しました。
img_20150117-123727.jpg
img_20150117-124147.jpg

3.USB-シリアル変換器のファームウエア
"Microchip Libraries for Applications"の"Device - CDC - Serial Emulator"のファームウエアを改造して使用します。

"MPLAB IDE"対応版のVersion: v2013-06-15のインストーラーを使用しました。
こちらからダウンロードできます。
http://www.microchip.com/pagehandler/en-us/devtools/mla/

この版はUSB-CDCファンクションの"SERIAL STATE"コマンドに対応していますので、わずかなコードを追加するだけで
仮想シリアルポートのRIピンの信号を読み出すことができます。

<コード変更の要点>
(1)\USB\Device - CDC - Serial Emulator\Firmware\usb_config.h
#define USB_CDC_SUPPORT_DSR_REPORTING 文を有効にする。(コメントを外す)

※ これによりファームウエアはPCからの"SERIAL STATE"コマンドに応答します。

(2)\USB\Device - CDC - Serial Emulator\HardwareProfile - LPC USB Development Kit - PIC18F14K50.h
ヘッダーファイルの最後に以下の2行を追加
    #define UART_RI PORTBbits.RB6
    #define mInitRIPin() {TRISBbits.TRISB6 = 1;}

※ RIピンにPIC18F14K50のRB6を割付けます。
※ RB6を入力に設定する初期化コマンド mInitRIPin() を定義します。

(3)\Microchip\USB\CDC Device Driver\usb_function_cdc.c
?void CDCInitEP(void)内
mInitDTSPin();  の次に以下の行を挿入

mInitRIPin();

※ void CDCInitEP(void)内でRB6を入力に設定

?void CDCNotificationHandler(void)内
    //Check the DTS I/O pin and if a state change is detected, notify the 
    //USB host by sending a serial state notification element packet.
    if(UART_DTS == USB_CDC_DSR_ACTIVE_LEVEL)
    {
        SerialStateBitmap.bits.DSR = 1;
    }  
    else
    {
        SerialStateBitmap.bits.DSR = 0;
    }

この文の後に以下の文を挿入
    //Check the RI I/O pin
    if(UART_RI == 1)
    {
        SerialStateBitmap.bits.RingDetect = 1;
    }
    else
    {
        SerialStateBitmap.bits.RingDetect = 0;
    }


※ CDCNotificationHandler(void)内でRIピンの情報を書き加えます。
※ SerialStateBitmap.bits.RingDetect はusb_function_cdc.Hで定義済み。


4.PIC10F322との接続
USB-シリアル変換器のTXDピンとPIC10F322のRA3ピンを接続
USB-シリアル変換器のRIピンとPIC10F322のRA2ピンを接続
電源(+5V)は電源SWを介してUSB-シリアル変換器から供給
img_20150117-124722.jpg

5.PIC10F322ファームウエアの変更点
USB-シリアル変換器によりTXD信号の極性が反転するので、ファームウエアで反転信号に対応する必要がある。
(ASMファイル中のDirectRXの定義文をコメントアウトする。)

6.Tera Termマクロの変更点
マクロ中の以下の文
connect '/C=1 /LA=E' 
C=1の部分を仮想シリアルポートが使用するCOM番号に合わせる必要がある。


上記ソフト一式は以下からダウンロードできます。

ダウンロード先

Bequest333のページ(別館)

http://hp.vector.co.jp/authors/VA058115/

https://drive.google.com/file/d/1E5wTlFtRnhSResahHP_ku85072yoO7tf/view?usp=drivesdk









.