製作記 同人SG基板

 PRUGミーティングでじがへるつ工房さんの同人ハードウェアの話しがあり、頒布されている4ch SG基板を入手して作ってみた。
 趣味のDDS・PLL 工作ノートとGitHubが製作する場合の資料となるが、これだけで作ろうとすると結構たいへんな状態かもしれないので、製作記として残すしておくことで、同様な基板を作る人、設計者を間接的に支援できたらと思う。
 たぶん作者はSWG(Serial Wire Debug)を使う前提で基板を作っているので、シリアル通信でISP(In-System Programming)を使って書き込む場合には若干の改造、追加部品が必要になるので、事前に使える環境を確認してから製作に取り組むと良い。

部品を集める

 ソフトと違ってハードなので部品を集めなくてはならないが、部品表が見当たらないことから作成。
 また部品をオーダする必要があるので、mouserに依頼する前提のcsvファイルを作成した。ただ1つだけmouserではパターンに合う形状のICがないので、これだけは秋月電子で購入する必要がある。
 ほかの部品も秋月で買った方が安いものもあるので、このあたりの情報も入れてあるので参考にして欲しい。
 またチップ抵抗などは2012サイズのパッドなので、この大きさでBOMは作成してあるが、手半田の場合には1608サイズな方が作業しやすいかもしれない。ただ慣れないと中央に部品が来なくなる可能性もあるのでBOMは作成していない。1608サイズなら手持ちがあるという人も多いかと思うので、サンプルブックから拾っていくなどするならオーダする必要が無いためである。

部品番号順 bom1
部品種類別 bom2

MOUSERでオーダ

 知っている人も多いと思うのだが、これといった紹介ページを見つけられなかったので、mouserでcsvファイルをアップロードして購入する方法を書いておく。
 カートをクリック、ファイルを閲覧するをクリックすると、ファイルを選択してアップロードすることができるので、ここで前述のmouser取込のファイルを使う。(不要なものが有るなら事前に削除しておくと良い)

 はじまりを2(1行目は見出し)にして、項目のうちMouser・・と数量1を選択、カートに入れる処理を行っていく。

 カートに入ったら、カートを見るで在庫状況、数量、金額などを確認して問題がなければ注文手続きを行う。
 もし再オーダしそうならプロジェクトとして保存しておくと、再利用することが可能になる。

組み立てる

 いっきに全てを作っても良いが、マイコン(LPC1114)と通信(書き込み)できるか確認、次に電源系の回路、DDSなどの回路を1ch、残りも実装みたいにステップごとに組むと、失敗した場合のリカバリが行いやすいと思う。
 CR類は除くが以下のようになる。ただUSBコネクタや後述するISP対応回路を実装すると背面が平らでなくなる。
 あまりギリギリな部品配置ではないので、少しぐらい斜めでも問題ないと思うが気になる場合には4スミにゴム足を貼ると作業性が上がる。
 実用にするならケースに入れることになるので、基板に取付穴が設けられていると良い。ベタを結んでいるビアを2.2mmぐらいのドリルで穴あけすることにしようと思うので、同様な改造をされるなら部品実装前に穴をあけた方が良い。
 パッドは2012(2.0mm – 1.25mm)のチップ部品用だが、手半田の場合はコテを当てる場所が広くできるので、1608(1.6mm – 0.8mm)を用いた方が作業しやすいかもしれない。
 下記のC50が2012、C49は1608な部品になる。本来の半田付からすると半田量が多すぎるのだが、1608な方が楽そうなのは伝わるかと思う。

ISP対応

 デバッガを持っている場合には、オリジナルのままDBGと書いていあるところにピンヘッダを付ければ良いが、そうではない場合にはISPモードで起動する必要がある。
 幸いなことに作者がRESとISPというランドを基板に設けてくれているので、ここにスイッチを付けることになる。
 直結でも良いのだが、力が加わったときにチップ抵抗が壊れることで、ランドを守ることも期待して、100〜470Ω程度の抵抗を入れてスイッチを配線する。

開発環境

細かな手順は検索すれば出てくると思うが調べるのも手間なので、ざっくりとした環境の構築とコンパイルについて書いておく。
GUIではなくCLI(Command Line Interface)での開発となる。普段はMacを使っているのだが、うまく動かせなかったのでWin11のPCを使用している。
Mbedのサイトに行き、ここでMbed CLIのインストールを行うため、GitHubからexeファイルをダウンロードして実行すると環境が作られる。
デバイスへの書き込みもCLIでできるが、FlashMagicを使った方が楽なので、free版をインストールする。Downloadのタブを選ぶと、exeファイルがダウンロードできるので実行することでインストールできる。
CLIなのでWindows PowerShellを起動して開発する。
mbedのimportコマンドで取り込んで、target LPC1114、toolchain GCC_ARMを指定したあとコンパイルを行う。

