PicWriterUSB:ハードウェア編

PicWriterUSB_03

PICマイコンとの接続方法と必要な周辺回路

こんにちは、リゲル・インテリジェンスです。

RP2040をベースにPICマイコン(PIC16F1823)の書込み器を作成しましたので、ハードウェアの概要をまとめておこうと思います。といっても特別なところは無く、接続の概略図は下記になります。

PicWriterBlock01

  • PIC16F1823はLow Voltage Programming(VDD単一電源での書込み)をサポートしていますが、一度High Voltage Programming modeにするとVPPに9Vを印加しないとConfiguration memoryを書き換えられないのでLVPには戻せないとか、結局は9Vが必要になりそうなのでHVPのみ使用しています。
  • VPP=9Vのラインにはそれ程電流は流れないのですが、手元にあった可変電圧タイプの昇圧DDコンバータを利用しています。PICのVPPはON/OFFのコントロールが必要なので、レギュレータの後段に何らかのスイッチが必要です。今回はNch MOSFETを使用してレベルシフタを構成しています。
  • VDD=3.3VはSeeed XIAO RP2040内蔵のレギュレータ出力(11ピン、3V3)を利用しても良いのですが、こちらもPICマイコンに対してはON/OFFのコントロールが必要です。今回はコントロール端子付きの3.3Vレギュレータを別に用意しました。
  • ICSPDATとICSPCLKのラインにシリーズ抵抗を入れていますが、これは気休め程度ですので無しでも問題無いでしょう。
  • 上記の図に無い部品としては、3.3Vレギュレータ出力に放電抵抗として2.2KΩを入れています。(それでも電源OFF時はかなりダルで、ソフト的に100msecのウェイトを入れています)
    あと、VDDの通電確認用にLEDを入れています。
  • VPPに比べVDDの動作がかなりダルいので(私が手抜きをしたせいですが)、PICマイコンをプログラミングモードに入れるためにVDD-FIRST ENTRY MODEを使用し、追加のウェイトを入れています。
    下記の図中にある、TENTSはスペックでは100nsecですが、今回作成したPicWriterUSBでは1msecのウェイトを入れています。またTEXITの経過後に追加で100msecのウェイトを入れています。処理時間への影響はありますが最初と最後に一回だけですのでまあ良しとしました。

    Progmode_entry_02

     ※PIC16F/LF182X/PIC12F/LF1822 Memory Programming Specificationより抜粋

  • 下記はLOAD CONFIGURATIONコマンドのICSPCLK/ICSPDATの波形図ですが、I2Cに少し似ている=うまく応用できないかなと思いながらRP2040のData sheetを眺めていたところ、PIO(Programmable Input/Output)ブロックというソフトで動作を設定可能なハードウェアI/Oが使えそうです。PIOはCPUとは独立してしかも高速に動作するので、ICSPCLK/ICSPDATのようなシーケンスを組むには最適です。

    PIC_command01

     ※PIC16F/LF182X/PIC12F/LF1822 Memory Programming Specificationより抜粋

    ICSPCLKは1周期=200nsecと高速ですが、RP2040のPIOを利用して208nsecにて設定することが出来ました。
    (PIOの詳しい設定等はソフトウェア編にて)
    実際に観測した波形は下記になります。CH1がICSPCLK、CH2がICSPDATです。

    wave02

    wave01

次回以降、RP2040ソフトウェア編ということでまとめていきたいと思います。

コメント

タイトルとURLをコピーしました