● 実験テーマ48

「ARM事始め」
(トラ技2014/2月号付録の8pin32bitARMマイコン(LPC810)とI2C実験基板で実験を行いました。
また記事にないカレンダIC:RTC8564の実験も行いました)

■ 2014.2.25
  ・以前から、PIC以外のマイコンにも興味はあったのだが、なかなか、きっかけが無く
   HP開設以来、PICオンリーでやってきた。
   タイムリーなことに、今年のトラ技の2月号・3月号に、
「8ピンXDIP ARMエントリ・キット」
   と称して、2月号には、32bitマイコンの、LPC810+I2C実験基板、
   3月号には、ARMライタ基板が付録といて付いてくることを知り、これを機会に、
       ARMマイコンに触れてみようと思いました。

  ・ただ、この付録を完成させるのに別途、完成パーツセットと称する部品セットを購入
   する必要があるのだが、どうも好評につき、かなり納期が掛ってしまうらしい。
   ARMライタに関しては、ケーブル(1.27mmピッチ)Assyがネックになっているらしく
   また、I2C実験基板では、温度・気圧モジュールがネックになっているらしい。
   しょうがないので、ARMライタについては、ケーブル無の部品セットを注文し、
   I2C実験基板については、個別に部品を集めることにした。
   気圧モジュールに関しては、秋月にも同じセンサー素子を使用しているモジュール
   が売られていたが、ピン配置が異なるので注文するのはやめた。
   結局、温度・気圧モジュール以外は個別で集めることができたので、
   とりあえずは、I2C_EEPROM, ADCと、記事には無い、カレンダIC:RTC8564の
   実験を行うこととした。

  ・ここで、ARM社と、LPC810マイコンのメーカーの関係について調べてみた。
   どうも、ARM社は、そのコア(CPU)の設計図を、半導体メーカー各社に供給している
   立場であるようだ。
   そして、LPC810マイコンのメーカーは、
   NPX社(Next Experience Philis)で、2006年10月に、
   フィリップスの半導体製造部門:フィリップス・セミコンダクターズから分社化されて
   できた会社ということのようだ。
   フィリップスと言えば、確か、I2C規格を提唱したメーカーだったと思うが、
   この基板でも、フィリップス社製のI2C制御のADC素子が使用されている。


■ 2014.2.26
  ・初めての、ARMマイコンの実験なので、とにかく開発環境を構築する必要がある。
   この辺もトラ技の記事で説明されているので、とりあえずは、NPXサイトでの
   ユーザー登録から始めてみた。→ ユーザー登録済
   
IDE(統合開発環境):LPCXprcssoは、このユーザー登録をして、ライセンス登録
   をし、アクティベーション・コードを発行してもらい、これを最初の、IDE立上げ時に
   入力しないと、プログラム・サイズが、8k制限から256kmaxに拡張されない。
   (ライセンス・タイプ= FULLにならない。)


■ 2014.2.27
  ・無償評価版LPCXprcssoのインストールは問題なくできた。
  ・続いて、ライセンス登録〜 アクティベーション作業まで行う。
   アクティベーションが完了したかは次のダイアログで確認できる。
   下に、アクティベーション前・後で、コード・サイズを確認した時の、スクリーン・ショットを
   示しました。


■ 2014.3.6
  ・今回、いきなりI2C実験基板を動かすつもりなので、トラ技付属CD-ROMに収録されている
   サンプル・プログラムを利用することになる。
   トラ技には、次の2つのファイルをIDEにインポートするように書いてある。
    @ LP810-DEMO.zip
    A NXP_LPC8xx_SampleCodeBundle.zip(IDEに入っている標準サンプルプログラム)

  ・ところが、@の、LP810-DEMO.zipは、CD-ROM内には見当たらなかった。
      実際には、このデモプログラム作者:小野寺さんの名を取って、「onodera.zip」としている
   ようだ。
   ZIPファイルの名前は、「onodera.zip」で、これをIDEにインポート(解凍)すると
   imnport projects のダイアログの、LPC810-DEMO(/)にチェックマークが入っているので
   [Finsh]ボタンを押せば、インポートが完了する。

  ・続いて、NXP標準サンプルプログラム:NXP_LPC8xx_SampleCodeBundle.zipをインポートした。
  ・デモ・プロジェクトでは、この標準サンプルプログラム内の、lpc800_driver_libを利用しているので、
   これを、ビルドした。
   ビルドすると、Releaseディレクトリに、「lpc800_driver_lib.a」が生成される。

  ・次に、サンプルプロジェクト「LPC810-DEMO」をビルドした。
   Releaseディレクトリに、「LPC810-DEMO.axf」が生成される。
   これが、フラッシュへの書込みファイルになる。
   (拡張子の、axfは、ARM Executable Image:ARM 実行イメージを意味する。)


