STM8Sディスカバリーで遊ぶ [STM8S]
STM8Sディスカバリー の ST-LINK 部分には STM32F103C8 が使われていて、
これを使って遊ぶのが流行っているようです。
Maiple_mini_bootloader というのがあって 試しに書いてみて、
今回、2種類の接続法が試せましたのでまとめてみました。
1 Flash Loader Demonstrator からのプロテクト解除と書き込み
BOOT1をGNDに繋ぎ、UARTを使って 書き込む方法、UARTのTXは出力なので相手のRX入力に クロス接続します。
2 ST-LINK Utility からの読み書き(プロテクト解除していないとアクセスできません)
JTAG端子には 4pinは STM_JTCK 5pinは STM_JTMS 8pinは STM_JRST に成っていて、SWD_STLINK の接続 1pinは10k_GND 2pinはT JTCK 3pinは GND 4pinは T JTMS
SWDの 1pinは普通使わないので 19pinのT JRST に繋ぎ リセットスタートに使うつもりだったんですが、間違えて18pin のT_NRSTに繋いでしまいました、しかしこれでも動作して書き込めます。
pinを使わないなら T JRSTはSB11 から取ることが出来ます。
本来のリセットなら 7pinのNRST入れると良いはずなんですが、JTAG用端子を使ったのでこれでも動くんでしょうか? NRST入力はC11の所にあります。
完成して、USBから何かの動作をさせる場合は
STM8SのSTM32F103C8でないと なぜか USB VID PID が0になってしまい 不明なデバイスとしか認識されません。
ここのところを調査中ですが、まだ探しきれていません。
追記 書き忘れていましたが、信号ラインはアクセスする側だけ有れば良く、
後は電源3.3vとGNDが繋がっていればよいのですが、繋がっていなくともUSBハブなどが同じであれば、USBを差すことによってターゲット側と繋がっるので省くことも出来ます。
百均商品 の使い方 [百均商品]
こんにちは
百均でついでに色々買ってしまいました。
(千円を超えたら・・?、おそらく一種のストレス発散手段ですな。)
これは使える見込みがあると思っても、いざ使ってみると使えなかったり、期待していなかったものが、有効に使えたりと面白いものです。
良かったもの、 大のキティー ちゃんファンですから 使えそうな コスメケースを何種類かゲット。
蓋付きの7cm角10cm高さの金属缶 シールドが要るような用途に最適、この大きさのは滅多にない。
上下とすると上が少し大きめ、下がスマートな、マグネット付きチョーク消し、蓋の上の所の隙間から、細いドライバーなどでコジ上げると、カバーが外れ、中には紙の飾りがある、底裏の発泡材を半分の厚さにして、マグネットを外せば、おしゃれなケースになりそう。
深さが1cmくらいあるので、幅11mm 長さ8cmくらいの基板が入る。(AE-FT2232)はpinを短くすれば何とか入る。
デンタルフロスアンワックス(ケースが目的)を1個、防湿サプリケースを1個、ちょっと小さすぎたかな。
乾電池式スチロールカッター ポリプロケースの邪魔な仕切り板をカットすることが出来る。
熱戦ワイヤーを少し短い目にして、アルカリ電池をセットし、
ノコギリのような感じでこすりつけながら 5mm 位進むと元まで戻りラジペンで引っ張ってやると隙間が出来て切り離すことが出来る、
そのままどんどん進むと解けた分が固まってまた引っ付いてしまう。
少し使い方が難しいが、値段から云って、こんなモンでしょう。
例の水晶温度計 [THS-206]
こんばんは
HCUのCMOS探しても直ぐ出てこなかった。
Yオクで探しても見つからなかったので、百均に行ったついでに、クオーツ目覚まし時計を買って帰り、
32.768KHz の クオーツと入れ替えた、しばらく計ってみると、1.22倍の速度で進んでいるから、
ほぼ間違いなく40KHzで発振しているみたい。
問題はこの発信器と12.8MHzを使ってどのように、温度を計算するか?
プローブとして使ううにはどのような回路を使うか?
おそらく水晶の直ぐ近くに ローディング回路、発信力調整回路 を付け、
受信箱の所にバイアス回路とMPUの第二発信回路、MPUの基準発信回路、
後は、補正演算回路、調整回路(2点位を調整すると全域で補正されるような)
ここが結構難しい、
1 次周波数温度係数 α -26.0 × 10-6 / °C[±2 %]
2 次周波数温度係数 β -5.8 × 10-8/ °C 2[±8 %]
3 次周波数温度係数 γ -1.5 × 10-10 / °C 3 Max.
3次関数を手早く処理する、一番良い方法は?
スリット用に2種類のプローブアダプタ [LCRメーター接続]
一番上は4線ともシ-ル度線にして、極版間にはシールド版があり、同性極間での静電結合を遮断しました。
下は同性極を1本のシールド線にして、異性極間の静電結合は電源側が負担し、検出側に影響を与えないようにしました。(極版間にはシールドがありません)
両方とも銅みたいに見えますが、AKI の 0.3mm の チップ用パターンと ベタパターンの 金メッキ版 です。
結果はほとんど変わらず、OPENを20cm離してキャリブレーション後、
4.0pfほど示しかえって近づけると表示が減少しまた増える、いわばオーバーコレクトのような状態になりました。
もっと下に見えるのは アンプ社で作られた 基板用コンタクトプローブですが、ベリリューム銅に金メッキされています、
これをピンセット型のさきっちょに仕込めるかやってみます。
マックスファクターのプラグ版には少し太い、シールド線を2本式で使い、キャリブレーションの影響は、かえって少なくなっています。
ST-LINKユーティリティー [STM-Link]
この中の configure をひらくと JTAG SWD SWIM が表示されます。
これはこれらのTOOLがほぼ同等だと仮定して もそれ以外に COM(RX,TX) でのアクセスがあり、
このモードにするには BOOT0を 3.3Vにプルアップすると
大容量メモリとして表示される ST-LINK が解除され 認識できないデバイスと表示されます。
UART(COM RX TX) でアクセスで出来ますが、RX を10kで3.3VにPULLUPする必要があ利ます、
何かの都合でかでこのモードに入らなかった場合は USB コネクタを差し直すと 認識をするようです。
出来れば、いちいち抜き差ししなくても良いように、電源SWを付ければ済みます。
しかし問題は 0penOCD ヴァーサルーン DUF ST-LINK STVP JTAG SWD SMIW などたくさん
有りすぎてややこしすぎる。
STM8S_D の SWD の接続試験 だけ方法が見つからず済んで居ません。
追記
ST-LINKの謎
8bit も 32bit も ST-LINK の名で呼ばれていますが マニュアル類を読むと SWIM と SWD
でファームウエアを分類しているようです。
両方とも STM32F103C8 が使われているが、接続名や機能が同じなのかがよくわかりません。
SWIM
46-SWIM_IN 45 と 220Ω と 47Ω で繋がっている 680Ω で 3.3vPULLUP
43-SWIM_IN 入力用
42-SWIM_RST 41 と 220Ω と 47Ω で繋がっている リセット 出力用
41-SWIM_RST_IN 入力用
22-SWIM
21-SWIM_IN
SWD
40-STM_JTMS
39-STM_JTCK
38-STM_JTRST ターゲットには使われているが 引き出されていない
37-STM_JTNRST
34-STM_JTDI
27-STM_JTMS
26-STM_JTCK
JTAG? SWD を一部含む
27-T_JTMS
26-T_JTCK
19-T_JTRST
18-T_JTNRST
17-T_JTDI
16-T_JTDO
15-T_JTCK
COM
31-RX-10k-3.3v フローティングでは 初期認識しない
30-TX
BOOT COM 専用
44-100K-GND
20-GND
同じ端子名があったり裏で繋がっていたり、基板タイプによって接続されていなかったりと複雑です。
SWD の試験は STM32のターゲットボード TMS-sb17-PA13 TCK-sb18-PA14 RESET#-7 に
接続すると判るはずですが、 なんだか乗り気でなく 横着しています。
追記
COM 接続モードへの入り方を調べてみました。
BOOT0 に押しボタンSWを付け押したままUSBを差し込むと ST-LINKが認識されないと表示され、
USB-COM を接続しますと フラッシュローダーデモンストレーター が立ち上がり 動作を始めます。
しかし途中で押しボタンスイッチを離してしまうと 動作は停止して PCをリブートするまで、
解除できません、タスクマネージャ等で無理に停止してもMSに報告するかと出るだけで、どちらを選んでも、解除することは出来ません。
また USB-COM ポートに 3.3vが出ている場合、ST-LINK側のUSBを抜いても、3.3vが
供給されたままなので、ほか回りの電源を含めて一度切る必要があり、
BOOT0 線もスライド式やジャンパピンなど途中でとぎれることがない接続方法を選ばなければならないようです。
チップ部品用に簡易接続版を作ってみました [LCRメーター接続]
スリット隙間に 2枚背中合わせにした、金メッキプリント基板を差し込んで引き出し
電源+ 検出+ と 電源- 検出- をそれぞれ1本(合計2本)のシールドにして、キャリブレーションしてから、
計ってみますとプローブが中途半端な位置でゼロ(容量)を示しそれより近づいても離れても、
測定値が増えます。
もうちょっと精度を上げたいので プリント基板は中間にガード層を挟んだ3枚構造に変更し、
各線をそれぞれ1本ずつの シールドにして4本構成で試してみます。
結果はしばらくお待ちください。
STM8S-DISCOVERY の シリアルブート [STM8S]
STM8S-DISCOVERY に載っています ST32F103C8 の シリアルブート を試してみました。
STM8S_D ST-LINLK部分と と USB-USART を使います 。
ブートには BOOT0 と BOOT1の状態で ブートモードが変わりますが、BOOT0 44pin
は普通100kでGNDに接続されています、ここに3.3vをかけてやると、
RAM -512 bytes starting from address 0x2000 0000 are used by the otloader firmware
System memory - Kbytes starting from address 0x1FFF F000, contain the
bootloader firmware にロードされるようです(AN2606に有ります)
このモードでSTM8S_DをPCに繋いでもST-LINKは認識しませんが、問題はありません。
Flash loader demonstrator を起動しますと認識して下のような画像が出ます。
外部のUSB-USART コンバータはPL2302HX-Aを使いました。
WIN-XPが認識しないので 「PL2303_Prolific_DriverInstaller_v1_7_0」を探してインストールできました。
USAER1_RX 31pin 入力 に外部の TX を繋ぎ
(この端子は途中でフロート状態にならないように 10k で 3.3V か GNDに繋いでおきます)
USART1_TX 32pin 出力 に外部の RX を繋ぎます。
どちらかを判別するのが面倒なので 両方とも 10Kで3.3V にプルアップしました。
UEWを繋ぐのが難しいので 31pin 32pin に近くて、裏に何も通っていないGNDパターンに 0.8φの穴を空け、軽く面取りをして裏から先を半田揚げした線をちょうどの所まで差し込み、竹爪楊枝で押さえて半田付けをしました。
確実についているのを確認してから、瞬間接着剤を流して、ICの足ごと固定しました、瞬間接着剤は後からアセトンで溶かすことが出来ます。
ここでプロテクションを解除しますと もうST-LINKではなくなってしまいます。
42pin 43pin は後で使うようで足揚げしたりしますが、SWIMの所やSTM32F103C8の裏にもパターンがあるので、特には上げなくても使えます。(パターン図をご覧ください)
STM8S-DISCOVERY の STM32F103C8T6 のプログラムが出来ました [STM-Link]
STM32VLDISCOVERY で STM8S-DISCOVERY の STM32F103C8T6 のプログラムが出来ました。
STM32_D のST-LINK(本体はついたままでジャンパピンを外します、sb11からNRSETも使えます) と STM8S_D のST-LINKを使います。
改造要点は SWD コネクタ CN2 の1番ピンが10KオームでGNDに繋がっていますが。
このピンは使わないと思われますので、10Kを外して STM32F103C8T6 の 18pinを引き出し 1pinにつなぎます。
元は19pin-T_JRST が使われていましたが 18pin-T_NRSTを使うと SWD と T_NRSTで JTAG(相当?)として動作させられます。
2列の主pin列の3pinに 3.3Vが有ります。
--------------------------------
これらを STM8S-DISCOVERY の JTAGコネクタ NC5 に1345678と有りますが、
1pin-3.3v 4pin-STM_JTCK 5pin-STM_JTMS 7pin-GND 8pin-T_NRST の様になっています。
CN2 STM32VLDISCOVERY CN5 STM8S-DISCOVERY
1 T_NRST 8 STM_JRST 3 NC 6 NC
2 T_JTCK 4 STM_JTCK
3 GND 7 GND
4 T_JTMS 5 STM_JTMS
(3)3.3v 1 3.3v
このようにつなぐと SWD (JTAG) と認識して STM32 ST-LINK Utility ターゲット オプションバイト
でリードプロテクトを解除でき(その代わりすべてFFが書き込まれてしまいます)
リードプロテクトを解除すると STM32 ST-LINK Utility と STVP からもアクセスできるようになります。
STM32F0DISCOVERY
http://akizukidenshi.com/catalog/g/gM-06255/
STM32L-DISCOVERY
http://akizukidenshi.com/catalog/g/gM-05366/
これらには T_NRST が出ていますので 18pinの引き出しが要りません。
RDB1768cmsis2_uIP の Ethernet接続 [NXP LPC1769]
LPCXpresso でプロジェクトをコンパイルしてみました。
RDB1768cmsis2_uIP をフォーカスして, 上のprojyect propeates c/c++build MCUsetting
で LPC1769 を選びます。
main.c 41行から IPアドレスを決めます。
#define MYIP_1 192
#define MYIP_2 168
#define MYIP_3 0
#define MYIP_4 24
109行 を // LCDdriver_initialisation(); でコメントアウト
uipopt.h 127行から MACアドレスを決めます。
(大抵は00から始まって居ますが、記載内容の決め方はよくわかっていません)
#define UIP_FIXEDETHADDR 1
#define UIP_ETHADDR0 0x00 /**< The first octet of the Ethernet
address if UIP_FIXEDETHADDR is
1. \hideinitializer */
#define UIP_ETHADDR1 0x10 /**< The second octet of the Ethernet
address if UIP_FIXEDETHADDR is
1. \hideinitializer */
#define UIP_ETHADDR2 0x12 /**< The third octet of the Ethernet
address if UIP_FIXEDETHADDR is
1. \hideinitializer */
#define UIP_ETHADDR3 0x13 /**< The fourth octet of the Ethernet
address if UIP_FIXEDETHADDR is
1. \hideinitializer */
#define UIP_ETHADDR4 0x14 /**< The fifth octet of the Ethernet
address if UIP_FIXEDETHADDR is
1. \hideinitializer */
#define UIP_ETHADDR5 0x15 /**< The sixth octet of the Ethernet
address if UIP_FIXEDETHADDR is
1. \hideinitializer */
start here の デバッグをクリックしますとプロジェクトのビルドが始まり、エラーがなければ
自動的に SWD から書き込まれますが、コネクト to エミュレーターが見つからず進まないことがあります。 この場合は USBケーブルを差し直すと LPC-LINK を見つけてくれますので、 OK で書き込みが始まります。
ブラウザを立ち上げ http://192.168.0.24/ を呼びますと、
http://192.168.0.24
Code Red RDB1768 development board running uIP
Front page
File statistics
Network statistics
Network connections
These web pages are served by a small web server running on top of the uIP embedded TCP / IP stack.
Click on the links above for web server statistics.
が表示されます。
コマンドプロンプトを起動し arp-a を打つと
C: \ Documents and Settings \ user> arp-a
Interface: 192.168.0.2 --- 0x2 (PCのデータ)
Internet Address Physical Address Type (MACはPhysical Addressと表示されます)
192.168.0.1 XX-XX-XX-XX-XX dynamic (デフォルトゲートウエイ)
192.168.0.24 00-10-12-13-14-15 dynamic (test品のデータ)
と表示されます。ブラウザには次のように表示されます。
http://192.168.0.24
Code Red RDB1768 development board running uIP
Front page
File statistics
Network statistics
Network connections
These web pages are served by a small web server running on top of the uIP embedded TCP / IP stack.
Click on the links above for web server statistics.