イカ醤油ポッポ焼き -> LPC812

久しぶりにmbedの記事。2016/6が最後なので、半年振りですね。
この半年間、mbedを使っていなかったわけではないのですが（汗

#経緯
導電織物を皆さんに使ってもらおう！ということで、Textile Sensor KitというArduinoやmbedに接続して、導電織物のタッチ状態を取れるキットを販売していました。（キットの詳細は[github](https://github.com/matsujirushi/TextileSensorKit)のドキュメントを参照）

キット内容物は、導電織物（左）とセンサー基板（中）で、mbed（右）はご自身で用意してくださいって感じで。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/9e0244b1-92ec-1007-1427-a3400af10a34.png)

「マイコンボードを別途用意するの？良く分からないんだけど。」という言葉がチラホラとあり...

#マイコンの選定
~~珍しく気が向いたので~~基板を作ることに。
マイコンは、高性能で小型なLPC800シリーズにしようと思いましたが、結構ランナップがありますね。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/034bd60f-f4f1-2e01-be65-ee52d1a4412d.png)

どれにしようか迷う...

mbedオンラインコンパイラが対応している（と思われる）ものを確認します。
mbed platformをざっと見ると、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/c27ae67b-9e90-fd35-c7fc-61a0142d294f.png)![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/b22cb8f8-83cb-2d0b-938b-bff98658709c.png)![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/6f18c6b4-de0f-f350-c5ba-1bd2cfaa4bba.png)
があります。
ということは、LPC812, LPC824。

LPC812はマルツで購入できそうなので、

- [LPC812のSSOP20](http://www.marutsu.co.jp/pc/i/226931/)を採用。
- ちょっと性能不足になったときはLPC824のSSOP20に換装。

ってことで、

**LPC812を採用！！！**

#ISP! ISP!
でもオイちょっと待て。ARMマイコンのライター持っていなかった。orz
ググってみるとLPC-Link使ったり、FTDI+FlashMagicだったり、様々な方法があるみたい。
そんな中で、異色なライターがっ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/a58aa04c-49e8-2306-5f0c-e5b7c17892d8.png)

見てしまった以上、~~使わないと~~使ってみなければ~~クマの人に(ry~~

#「イカ醤油ポッポ焼き」とは？
詳しくは[公式](https://developer.mbed.org/users/okano/code/ika_shouyu_poppoyaki/)を見てください。
一言でいうと、
「（パソコンに書き込み用のソフトウェアを入れることなく）binファイルをマイコンのフラッシュへ書き込むソフトウェア。」
です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/7a5346d0-012d-d96e-ac66-34eef74c9684.png)


#プログラムの書き込み
さぁー、書こう。と思ったら、[公式](https://developer.mbed.org/users/okano/code/ika_shouyu_poppoyaki/)にLPC812 SSOP20の結線方法が載っていないではありませんか（！）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/4d2020f1-fb01-3eb7-5773-106c23556b35.png)


確認不足でした。
そ、そうですよね...人に頼ってばかりではいけません。ちゃんと自分で考えないと。

んー...
んー...

この図の「connection to DIP8」を見ると、mbed LPC1768側は、

- p25 ISP_enable#
- p26 RESET#
- p27 UART RX
- p28 UART TX

接続しているLPC810のピン番号は、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/8b481435-0092-d95a-fc88-7e22c795f3d5.png)

- 5 ISP_enable#
- 1 RESET#
- 2 UART RX
- 8 UART TX

[LPC81xデータシート](http://www.nxp.com/documents/data_sheet/LPC81XM.pdf)のPin description tableにDIP8とSSOP20のピン番号対応が書いてあります。

|DIP8ピン番号|SSOP20ピン番号|意味|
|:-:|:-:|:-:|
|5|12|ISP_enable#|
|1|4|RESET#|
|2|5|UART RX|
|8|19|UART TX|

というわけで、次のとおり結線しました。

|mbed LPC1768|SSOP20ピン番号|意味|
|:-:|:-:|:-:|
|p25|12|ISP_enable#|
|p26|4|RESET#|
|p27|5|UART RX|
|p28|19|UART TX|

結果...**書き込みできず**orz

なぜだ。
悶々とする日々...

[LPC81xデータシート](http://www.nxp.com/documents/data_sheet/LPC81XM.pdf)を何度も見直していたら、Pin description tableに、こんな記述が。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/c9c36e0d-c8d7-7e19-2c84-f3193a256d06.png)


ん？

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/74dca46c-4cdc-2b42-9dfe-7ace97a5df02.png)

Table 6とは？

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/71a02f3e-c493-5442-8451-9a230e9c9adf.png)

ISP_enable#をPin12(PIO0_1)からPin3(PIO0_12)に変更したところ、書き込みできた (^O^)／

#教訓
* データシートはバイブル。ちゃんと読もう。
* 読むデータシートは最新のものを。
* マイコン内のブートローダーバージョンに注意。

|mbed LPC1768|SSOP20ピン番号|意味|
|:-:|:-:|:-:|
|p25|**12(1A,2A) or 3(4C-)**|ISP_enable#|
|p26|4|RESET#|
|p27|5|UART RX|
|p28|19|UART TX|