PS C:\> mkdir mbed
..
PS C:\> cd .\mbed\
PS C:\mbed> mbed import https://github.com/ghz-ws/LPC1114-4chSG-AD9834
[mbed] Working path "C:\mbed" (directory)
[mbed] Program path "C:\mbed"
[mbed] Importing program "LPC1114-4chSG-AD9834" from "https://github.com/ghz-ws/LPC1114-4chSG-AD9834" at latest revision in the current branch
[mbed] Adding library "mbed-os" from "https://github.com/ARMmbed/mbed-os" at rev #d147abc3e556
[mbed] Auto-installing missing Python modules (colorama, urllib3, prettytable, junit_xml, pyyaml, jsonschema, future, six, mbed_cloud_sdk, requests, idna, pyserial, jinja2, intelhex, mbed_ls, mbed_host_tests, mbed_greentea, beautifulsoup4,pyelftools, manifest_tool, icetea, pycryptodome, pyusb, hidapi, cmsis_pack_manager, pywin32, wmi, psutil, cryptography,click, cbor)...
PS C:\mbed> cd .\LPC1114-4chSG-AD9834\
PS C:\mbed\LPC1114-4chSG-AD9834> mbed target LPC1114
[mbed] Working path "C:\mbed\LPC1114-4chSG-AD9834" (program)
[mbed] LPC1114 now set as default target in program "LPC1114-4chSG-AD9834"
PS C:\mbed\LPC1114-4chSG-AD9834> mbed toolchain GCC_ARM
[mbed] Working path "C:\mbed\LPC1114-4chSG-AD9834" (program)
[mbed] GCC_ARM now set as default toolchain in program "LPC1114-4chSG-AD9834"
PS C:\mbed\LPC1114-4chSG-AD9834> mbed compile
[mbed] Working path "C:\mbed\LPC1114-4chSG-AD9834" (program)
[Warning] @,: Compiler version mismatch: Have 6.3.1; expected version >= 9.0.0 and < 10.0.0
Building project LPC1114-4chSG-AD9834 (LPC1114, GCC_ARM)
Scan: LPC1114-4chSG-AD9834
Compile [  0.8%]: mbed_tz_context.c
Compile [  1.6%]: AnalogOut.cpp
..
Compile [ 99.2%]: SFDP.cpp
Compile [100.0%]: spi_api.c
Link: LPC1114-4chSG-AD9834
Elf2Bin: LPC1114-4chSG-AD9834
Post-Build: LPC1114-4chSG-AD9834
| Module           |         .text |     .data |        .bss |
|------------------|---------------|-----------|-------------|
| [fill]           |     222(+222) |     4(+4) |     19(+19) |
..
| Subtotals        | 22308(+22308) | 120(+120) | 1360(+1360) |
Total Static RAM memory (data + bss): 1480(+1480) bytes
Total Flash memory (text + data): 22428(+22428) bytes

Image: .\BUILD\LPC1114\GCC_ARM\LPC1114-4chSG-AD9834.bin
PS C:\mbed\LPC1114-4chSG-AD9834>

Image:・・が書き込むファイルになるので、これをFlashMagicで書き込むことになる。
USBケーブルで基板と接続し、新しく増えたポートが使うシリアルとなる。DeviceにLPC1114/102を選び(異なるデバイスを買っている場合は買ったものに合わせる)、Fileにコンパイルしたファイルを指定。
念のためVerify・・にチェックを入れてGoする。
Go/Startをクリックする前にISPのスイッチを押したままにして、RESを押して離す、ISPを離すことでLPC1114をISPモードにしておく必要がある。

実行する

現在のソフトは電源を入れただけでは動かず、シリアルから設定を送る必要がある。
4ch-SG.pyをエディタで開くとシリアルポート、周波数などの設定が書かれているので、これを書き換えてpythonで実行すると動き始める。

inst=serial.Serial("COM12",115200)
Freq=[1000,1000,1000,1000]  ##kHz unit
Pha=[0,0,0,0]               ##deg. unit
Ampl=[1000,1000,1000,1000]  ##mV unit. 50ohm loaded.
PS C:\mbed\LPC1114-4chSG-AD9834> python3.exe .\4ch-SG.py
Python
PS C:\mbed\LPC1114-4chSG-AD9834>

1Mを出力したときのスペクトラムは以下である。
はじめ近くに置いたラジオで確認していたのだが、基板に乗せるぐらいに近づけないと受信できない程度なことに気づかず、シリアルとかSPIに信号が出ていることから確認してしまった。
まだ1ch分しか部品を実装していないが購入は2ch分したので、時間が取れたら追加してみたいと思っている。

まだ作っていないが、シリアルから設定するプログラムを変えたり、ここで紹介したことを入れておくため、オリジナルからforkしてあるのでURLを書いておく。
https://github.com/jk1mly/LPC1114-4chSG-AD9834