■ 2014.3.7
  ・デフォルトのデモ・プログラムでは、温度・気圧のI2Cが動くようになっているので、これを
   とりあえずの実験として、EEPROM用に変更した。
   #defineで選択できるように記述されているので、変更は簡単である。
   #define EEPROMのコメントアウトを外し、ADC, TEMP, BARの、#define文をコメント
   アウトすればよい。
   ただ注意しなければいけないのは、温度・気圧モジュールが実装されてない時は、
   これだけでは動かないという点である 。
   次に示す、メインの頭の方に記述されている、温度と気圧モジュールの初期化の
   行をコメントアウトしないとだめ。(これに気付くまでに、ちょっと時間が掛ってしまったが・・)
   たぶん、スレーブからの、ACK待ちループに陥ってしまうからだろうと想像する。

    <メインの頭の方に記述されている、温度と気圧モジュールの初期化の部分をコメントアウト>
     // set 16bit resolution
   // PutI2C(ADT7410_CONFIG, 0xC0, ADT7410_ADDR);
       // Power ON Cycle=1Hz
       // PutI2C(LPS331_CTRL_REG1, 0x90, LPS331_ADDR);

  ・EEPROMのプログラム動作概要は、ターゲットの、24LC64(64kビット=8kバイト)の、
   2番地のみに、0x5Aを書込んだ後、8kバイトの全エリアを読み出して、そのアドレス
   と、データを液晶表示するというもの。


■ 2014.3.8
  ・IDEのインストールと、アクティベーションは完了したが、トラ技ARMライタにファームウエアを
   書込む作業が残っている。
   要は、USB⇔JTAG(SWD)変換ファームであり、このプロトコルには、
   CMSIS-DAP(シームレス・ダップ: Cortex-Mマイコンのデバッグ規格)を利用することになる。
   ファームウエアが正常に書込まれると、トラ技ARMライタを、PCのUSB口に挿入した時、
   PCは、「HID準拠デバイス」と認識する。

  ・これで、デモ・プロジェクト(EEPROMのみ動かすプログラム)をビルドし、AXFファイルを生成し、フラッシュに
   書込めば、動作チェックが出来る。


■ 2014.3.10
  ・以下に、EEPROMの実験風景と、I2C波形を確認した時の結果をアップします。

  ・続いて、ADCのプログラム設定にし実験を行った。


■ 2014.3.12
  ・今日は、記事にないRTCの実験計画を立ててみた。
   ざっと動作仕様等は次のようにした。
   @ 
秋月の、AE8564NBモジュールAE8564NBモジュール(以前、dsPIC30Fでの実験で使用実績あり)を使用。
   A 実験レベル(動作確認)程度とする。
      BATバックアップ及び、時計合わせ機能は無し。
   B 固定のデフォルトタイム設定値より、時計カウントし、それをCのフォーマットで
      液晶に表示。
   C 表示フォーマットは、超小型の液晶(8キャラクタx2行表示)なので、
      曜日まで表示すると、ちょっと見ずらくなるが、曜日まで表示することにした。
     (最初、未定義のCG ROM領域に、曜日(漢字)キャラクタを登録して、粗くなるが
      漢字で、(月)のように表示しようと考えたが、その領域が6キャラクタ分しかないので
      7つの曜日を全て登録できないため断念し、Man, Tue・・のように表示するようにした。)

     表示例は以下の通り。
            +-------+
                  03/15Sat
                  12:55:00
                 +-------+

  ・ソースは、このサイトを参考にしました。→ 「NXP LPC810を使った電子工作」


■ 2014.3.15
  ・RTC8564デモを、トラ技デモ・プロジェクトに追加した。
  → NotePadでソースを変更(一部は日本語コメントにしてみた。)
  → IDEを立上げる。
     別段、エラー・ワーニング出ず。
  → ところが、main.cを参照しようと、エディタを立上げようとしたら、素直には立上らず、
    (ソースを別エディタ(NotePad)で変更したからと思われるが・・・)
     そのソースを表示するのに、[F5]キーを押す旨のメッセージが出たので、F5キーを押す。
  → IDEのエディタ立上る。
     やはり、日本語コメントは表示できず。
     そういうユーティリティがあるらしいが、今回は見送った。
  → IDEへのファイルの追加に、ちょっと悩んだが、とりあえずビルドまではOK
          (ワーニングは何点か出たが無視した。)

  ・イージーミス他あったが、何とか動いた。


<最終回路図>
 ・こちらから、どうぞ→ 「トラ技ARM_I2C実験基板」 (自分用に作成した回路図で、温度・気圧モジュールは省略してます。)

<最終ソース(RTC追加分)>
 ・こちらから、どうぞ→ main.c
                             RTC8564.h


← 実験テーマ1に戻る   TOP PAGEに戻る   実験テーマ49へ →