LPC81x開発・習得にあたり、LPCOpenライブラリと従来ライブラリ(LPCCloseと呼ぶ)を比較し、LPCOpenがアプリ開発・習得に適すことを示します。
LPCCloseライブラリの UARTサンプルソフト
従来ライブラリ:LPCCloseのUARTサンプルソフト、“uarttest.c”の最初の部分を抜粋しました。前記事に示したライブラリ利用の為に、コア制御に”LPC8xx.h”、周辺回路制御に、”lpc8xx_clkconfig.h”と“lpc8xx_uart.h”のヘッダファイルをインクルードした後に、サンプルソースを記述しています。このUARTサンプルは、UART初期設定後、PCへ”Hello world!”とUART送信し、PCからのUART受信文字をエコーバックします。動作中のデバッガ画面とターミナル画面を示します。
システム動作クロック変更
全てのLPCCloseサンプルソフトは、システム動作クロック(SystemCoreClock)をLPC81x内蔵RCオシレータ12MHzで動作させています。この速度を変えるには、以前の記事に書いたクロックパラメタ算出ツールが便利です。前の記事は、LPCOpenライブラリでの例でしたので、LPCCloseライブラリで24MHzに変える例を示します。
このツールから、クロック速度を24MHzへ変えるには、SYSPLLCTRL:0x41を0x23へ、MAINCLKSEL:0x0を0x3へ、SYSAHBCLKDIV:0x1を0x2への3変更で良いことが判ります。これらは、CMSIS_CORE_LPC8xxフォルダの”system_LPC8xx.c”に記述されています。
これらパラメタを変更し、デバッガプローブ機能でクロックが24MHzに変わったことを確認後、UART通信を行うと、ターミナル側に文字化けが発生します。変更箇所はパラメタのみです。つまり、LPCCloseライブラリのUARTサンプルは、残念ながら24MHzでは正常動作しないことが判ります。
但し、gpioなどの他ライブラリはどの速度でも問題なく動作します。従来ライブラリUARTに何らかの原因があることは確かです。この原因追究は、スキルアップに繋がります。しかし、「ライブラリが提供するAPIを活用したアプリ開発・習得からは、かなりの回り道」となります。
LPCOpenライブラリのUART動作
一方、LPCOpenライブラリは、システムクロックが12MHz、24MHz、30MHzでもUARTは正常動作します。前記事のLPCOpenとLPCCloseライブラリの使い易さ比較でLPCOpenの方が圧倒的に簡単であることも考慮すると、LPC81xの開発に、敢えて「従来ライブラリLPCCloseを使う意味・理由はない」と思います。
残念なのは、開発環境LPCXpressoの付属サンプルソフトが、従来ライブラリLPCCloseであることです。慣れない環境で初心者がLPC81xを検証する時は、サンプルと評価ボードを使います。今回示したシステム動作速度を変えた時、サンプルが正常動作しない問題は、開発や理解に大きな障壁となります。もし、従来ライブラリの代わりに、LPCOpenライブラリのサンプルが初めから付属していれば、この問題は回避できます。
LPCOpenライブラリとLPCOpenテンプレートの薦め
最新版のLPCOpenライブラリのリンクはココです。LPC81xアプリ開発・習得には是非、このLPCOpenサンプルソフトを使うことをお勧めします。
また、「LPCOpenライブラリを使い、そのまま実務にも使えるLPC8xxテンプレート」を活用頂ければ、より効率的にアプリ開発・技術取得が期待できます(LPC8xxテンプレートはコチラを参照ください)。