LPC11U35 Pulse Monitor

DSC00884
トランジスタ技術2014年10月号の脈拍計の回路を利用させてもらいました。フォトリフレクタは、記事とは違うものを使用しています。フォトリフレクタ(反射タイプ) TPR-105Fを使用しています。秋月電子通商で購入しました。http://akizukidenshi.com/catalog/g/gI-00276/
オペアンプは、記事と同じNJU7032Dを使いましたがTPR-105Fに合わせて増幅の抵抗値を調整しています。
ソフトウェアは、mbedを使用しなかったので独自に作成しました。上下の回数を一定時間数えて平均をとる方法で脈拍を測定で来ました。
DSC00882
オペアンプを使用したアナログ回路の楽しさに出会いました。

AN11329 Implementing sigma-delta ADC with LPC800 comparator

DSC00840
LPC81Xには、ADCがありません。アナログ入力は、コンパレータだけです。そこで、NXPのアプリケーションノートにあるコンパレータでADCを実現する方法を試してみました。
手持ちの抵抗やコンデンサで実現したのでアプリケーションノートの定数とは若干異なりますが、可変抵抗の変化に応じたAD値が取得できました。
ただし、ピン数が少ない中で使用ピンも多く、追加部品も多いのでおそらくこの使い方は、しないと思います。

C2000 Piccolo LaunchPad + UART LOOPBACK

DSC00862

まずはUARTでPCと通信できるようにするため、サンプルプログラムExample_F2802xSci_Echobackを動かそうと思いました。少しハマったので記録します。
CPUクロックが60MHz設定ですがサンプルのクロック設定が50MHzでした。また、60MHzの設定の時の通信速度の設定がありませんでした。さらに送受信関数がSCI_read()、SCI_write()となっていましたがこの定義はなく(sci_io.cの中にありますが引数が違います。)SCI_getData()とSCI_putDataBlocking()に変更しました。USB介してPCで送受信することができました。

C2000 LaunchPad

リアルタイム制御を試してみるためにTIの評価ボードを入手しました。LAUNCHXL-F28027 – C2000 Piccolo LaunchPad
http://www.chip1stop.com/dispDetail.do?partId=TI01-0271940&mpn=LAUNCHXL-F28027
17ドルと非常にお求めやすい価格ですが円高の現在でも1500円程度で送料込みで2000円程度で入手しました。搭載しているマイコンは、TMS320F28027ですが、かつてはDSPとしていた製品をマイコンとしてリニューアルしたものです。とても演算が得意なマイコンです。

DSC00820
DSC00819 DSC00817

開発環境は、TIのサイトからダウンロード出来ます。
http://www.tij.co.jp/tool/jp/ccstudio
DSC00810DSC00811
LEDの点滅サンプルを動かすところまでできました。
http://www.ti.com/ww/en/launchpad/launchpads-c2000.html

FRDM-KL25Z + E-Paper

DSC00813

Embedded Artists ABの2.7 inch E-paper Displayを先日購入したFRDM-KL25Zと接続しました。
http://www.embeddedartists.com/products/displays/lcd_27_epaper.php
http://developer.mbed.org/handbook/mbed-FRDM-KL25Z

プログラムは、以下のmbedプログラム epaper_mbed_130411_KL25Zを使わせていただきました。
http://developer.mbed.org/users/dreschpe/code/EaEpaper/wiki/Homepage

問題なく動作しました。E-Paperなので電源を切っても表示は残ります。

FRDM-KL25Z + SD Card

FreescaleのCortex™-M0+プロセッサベースのKinetis Lシリーズ KL1x/KL2xマイクロコントローラ・ファミリを搭載した超低コストの開発プラットフォームを購入してみました。
http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-47CA

DSC00806

今回はmbedとして使います。mbedとして使うには、インターフェースファームウェアファイルを書き込む必要があります。以下のサイトに手順が詳しく書いてあります。
http://mbed.org/users/Norisuke/notebook/mbed-frdm-kl25z-Getting-started-jp/

今回は、sdカードを使いたいので、まずは、sdカードのサンプルを試してみました。
http://mbed.org/handbook/SDFileSystem
ここのサンプルをインポートして改変します。このサンプルは、LPC1768用なのでその部分のみ変更します。
SDFileSystem sd(p5, p6, p7, p8, “sd”); // the pinout on the mbed Cool Components workshop board
この行がSDカードとつながるSPIポートの設定になります。
SDFileSystem sd(PTE1, PTE3, PTE2, PTE4, “sd” );
ピン名をFRDM-KL25Z 用に変更しました。SPI1を使用する設定です。
Hello fun SD Card World!
ファイル作成、書き込みができました。

DSC00804

