2020年5月13日水曜日

LPC812:LPC-Link と SWD で接続

今動いている状況は、

Pin15 VDD 3.3V
Pin16 VSS  GND
Pin3   PIO0_12 - 3.3V
Pin4   nRESET - 10KΩでプルアップ
Pin6   SWCLK - JTAG_TCLK_SWCLKX
Pin7   SWDIO - JTAG_TMS_SWDIOX

VDD と VSS の間は、0.1μF x 2

 GNSS 受信機で LPC812 を使うためのプログラムが LPCXpressoBoard OM13053 動くようになったので、次はチップで動くようにと作業開始。

 まずは LPCXpressoBoard OM13053 の改造。マイコンボードと LPC-Link の間の 18Pin のコネクタが刺さるようになっている2列の穴の、列の間のハンダジャンパー(0Ω抵抗)を外す。全部外す必要はなくて、回路図 4ページの R65, R64, R61 だけで OK。
 そのあと、外した部分をまたぐように 2Pin のピンソケットを立てる。まずは外した部分をブレッドボード用のジャンパー線でショートさせて、いままで使っていたマイコンボードが今まで通り動くことを確認。

 次は LPC812M101JD20変換基板にハンダ付けしたものをブレッドボードに載せ、

Pin15 VDD 3.3V
Pin16 VSS  GND
Pin4   nRESETPin6   SWCLK - JTAG_TCLK_SWCLKX
Pin7   SWDIO - JTAG_TMS_SWDIOX

と接続。IDE - Quickstart Panel - Debug をクリックすると、Target Discovery ダイアログが表示された後、長く待たされて SWD Configuration ダイアログが表示されるが、0 available SWD devices detected.
 何かがおかしいと回路図を調べていくと、nRESET がプルアップされている。プルアップして再度実行すると SWD Configuration ダイアログはすぐに表示されるようになったが相変わらず 0 available SWD devices detected.

 半田不良を疑って、断線・ショートのチェックをしたり、回路図を何度も調べたが状態改善せず。あきらめて LPC81x User manual(Rev.1.6) を開いて SWD の動作シーケンスを調べていくと pp329 に '
For debugging purposes, it is useful to provide access to the ISP entry pin PIO0_1. This pin can be used to recover the part from configurations which would disable the SWD port such as improper PLL configuration, reconfiguration of SWD pins, entry into Deep power-down mode out of reset, etc. This pin can be used for other functions such as GPIO, but it should not be held LOW on power-up or reset.
という一文を発見。 次ページの図にも、'PIO0_12 or PIO0_1' が SWD に無関係なのに書かれている。ここはひとつエイ・ヤーと Pin3 の PIO0_12 を 3.3V に繋いで再実行。

 するとエラーが変わった。ターゲットにはつながったが、Flash ROM の書き込みで失敗しているっポイ。そしてそのアドレスが毎回変わる。何かが不安定になっている、ということで電源にパスコンを入れたらちゃんと動くようになった。回路図にもパスコンは入っていたのだが、省略してしまっていた...。ちなみに、Pin3 は 10kΩでプルアップしても、なぜか動かない。

Pin3 の挙動がいまいちよくわからないが、とりあえず LPC-Link から LPC812 に書き込みはできた。

 2020/05/16 追記
 Pin3 を 10kΩプルアップではだめで、3.3V で直結でうまくいった理由が判明。Pin3=PIO0_12 は High-drive output pin で、Vdd 3.3V の時の Iol が 4mA ある。3.3V/10kΩ でプルアップするときに流れる電流は 3.3/10000 で 330μA で 4mA の 1/10 以下、全然プルアップできていない。100Ωぐらいでプルアップすればよいのだろうが、まぁ、短時間だから 3.3V で直結でよいことにしよう。

 いや、よく見るとStandard pinも Iol は 4mA。違うのは Ioh(4mA vs 20mA)。なぜ LPCXpressoBoard OM13053 のマイコンボードは ISP_EN が解放でも SWD が起動できるのかは、相変わらず不明...





0 件のコメント:

コメントを投稿