2012/10/10
■ [ARM]LPC1114 (ARM Cortex-M0)始めました
トラ技10月号の付録は、ARM Cortex-M0コアのCPUと開発環境が入ったDVDでしたので久しぶりに買ってみました。
CPUはNXP社のLPC1114で、今時珍しくパッケージはDIP28、型番はPLC1114FN28/102のようです、スリムタイプだったらもっとよかったのに、残念。
特徴は以下のとおり
- 32bit CPUなのに秋月で1個 110円!
- シリアルワイヤデバッグ対応
- クロック: 50MHz max、12MHzのRCオッシレータ内蔵(精度1%)、 PLL内蔵
- メモリ: Flash 32KB ページ(256バイト)単位で、IAPで消去可、RAM 4KB
- タイマ: 32bit x 2、 16bit x 2(PWM)、 systick、 ウオッチドック
- 周辺: UART(RS485) x 1、I2C x 1、 SPI x 1、 ADC x 6、 GPIO x 22
- アクティブ電流 @3.3V 50MHz 5.8mA、 12MHz 1.4mA、 3MHz 600uA
- Flashメモリプログラミングファームウェア内蔵、シリアルポートから書込み可
詳しくは参考リンクのデータシートやユーザーズマニュアルを参照。
さて、ブレッドボードで簡単にLチカまでやってみたメモです、環境はWindows7/Linux Ubuntu12.04(64bit)。
Windowsでは開発環境はLPCXpresso IDE、プログラムの書き込みはFlashMagic。 まずは動くかどうかTeratermでチェックし、その後FlashMagicで書込みました。
- 秋月USB-シリアル変換モジュールで3.3V電源をUSBから供給し、RXDとTXDをクロス接続
- CPUのP0_1をGNDに落としリセットする、PCはWin7でTeraTermを使用、ボーレイトは自動判別なんでとりあえず9600bps 8bit1Stop、パリティなし、改行は<CR><LF>
- PCから?を送るとSynchronizedが返ってくるので、更にSynchronizedを送るとOKが返ってきてISPセッションが始まる
- ISPコマンドはFlashの読み書き(W,R)やイレース(E)、ブランクチェック(I)、指定アドレスからの実行(G)もある。 他にもPartID(J),BootCodeVersion(K),ReadUID(N)とか。 例えば、R 268435456 512 と打ち込むとアドレス0x1000 0000から512バイト読み出す、ただし UU-encodeされてる
- LPCXpress IDE を、付属のDVDからトラ技を見ながら入れる。 Eclipseじゃん、、 (汗
- 後は付属のDVDからFlashMagicをインストールして書き込む、取りあえずサンプルを入れてsw_led_testのhexファイルを書き込みました(MyARM_sample、フォルダはC:\workspace)
Linuxでは開発環境はLPCXpresso for Linux、書込みはlpc21ispを使用。
- LPCXpresso for Linuxからダウンロードして解凍・インストールする。その前に sudo apt-get install ia32-libs-multiarch:i386が必要だった
- pc21ispのソースコードをダウンロード。LPC1114FN28は定義が無いのでLPC1114FN28 with Open Source Toolsを参考に追加してコンパイル
- Windows側からサンプルソースをコピーするがビルドできないので、CMSISv2p00_LPC11xxはlinux側で追加し、main.dとcr_startup_lpc11.dのパスの\と/を書き換える
- 書込みは lpc21isp -wipe -verify filename /dev/ttyUSB0 115200 12000 接続チェックは -detectonly や -termonly