e-tipsmemo

ごった煮

Nucleo J-Link化

STM32の開発でJ-Linkというデバッガーがよさそうらしいので
手元のNucleoで試してみる。

準備

今回試すのはNucleo-F401、
ST-Linkの基板が隣にくっついているので
このST-Link部分をJ-Linkにして、
STM32F401REに書き込み、デバッグしてみる。

メインループ
STM32Cube MXのmain.cにあるメインループに書き足す。

while (1)
{
  /* USER CODE END WHILE */
  HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
  HAL_Delay(1000);
  /* USER CODE BEGIN 3 */
}

J-Link化

何はともあれNucleoのST-Link部分をJ-Linkにすることが必要。
https://www.segger.com/downloads/jlink/#STLink_Reflash
f:id:katakanan:20190330010542p:plain

ST-Link書き換え用のソフトウェアを手に入れる。

Nucleoをつなげるとデバイスマネージャーには
ST-Link V2などが認識されている。

STLinkReflash.exeを起動していくつかの同意事項を確認した後、
書き込みを行う。

f:id:katakanan:20190330011002p:plain
バイスマネージャーには以下のようになる。
f:id:katakanan:20190330011340p:plain

J-Linkソフトウェアをインストール

https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack
J-Link Software and Documentation Packを入れた。
f:id:katakanan:20190330013445p:plain

J-Link GDB Server Config

f:id:katakanan:20190330013339p:plain
Nuckleoベースだったので、USBでつなげている。
MCUを選択。
SWDでつながっている(SWDIOとSWCLK)

J-Link GDB Server起動

f:id:katakanan:20190330013936p:plain
起動すると、GDBからの接続待機になる。

arm-none-eabi-gdb

WSLから

arm-none-eabi-gdb test.elf
target remote localhost:2331

GDBの”waiting for connection”が緑になる。
f:id:katakanan:20190331115300p:plain
あとは

load
continue

でelfが書き込まれた後に、
実行が始まる。
continue前に

b HAL_GPIO_TogglePin

とすれば、ここで実行が停止する。
f:id:katakanan:20190331115820p:plain

Amazonでj-linkのデバッガーを探したが
そのものはなかった。
代わりに以下のモジュールにはj-Link Lite SEGGERがついてくるらしい。

STM32Cube MXプロジェクト生成

自分の使いたいMCUを検索して右上のStart Projectする。
f:id:katakanan:20190324190425p:plain

Pin Configuration

を適当に
f:id:katakanan:20190328004928p:plain
FPGAならQuartus 13とかProject Navigatorとか
かなり昔からこんな画面のPINコンフィギュレーションソフトウェアがあったのに
代表的なMCUにはなぜないんだろうと思っていた。(PICとかAVRとかSTMも)(あったのかもしれないが)

外部クロックなどSystemに関係する機能はここでオンにしておく。
例として外部クリスタルを使う場合は以下を設定する。
f:id:katakanan:20190329220845p:plain

Clock Configuration

f:id:katakanan:20190328005143p:plain
データシートで見るようなクロックツリーがGUIで操作できる。
ユーザーが本当に求めていたものという感じだ。
外部クロックを使にはHSEをオンにする必要がある。

f:id:katakanan:20190329221042p:plain

Project Manager

ではコード生成するばしょや
Toolchainによってその形を適当にしてくれる。
f:id:katakanan:20190328010040p:plain
今回はWSLでmake + arm-none-eabi-gccでビルドしようと思うので
Makefileを選択。

Tools

ではいろいろな環境を設定できるらしいが今回は無視
f:id:katakanan:20190328010306p:plain

Code generation

を押すと指定した場所に必要なヘッダーファイルとともに
main関数の存在するファイル群が生成される。

f:id:katakanan:20190328010744p:plain
これがいわゆるStdPeriph_Libraryと比較されるHALライブラリか

mainまで作られてるので

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt update
sudo apt install gcc-arm-embedded

だが、リンカスクリプトが空なので自分で書かなければならない?
→生成しなおしたら空じゃなかった。

とりあえず
makeはできる。

STM32Cube MXを導入

MXCubeはStdLibの代替になれるぐらいには洗練されたと聞いたので
ようやくSTM32Cubeを利用するためにインストールする。

インストーラーをダウンロードする。
www.st.com

f:id:katakanan:20190324173737p:plain
登録しなければならないらしい。
メールに送られてくるリンクからダウンロードする。

f:id:katakanan:20190324174813p:plain

f:id:katakanan:20190324174958p:plain

MCU選択・ボード選択からできるようだ
f:id:katakanan:20190324183058p:plain

次からプログラムをしてみる。

STM32マイコン徹底入門 (TECH I Processor)

STM32マイコン徹底入門 (TECH I Processor)

KiCAD BGA基板設計④ 到着編

PCBGOGOの注文画面によると
注文してから2-3日で基板の製造が終わったようだった。
f:id:katakanan:20190313002138p:plain
素晴らしい速さ。

