CAPSENSE™でタッチセンサーを使ってみよう [CAPSENSE™ Tuner Hands On編]


アプリケーション仕様
このHands On では下記の評価ボードを使用します。
- 評価ボード名称:CY8CKIT-149
- 搭載デバイス:CY8C4147AZI-S475
このHands Onでは下記機能の実装を行います。
①PSoC™ Creatorを使用し、CY8CKIT-149 上に CSD(自己容量)方式のボタンと、ボタンが検知したことを確認するためのLED点灯機能を実装します。
②CAPSENSE™ Tuner を用いて、タッチボタンのスキャンデータをモニタリングします。
PSoC™ Creatorについて
PSoC™ Creatorの概要やインストール手順等については以下の記事を参照してください。
※今回はPSoC™ Creator v4.4 を使⽤しています。
プロジェクトの作成
PSoC™ Creatorを立ち上げプロジェクトを作成します。
①「PSoC™ Creator」を立ち上げます。
②「File>New>Project」を選択します。
③Target Deviceを「PSoC 4>PSoC 4100S Plus」を選択します。
④「Next」を選択します。
⑤ Empty schematic を選択して「Next>」を選択します。
⑥プロジェクトを生成するワークスペース、パスおよびプロジェクト名を指定します。
Workspace name : workspace
Location :C:¥PSoC¥Workspace
Project name : CapSenseTuner01
⑥「Finish」を選択します。
コンポーネントの設定
コンポーネントの挿入
使用するコンポーネントを回路図に挿入していきます。
Component Catalogから下記の各コンポーネントを選択して回路図にドラック&ドロップします。
①CapSense>CapSense
②Communications>I2C>EZI2C Slave
③Ports and Pins>Digital Output Pin
CAPSENSE™の設定
①回路図の「CapSense_1」をダブルクリックします。
②Basic タブで構成したいボタンやウィジェットを追加します。
「+」をクリックし今回は「Button」を1個追加します。
③ 「OK」を選択します。
EZI2Cの設定
①回路図の「EZI2C_1」をダブルクリックします。
②Sub-address size (bits)を「16」に変更します。
③「OK」を選択します。
LEDの設定
①回路図の「Pin_1」をダブルクリックします。
②名称(Name)を「LED」に変更します。
③HW connectionの「✔」を外します。
④LEDを負論理でドライブするため、初期値 (Initial drive state) は「 High (1)」 に設定します。
⑤「OK」を選択します。
ピンの割り当て
設定した各コンポーネントにPinを割り当てていきます。
①「Pins」をダブルクリックします。
②コンポーネントのPorts/Pinsを設定します。
CapSense_1 Cmod : P4[1] (pin28)
CapSense_1 Sns : P4[6] (pin33)
EZI2C : scl P3[0] (pin18)
EZI2C : sca P3[1] (pin19)
LED: P5[2] (pin53)
アプリケーションの生成
ここまでの作業でPSoC™ Creator がアプリケーションのスケルトンコード(空のmain関数、startup、必要なドライバなどのソースコード)を生成するために必要な情報がすべて入力されました。
メニューから
Build > Generate Application
を選択して、アプリケーションを生成します。
【ショートカット】
あるいは、コマンドアイコンからGenerate Application を選択してアプリケーションを生成することも可能です。
ソースコードの記述
①「main.c」をダブルクリックしてファイルを開く。
②ソースコードを作成します。最初記述されていたテキストを全て消去してください。
下記のソースコードをコピーして貼り付けてください。
#include "project.h"
#define LED_ON (0u) /* Pin state to turn ON an active-LOW LED */
#define LED_OFF (1u) /* Pin state to turn OFF an active-LOW LED */
int main()
{
__enable_irq(); /* Enable global interrupts. */
EZI2C_1_Start(); /* Start EZI2C Component */
/*
* Set up communication and initialize data buffer to CapSense data structure
* to use Tuner application
*/
EZI2C_1_EzI2CSetBuffer1(sizeof(CapSense_1_dsRam),
sizeof(CapSense_1_dsRam),
(uint8_t *)&(CapSense_1_dsRam));
CapSense_1_Start(); /* Initialize Component */
CapSense_1_ScanAllWidgets(); /* Scan all widgets */
for(;;)
{
/* Do this only when a scan is done */
if(CapSense_1_NOT_BUSY == CapSense_1_IsBusy())
{
CapSense_1_ProcessAllWidgets(); /* Process all widgets */
CapSense_1_RunTuner(); /* To sync with Tuner application */
if (CapSense_1_IsAnyWidgetActive()) /* Scan result verification */
/* add custom tasks to execute when touch detected */
{
LED_Write(LED_ON); /* Turn ON Active-Low LED */
}
else
{
LED_Write(LED_OFF); /* Turn OFF Active-Low LED */
}
CapSense_1_ScanAllWidgets(); /* Start next scan */
}
}
}
/* [] END OF FILE */
プロジェクトの書き込み
①プロジェクトを書き込むため、評価ボードをPCへ接続します。
②「Build」をクリックしプロジェクトをビルドします。
無事ビルドが完了すると、Output領域に「Build Succeeded」がレポートされます。
③「Program」をクリックし、ターゲットボードに書き込みを行います。
Output領域に「Device ‘デバイス名’ was successfully programmed 」がレポートされれば書き込み完了です。
動作確認①
CAPSENSE™ボタンを指で触れると緑色のLEDが点灯することを確認してください。
これで CAPSENSE™ アプリケーションを評価ボード上に実装することができました。
次にPSoC™ Creator から CAPSENSE™ Tuner を立ち上げます。
CAPSENSE™ Tuner の起動
スケマティックのページ(TopDesign.cysch)から CAPSENSE™ コンポーネントを右クリックし、Launch Tunerを選択します。 選択後、CAPSENSE™ Tuner が⽴ち上がります。
ターゲットとの通信設定
ターゲットボードとの接続設定を行います。
① 左上にある「Tuner Communication Setup」ボタンをクリックしてください。
② CAPSENSE™ Tunerでは予めデザインに組み込むコンポーネントによって I2C と UART の2種類の通信方式を選択可能です。今回はEZI2Cコンポーネントを使用していますので、「I2C」方式を選択します。
③ I2C Speedを「100kHz」に変更し「OK」を選択します。
④ 設定完了後、Communication mode に「Synchronized」を選択します。
⑤ Button0_Sns0に「✔」を入れます。
⑥ 「Connect」ボタンで接続、「Start」ボタンで Tuner を開始します。
動作確認②
評価ボードのタッチボタンに触れるとCAPSENSE™ Tunerにボタンのステータスと現在のSignal値(信号値)が表示されます。Graph Viewを選択するとリアルタイムで各信号値がグラフに表示されます。
担当エンジニアからの一言
今回は CAPSENSE™ Tuner の起動方法をHands On形式で説明しました。
PSoC™ CreatorからCAPSENSE™の実装ができ、パラメーター、ボタン配置、ピン設定等も簡単に変更することができます。
次回はCAPSENSE™ Tunerでタッチボタンのチューニング方法を説明します。
その他すべての名称は、それぞれの所有者に帰属します。