LPC expresso を使ってみよう

Last-modified: 2015-10-31 (土) 09:21:35

ことのおこり

2014年2月の時点で、メジャーな ARM チップメーカーは STMicro Electronics(STM Discovery シリーズ)とNXP Semiconductor(LPC xxシリーズ)。

どちらも秋月で買える。 (^^)v 価格的に安価なため、 STM32 Discovery を使っていた。

が。NXPが DIP な ARM LPC1114 を出した!(なぜか 300mil 幅だけど)110円。

また、mbed なボードは5000円以上するが、expresso なボードは2000円。

とゆーことで、Expresso なボードを使ってみることに。

ハードウェア

マイコンボード

開発環境

LPC Expresso

参考にしたサイト

最初の一歩

まずはLチカしたいところ。サンプルコードを探す。→開発環境である LPCXpresso をダウンロードすると、各評価ボード用のサンプルコードがついてくる。

(INSTALLしたフォルダ)\LPCXpresso_6.1.4_194\lpcxpresso\Examples\NXP\LPC1000\LPC17xx

似たような名前のものが並んでいて、どれを使うべきかよくわからない(-_-;;
lpc1769_samples.PNG

LPC17xx_LatestCMSIS_Libraries 以下に必要なヘッダファイルとライブラリがあるようだ。
CMSIS_CORE_LPC17xx

core_cm3.hCortex-M3 CPUコアのレジスタ定義(割り込みコントローラなど)
core_cmFunc.hCMSYSのレジスタアクセス関数の定義
core_cmInstr.hCortex-Mコアの命令アクセス用ヘッダ
LPC17xx.hLPC176xxシリーズのペリフェラルのレジスタ定義
system_LPC17xx.hシステムクロック関係の関数宣言

クロックツリー

LPC1769のクロックはどうなっているだろうか。ユーザーマニュアルUM10360.pdfの第4章がクロック関連。
lpc1769_clock_tree.PNG
うむ。STM32F4 Discovery よりはシンプル。プリスケーラやPLLの数が少ない。

原発振は 12MHz の水晶発振器。これが図中の osc_clk に該当する。
lpc1769_target_crystal.PNG

周辺機器であるタイマへのクロックは、図中の Main PLL, CPU Clock Devider, Peripheral Clock Devider の設定によって決まる。

CPU Clock Devider

CPU_clock_config.PNG

Peripheral Clock Devider

周辺機器の種類ごとに、クロックの分周比を設定できる。4種類からの選択なので、2bitで指定する。
peripheral_clock_bit_assign.PNG
peripheral_clock_devider_setting.PNG

Main PLL

入力周波数の範囲は 32kHz~ 50MHz。PLLによって、最大 120MHz を出力する。(LPC1769の場合)

PLL0の出力周波数は以下の式で計算できるらしい。

PLL0の周波数  FCCO = (2 x M x Fin) / N  → Finは外部クロックの12MHz

M:PLL0 Multiplier value
N:PLL0 Pre-Divider value
M,Nという2つのパラメータを設定することにより、PLL0の出力周波数を制御できる。
 
クロック設定の参考URL
LPCXpresso LPC1769の120MHzクロック設定

LPC1769をMbedとしてつかう