LPC11U35 + I2C LCD

I2C低電圧キャラクタ液晶モジュール(16x2行)[バックライト付]を試してみました。IDEには、LPCXpresso v6.0.2_151を使用しました。サンプルは、LPC11U1x/2x/3x LPCXpresso Examplesを使用しました。i2cサンプルプログラムを元に作成しました。I2Cなので配線もすっきりです。

http://www.lpcware.com/content/nxpfile/sample-code-bundle-lpc11uxx-peripherals-using-lpcxpresso

I2C LCD

http://strawberry-linux.com/catalog/items?code=27021

LPC11U1x/2x/3x LPCXpresso Examples

YOCTO Project Hob tool

yoctoにはbuildプロセスを自動化してくれるツールHobがあります。
以下のサイトを参考にQemuのARMエミュレータ用のLINUXをbuildしてみました。
https://www.ibm.com/developerworks/jp/linux/library/l-yocto-linux/
まずBuildしたい対象を選択します。今回は、QEMUARMを選択します。次にどのようなイメージをBuildするか決めるレシピを選択します。今回はcore-image-satoを選択しました。
Screenshot_from_2014-02-14 21:34:38
buildします。終わるまで、数時間待ちます。
Screenshot_from_2014-02-15 12:09:13
Buildが終わると上のが面になります。ここでRun Imageを実行してエミュレータを実行します。
Screenshot_from_2014-02-15 12:10:06
Screenshot_from_2014-02-16 15:52:16
Screenshot_from_2014-02-16 15:54:36
YOCTOでARMのBuildおよびHobの仕様が出きるようになりました。

LPC11U35 QSB IAP EEPROM API

LPC11U35には、EEPROMが内蔵されています。不揮発メモリとして利用できるので使用してみました。
DSC00650
IDEには、LPCXpresso v6.1.0_164を使用しました。LPC11Uxx LPCXpresso Examplesには、eepROMapiというサンプルプログラムが含まれています。これを流用します。このサンプルは、UARTを使用したIFなので、ここをUSBのCDCに置き換えました。実際には、前に作ったCDCのプログラムにEEPROMの部分を加えていきました。EEPROMの部分を加えるとBuildでエラーが出るようになります。

fseek.c:(.text.fseek+0x2a): undefined reference to `_Csyscall1′

解決方法は以下URLにありました。
http://www.support.code-red-tech.com/CodeRedWiki/UndefinedReference
Propaties→Settings→MCU Linker→Targetの中のUse C libraryをRedlib(none)からRedlib(semihost)に変更しました。
semihost

 

これでBuildがとおりEEPROMの読み書きができるようになりました。
HYPERT

後、注意は、
SystemCoreClockUpdate();の前に
LPC_SYSCON->SYSAHBCLKCTRL  |= (1UL<<9);   /* enable clock */
を設定しないとLPC_CT32B0のタイマが動きません。
Flush書き込みと違いそのまま割り込みも使えるし、EEPROMは、電源切ってもデータが保持できるのでいろいろ使えそうです。

http://akizukidenshi.com/catalog/g/gM-06948/
http://www.embeddedartists.com/products/boards/lpc11u35_qsb.php

 

 

Yocto Project Quick Start

組込みLINUXの勉強の一環でYoctoに触れたいと思います。まずは、Quick Startに沿ってQEMUのエミュレータで起動するところまで行います。
https://www.yoctoproject.org/docs/Acurrent/yocto-project-qs/yocto-project-qs.html
Ubuntu12.04LTSで開発を行います。以下コマンドで開発環境を整えます。
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath libsdl1.2-dev xterm
次に作業フォルダを作成します。自分は、ユーザのHomeの下にworkを作りその中にyoctoフォルダを作成しました。
$ wget http://downloads.yoctoproject.org/releases/yocto/yocto-1.5.1/poky-dora-10.0.1.tar.bz2
Yocto Projectをダウンロードします。
$ tar xjf poky-dora-10.0.1.tar.bz2
ダウンロードしたファイルを上で作成した作業フォルダで解凍します。
$ cd poky-dora-10.0.1
解凍してできたフォルダに移動します。
$ source oe-init-build-env
環境構築スクリプトを実行します。これでBuildの準備が完了です。
$ bitbake -k core-image-sato
OS imageを作成します。このBiuld時間は、自分のPCで半日くらいかかりました。
$ runqemu qemux86
出来たOS Imageを実行します。
Screenshot_from_2014-02-02 22:07:35
起動画面です。

Screenshot_from_2014-02-02 22:09:31
こんなGUIで立ち上がります。

© 2014 Spineedge Corporation.

組込み技術向上のため、エンベデッドに関する話題中心のブログです。