Digikey基準で考えて、
Digikeyの在庫表示では「即時」の物しか部品は入れなかったが
基板が完成してから部品を注文しているのか何かがリードタイムに引っかかったのか
2週間と数日経ってから部品が届いたので、実装を開始するといったメッセージが届いた。
もしかして、Digikeyで頼んでこちらから送ったほうが早かったのだろうか?
(これはこれでアメリカ(Digikey)から買った部品を中国には送るのはいろいろと手間がありそうだが)

また部品実装は進捗表示がないので今どのようなステータスなのかがわからない。

その後、数枚製造された基板の表裏写真をメールで送信される。
そこでOKを返信すれば、すべての基板が実装される。

その後、外観検査がされた後、発送された。

DHLで発送されて受け取り日時を指定できる。

基板には捨て基板がついていて、そこに注文番号がシルクで入っていた。
BGAの実装は以下のような感じ
f:id:katakanan:20190328013555j:plain

KiCAD STEPファイル Fusion360

e-tipsmemo.hatenablog.com

KiCAD 5の目玉機能でSTEPファイルのExportに対応したことがあるが
前回は失敗したので試してみる。

f:id:katakanan:20190203160237p:plain

Footprintにモデルがないと、エラーが出る。
最終的には各部品の3DモデルがSTEPのものだけが出力される
f:id:katakanan:20190203161133p:plain

Exportしたものだが、CやRはKiCADデフォルトのモデルwrlなのでExportに失敗している。
細かい部品はあるだけ重いのでなくてもいい気がする。
f:id:katakanan:20190223014101p:plain
しかしパターンがないので見た目が寂しい。

3Dの部品を非表示にして
KICADの3Dビューアから正面画像をPNGでExportして張り付けてみることにする
f:id:katakanan:20190223014931p:plain

基板表面を選択して、下絵を挿入。
f:id:katakanan:20190223015049p:plain

キャンパスの不透明度を100
透過表示をオフ
イメージを選択をクリックして先ほどキャプチャーしたパターン画像を入れる
f:id:katakanan:20190203164846p:plain

まあよさそう
f:id:katakanan:20190203165130p:plain

Fusion 360 マスターズガイド ベーシック編

Fusion 360 マスターズガイド ベーシック編

KiCAD BGA基板設計③ 発注編

作ったBGAの基板を発注するが、
BGAはどう考えてもリフローしないと実装できないので、初めて実装サービスを利用してみる。

PCBGOGOの実装サービス

Digikeyの部品かもしれない」?
「Mouserの部品かもしれない」?
「違うところ」かもしれないらしい。
問い合わせてみたが、どこから買うとは言っていなかった。

ちなみに
Elecrowでは
DIgikey」か「Mouser」か「お任せ?」だった気がする。

ガーバーデータ

PCBGOGO向けのガーバーデータをKiCADから出す方法は
ググれば適当にでる。
出力したらKiCADのガーバービューアーで確認する。

PCBGOGOのサイト上でも確認できるようになっていて驚いた。
f:id:katakanan:20190223020429p:plain

ポジションデータ

www.kicad.xyz

実装指示書

P板だと実装指示書という名前に対応するものだと思う。
BOM出力機能を使う。
f:id:katakanan:20190223021447j:plain

ここで回路図を作るときに
フィールドURLを指定していると楽
f:id:katakanan:20190223022124p:plain
(実際はDigikeyの部品を使うわけではないが参考として書いてある)

おそらく
Reference、数量、Value代替可否、(URL)
があればよいはず。
ダメでもPCBGOGOのデータチェックでメールがくる。

アップロード

f:id:katakanan:20190223023151p:plain
f:id:katakanan:20190223023211p:plain
基板製造と部品実装を埋めてアップロードすれば
以下のような状態になるので、
f:id:katakanan:20190223022952p:plain
データチェックが済むのを待つ。
料金を払えば、製造が開始される。

KiCAD BGA基板設計②レイアウト編

e-tipsmemo.hatenablog.com

デザインルールを設定する

Capabilities | PCB Online | Low volume pcb assembly | PCBGOGO
PCBGOGOの製造能力より
f:id:katakanan:20190120222158p:plain
こういうことだろうか。

BGA100ぐらいをレイアウトするときも本当は4層あった方がいいけど値段が高そう。
(256ピン以上になると今のPCBGOGOのデザインルールでは配線できないし、6層、8層と必要になってくる)
(レイアウトサービスを頼めばできるが、それはDIYなのだろうか?)
参考:https://www.xilinx.com/support/documentation/user_guides/ug1099-bga-device-design-rules.pdf

趣味だしケチって2層でごり押しする。
マイコンは割と2層でうごいてくれそうな気がするけど、FPGAとかはよくなさそう。
どちらにしろ、信頼性の重要なアプリケーションでは使わないけど。

レイアウトは本当にやるだけの作業なのでやるだけ
2層なので最後の形をイメージしながらやらないといけないかもしれない。

中央の4pin連続した場所への接続をどうするか考えたり、電源の"島”を作ったりと。
4層発注できればこんなこと考えなくていいけども。趣味なので。

※これは適当。
f:id:katakanan:20190206223139p:plain


最後はデータ出力と発注編

STM32マイコン徹底入門 (TECH I Processor)

STM32マイコン徹底入門 (TECH I Processor)