ラベル lpc21isp の投稿を表示しています。 すべての投稿を表示
ラベル lpc21isp の投稿を表示しています。 すべての投稿を表示

2016年10月26日水曜日

Raspberry Pi + LPC1114FN28

Raspberry Pi 2 Model BとLPC1114FN28をつないでみました。

存在感を放つLPC1114FN28 :-)

■追記 11月13日■

デスクトップで使っている場合には問題なかったのですが、ssh経由でターミナルからログインしてつかっているとシリアルターミナルが /dev/ttyAM0 が有効になってしまうためlpc21ispが動いてくれません。そのための手順を加筆しました。

■追記ここまで■


ユニバーサル基板だと面倒なのでElecrowに基板発注したんですが、いやー、スルーホール部品多いとめんどくさいです。ほんの1-2年前まで「表面実装ばかりになってこれからどうすれば良いのかorz」なんて言ってたのにね。

…今、これを書いていて、「ブレッドボードでいいじゃん」と気が付きましたがorz

でも、このぐらいの基板なら一発で動いちゃいますから、今時のCADとかPCB業者って凄いですね。ああ塩化第二鉄のニオイが懐かしい。インスタントレタリングとかレトラテープでパターンを書いたもんさ(遠い目

さて。

RPi + LPC1114でググってみるとRPiにつないだUSBシリアルなどから書き込みをしたり、shellでRESET/ISPを操作している例が多いのですが、最新版のlpc21ispにはgpioでRESET/ISPを制御する機能があるので、これを使わない手はありません。

LPC1114FN28のDP23とRPiのDP24, DP24とGPIO23, DP16とRxD, DP15とTxDを接続します。あとは電源VccとGnd、何もないと寂しいのでDP14に赤色LEDと抵抗(とりあえず1kΩ)をつなぎます。

書き込みには前述の通りlpc21ispを使います。ただ、apt-getで入れるとgpiorst / gpioispのコントロール機能が有効にならないのでgithubから落としてビルドします。

と言っても、
cd
git clone https://github.com/capiman/lpc21isp.git
cd lpc21isp
make
sudo cp lpc21isp /usr/local/bin
sudo chown root:root /usr/local/bin/lpc21isp
だけです。

なお、sshからログインしてターミナルで使っている場合には、以下の手順でシリアルコンソールを無効にする必要があります。

  1. /boot/cmdline.txtを開いて console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 を削除
  2. rebootし、再度sshでログインした後、
    sudo systemctl stop serial-getty@ttyAMA0.service
    で、コンソールを停止にする

2.については再起動するたびに実行する必要があります。serviceをdisableすれば毎回実行しなくて良いのですが、sshもVNCも接続できなくなってしまいました(キーボード/マウス/ディスプレイを接続して再度enableして復活)。シリアルコンソールを停止する手順は以上です。

GPIO23とGPIO24を出力として有効にします。
sudo echo 23 > /sys/class/gpio/export
sudo echo 24 > /sys/class/gpio/export
sudo echo out > /sys/class/gpio/gpio23/direction
sudo echo out > /sys/class/gpio/gpio24/direction
書き込むプログラムはmbedのオンラインコンパイラで用意します。mbed_blinkyで、

DigitalOut myled(dp14);

のところをLEDをつないだIOに変更します。targetをLPC1114FN28にしてコンパイルするとmbed_blinky_LPC1114.binが~Downloadsディレクトリ下に落ちます。

お待たせしました。

pi@raspberrypi:~/Downloads $ sudo lpc21isp -gpiorst24 -gpioisp23 -controlinv -bin mbed_blinky_LPC1114.bin /dev/ttyAMA0 115200 48000
であとは勝手にRESETとISPが操作されて
lpc21isp version 1.97
File mbed_blinky_LPC1114.bin:
loaded...
image size : 10540
Image size : 10540
Synchronizing (ESC to abort). OK
Read bootcode version: 1
7
Read part ID: LPC1114.../102, 32 kiB FLASH / 4 kiB SRAM (0x1A40902B)
Will start programming at Sector 1 if possible, and conclude with Sector 0 to ensure that checksum is written last.
Erasing sector 0 first, to invalidate checksum. OK
Sector 1: ...........................|.........................|.........................|.........................
Sector 2: ...........................|.........................|.........
Sector 0: ..........................|.........................|.........................|.........................
Download Finished... taking 2 seconds
Now launching the brand new code
pi@raspberrypi:~/Downloads $ 

これでめでたくLPC1114FN28のDP14につないだLEDが点滅します。

やったね♡

lpc21ispの作者およびgpiorst/gpioispの機能を提供してくださった方々に感謝申し上げます。ああ、今晩はぐっすり眠れそうだw

■追記 2017年1月10日■

Raspberry Pi 3Bだとlpc21isp(シリアルポート)が動作しないことがあります。OSのバージョンなどによって異なるようですが、上記の手順で動作しない場合には/boot/config.txtの末尾に以下の行を追加してみてください
dtoverlay=pi3-miniuart-bt

2014年1月22日水曜日

Macで初mbed

秋月で買ってきてそのまま引き出しで眠っていたLPC1114FN28、今日ようやく陽の目を見ました。

ジャンパが足りなかったりブレッドボードが小さかったりでムダに苦労しましたが、一昨日FT232の基板にフラックスを塗っておき(秋月の半完成基板は昔からハンダの乗りが悪いような気がします)、昨日FT232を組み立てて、今日会社から戻ってからブレッドボードに組み立て、mbedにサインアップ、lpc21ispのビルド、lpc21ispでのインストール…で、LEDチカチカまでたどり着きましたw

マイコン界のHello,World、Lチカw

なお、秋月のUSBシリアル変換キットFT232RLを買ったのですが、J1のジャンパの説明が今ひとつピンと来なかったので、回路図をにらめっこしJ1のジャンパはGND表記の側、J2ジャンパを差して、最終的にはUSBをつないだ状態でテスターで電圧を測り「3V3」と「VIO」が3.3V前後になっていることを確認しました。最近のLSIは昔より大分丈夫になりましたが、電源間違えると死ぬ確率は飛躍的に高くなります。しっかり確認しましょう。

回路図で電池ってどうやって書いたっけ?w

なお、今回の試作にあたっては、こちらのサイトが大変参考になりました。ありがとうございます。

  [lang:ja] mbed LPC1114での遊び方

なお、補足ですが、Macでの lpc21isp のビルドは

  • LPC21ISPをダウンロード&解凍
  • ターミナルを起動し、解凍してできたLPC21ISPのディレクトリに移動
  • make -f Makefile clean all
  • chmod +x lpc21sp
  • sudo mv lpc21isp /usr/sbin 

これで lpc21ispが使えるようになります。

次にいよいよLPC1114FN28への書き込みですが、その前にシリアルポートの名称を調べる必要がありますが、それにはターミナルで ls /dev/cu.* と入力するとusbserialとか何とかと出てきます。あるいは /dev/cu. まで入力してTabキーを押すと残りが出てくるはずです。では書き込みましょう。

  • USBを接続する
  • リセットボタンとISPボタンを同時に押す。
  • リセットを先に離し、ISPボタンも離す。
  • mbedサイトから落としたバイナリのあるディレクトリへ移動
  • ターミナルで
  • lpc21isp -bin HelloLED_LPC1114.bin /dev/cu.usbserial-AH01KSGF 115200 48000
  • 転送中の表示の後、自動的に実行開始。

28pin、秋月…というとワンチップデジタル時計のMN5311を思い出してしまうんですが、今はこんな高機能なチップが100円かそこらで買えるなんて凄いですね。