▼PSoCメモ▼
PSoC


PSoC(Programmable System on Chip)
ニーズにあわせたデバイス構築が可能な集積回路。
プログラミング可能なやわらかハードウェア。
様々なアプリケーションをワンチップ、あるいはごく少数の部品で実現できる。



機能 構成
アナログブロック ADC、DAC、フィルタ、アンプ、コンパレータ
デジタルブロック タイマ、カウンタ、PWM、UART、SPI、IC2、IrDA
Flash コード格納用(4〜32)
SRAM データ格納用(256B〜2KB)
M8Cマイクロコントローラ -


製品ファミリ
アナログブロック デジタルブロック Flash SRAM
21X製品ファミリ 2 4 2または8KB 256または512B
24X製品ファミリ 6 4 4KB(16KB USBバージョン) 256B(1KB USBバージョン)
27X製品ファミリ 12 8 16KB 256B
29X製品ファミリ 12 16 32KB 2KB


情報源


リンク
PSoC ブログ 販売店
CYPRESS ことぶ記 秋月電子通商
PSoCチュートリアル計画 s.h.log PastelMagic
PSoC Expressで遊ぼう! トグサ秋月の電脳設計室 -
PSoCプログラミング・メモ doggie's blog -
doggie's Home 電子工作 帰ってきたkenshiroの冒険 -
PSoCフォーラム - -


開発ツール


ソフトウェア開発ツール
開発ツール 説明 備考
PSoC Designer 統合開発環境。
開発言語はC言語/アセンブリ言語。
C言語の利用にライセンスコード(16,000円程度)が必要。

アセンブリ言語の利用は無償。

モジュール配置と配線を行い動作を指定することにより
PSoCデバイスの内部回路を生成する。
「PSoC Designer(C言語)」、
「PSoC Designer(アセンブリ言語)」、
「PSoC Express」の3つから選択することになる。
有料だが「PSoC Designer(C言語)」が良い。
Cコンパイラライセンスコード
CY3202-C
PSoC DesignerでC言語を利用する際に必要。
PSoC Express 統合開発環境。
開発言語を使わないGUIによる設定ツール。
無償で利用可能。
開発は容易だが利用可能な機能が限られる。

PSoCデバイスと接続するデバイスを設定することにより
PSoCの内部回路を自動生成する。
PSoC Programmer パソコンからPSoCへのプログラム書き込みツール。
無償で利用可能。
-


ハードウェア開発ツール
開発ツール 説明 備考
PSoCデバイス PSoCデバイス -
ブレッドボードと各種電子部品 はじめは評価ボードで試すと良い。 -
PSoC MiniProg(PSoCライター) プログラムをUSB経由でパソコンからPSoCに書き込むためのライター。 -
PSoCデバッガー ブレークポイント配置。
ステップ実行。
レジスタ・メモリ・Flashデータの監視・変更。
あると便利だが高価。
デバッガーを利用するには
デバッグ専用PSoCデバイスも必要。


ハードウェア開発ツールキット
開発ツール 内容 備考
Cyperss PSoCミニプログラマセット
CY3210-MINIPROG1
PSoCデバイス(CY8C29466)
評価ボード

 -28ピンICソケット
Mini Prog
初級者向け
Cyperss PSoC エバリュエーションセット
CY3210-PSOCEVAL1
PSoCデバイス(CY8C29466)
評価用ボード
 -28ピンICソケット
 -ブレッドボードエリア
 -RS232インタフェース
 -乾電池の接続端子
 -A/D実験用のボリューム
 -スイッチ
 -LED
Mini Prog
液晶パネル
中級者向け
Cyperss PSoCディベロップメントキット
CY3215-DK(IC Cube)
In-Circuit-Emulator(IC-Cube)
PSoCデバイス(CY8C29466-24PXI)
CY8C29xxxファミリ用ICE FlexPod(アダプタ)
ミニプログラミングボード
ISSPケーブル
USB2.0ケーブル
ACアダプタ

Cコンパイラライセンスコード
上級者向けデバッグツール
FlexPod(別売り)の取り替えにより
様々なパッケージのPSoCに対応


用語


ドライバ
「ドライバ(Driver)」とは、PSoCの外部デバイスを動作させるためのファームウェアライブラリ。
「ドライバカタログ(Driver Catalog)」からドライバを選択して利用。

ドライバの種類は以下の3つ。
ドライバ 備考
入力 センサー、タコメータ、ボリューム サイプレス社が提供
出力 リレー、PWM、ブザー、ファン 「伝達関数(Transfer Function)」を利用して
動作を定義する必要あり
インタフェース I2Cスレーブ、USB 通信を可能にする


バリュエータ
「バリュエータ(Valuators)」とは、メモリに保存された値。

バリュエータの種類は以下の2つ。
バリュエータ 説明
インターフェイスバリュエータ 通信インタフェース経由で外部ハードウェアによって変更された値
伝達関数バリュエータ 伝達関数によって変更された値

バリュエータの伝達関数の種類は以下の3つ。
バリュエータの伝達関数 説明
ループディレー(LoopDelay) 現在のデータを前のデータと比較から計算。
セットポイント領域(SetPointRegion) 入力値の領域をセット番号に変換。
ステートマシーン(StateMachine) 開始時から現在までの状態遷移から計算。


伝達関数
「伝達関数(Transfer Function)」は、出力やバリュエータの値を定義する関数。

伝達関数の種類は以下の6つ。
伝達関数 説明
ループディレー(LoopDelay) 現在のデータを前のデータと比較から計算。
セットポイント領域(SetPointRegion) 入力値の領域をセット番号に変換。
ステートマシーン(StateMachine) 開始時から現在までの状態遷移から計算。
ポイントリィエンコーダ(PointryEncoder) 優先順位の高い入力から計算。

If x1 then y1
Else If x2 then y2
Else If x3 then y3
ステータスエンコーダ(StatusEncoder) 複数の入力から計算。

If x1 then y1
If x2 then y2
If x3 then y3
テーブルルックアップ(TableLookup) 入出力を適切な1対1の関係に割り当てるテーブルから計算。

伝達関数の演算子の種類は以下の3つ。
伝達関数の演算子 説明
演算演算子 +,-,*,/,%
論理演算子 &&,||,==,!=,<=,>=,>=,!,<,>
ビット演算子 >>,<<,&,|,~


PSoC Expressのドライバ


入力
Acceleration 加速度センサ
Airflow 風量センサ
CapSense タッチセンサ
Current 電流センサ
Digital Input デジタル入力
Distance 距離
Expanders エキスパインダ
Humidity 湿度センサ
Light Sensors ライトセンサ
Pressure 圧力センサ
Remote Devices リモートデバイス
Resistance 抵抗
Speed 速度センサ
Tactile 触覚センサ
Temperature 温度センサ
Timing タイミング
Voltage Input 電圧入力

出力
Digital IO デジタルIO
Digital Output デジタル出力
Display 表示(LED,LCD)
Expanders エキスパンダ
FAN ファン
PWM PWM
Remote Devices リモートデバイス
System Services システムサービス
Timing タイミング
Voltage Output 電圧出力
WirelessUSB WirelessUSB

インタフェース
I2C I2Cコントローラ
USB USB
WirelessUSB WirelessUSB


PSoC Designerのモジュール


モジュール
ADCs A/Dコンバータ
Amplifiers アンプ
Analog Comm Analog Comm
Counters カウンタ
DACs D/Aコンバータ
Digital Comm Digital Comm
Filters フィルタ
Generic Generic
Misc Digital Misc Digital
MUXs マルチプレクサ
Protocols プロトコル
PWMs PWM
Random Seq 擬似乱数生成
Temperature 温度計
Timers タイマ


PSoCデバイス


CapSense
静電容量方式タッチセンサとPSoCを1チップ化したもの。

PRoC LP
WirelessUSBトランシーバとPSoCを1チップ化したもの。


開発ツールの準備


PSoC Express
  1. PSoC Express」と「PSoC Express Version 3.0 Express Pak 4」をダウンロード。
  2. 「PSoC Express」をインストーラの指示に従ってインストール。
  3. 「PSoC Express Version 3.0 Express Pak 4(サービスパック)」をインストーラの指示に従ってインストール。
PSoC Designer
  1. サイトから「PSoC Designer」をダウンロード。
  2. インストーラの指示に従ってインストール。
PSoC Programmer
  1. サイトから「PSoC Programmer」をダウンロード。
  2. インストーラの指示に従ってインストール。
MiniProg USBドライバー
  1. 「MiniProg」を接続しない状態で付属CD-ROMを入れる。
  2. 「MiniProg」をUSB接続。
  3. 「新しいハードウェアが見つかりました。」で「いいえ、今回は接続しません」を選択。
  4. 次の画面で「ソフトウェアを自動的にインストールする」を選択。


PSoC Express - LEDの点灯


LEDの点灯
新規プロジェクトの作成
  1. スタートメニューから「PSoC Express 3」を起動。
  2. メニュー「File→New Project」を選択。
  3. プロジェクト名「LEDEx」を入力してOKボタンを押す。

入力、出力、インタフェースデバイスの配置
  1. 画面左の「ドライバカタログ」の「Inputs」から「Tactiles/Button/Normally Open/Internal_Pulldown N_O」をドラッグ&ドロップで配置。
  2. Nameを「Button」に変更。
  3. 画面左の「ドライバカタログ」の「Outputs」から「Display/LED/Single Color/With Decay」をドラッグ&ドロップで配置。
  4. Nameを「LED」に変更。
  5. Decay Timeを「500」に変更。

出力デバイスの動作の定義
  1. 「LED」を右クリックし、「Transfer Function」を選択。
  2. 「TableLookup」を選択してOKボタンを押す。
  3. 「Button」を選択してOKボタンを押す。
  4. 「Button」の「Off」を「Decay」にドラッグ&ドロップ。
  5. 「Button」の「On」を「On」にドラッグ&ドロップ。
  6. OKボタンを押す。

シミュレータで動作確認
  1. Simulationボタンを押す。
  2. ButtonをON/OFFするとDisplayに0/1が出力。

プロジェクトのビルド
  1. メニュー「Build→Generate/Build」を選択。
  2. 「CY8C21030/CY8C21434」を選択しNextボタンを押す。

ピンの配置
  1. 「LED」を20 P[0]にドラッグ。
  2. 「Button」を15 P1[4]にドラッグ。
  3. NEXTボタンを押す。

PSoCデバイスへの書き込み
  1. MiniProgのUSB経由でパソコンとPSoCデバイスを接続。
  2. メニュー「Program→Programmer」を選択。
  3. Portで「MINIProg1」を選択。
  4. Programボタンを押す。
  5. 「Programming Successed」と表示されたら書き込み成功。
  6. Toggle Device Powerボタンを押す。



PSoC Express - A/D変換とLCD出力


A/D変換とLCD出力
新規プロジェクトの作成
  1. スタートメニューから「PSoC Express 3」を起動。
  2. メニュー「File→New Project」を選択。
  3. プロジェクト名「LCDEx」を入力してOKボタンを押す。

入力、出力、インタフェースデバイスの配置
  1. 画面左の「ドライバカタログ」の「Inputs」から「Voltage Input/DC/0 to 2600mV」をドラッグ&ドロップで配置。
  2. Nameを「Volts」。
  3. 画面左の「ドライバカタログ」の「Outputs」から「Display/LCD/LCD Horizontal Bar Graph」をドラッグ&ドロップで配置。
  4. Nameを「LCD」に変更。
  5. Max Valueを「2600」に変更。

出力デバイスの動作の定義
  1. 「LCD」を右クリックし、「Transfer Function」を選択。
  2. 「StatusEncoder」を選択してOKボタンを押す。
  3. 「if 1 then Volts」と入力しOKボタンを押す。

シミュレータで動作確認
  1. Simulationボタンを押す。
  2. Voltsのバーを動かし、LCDの出力の変化を確認。

プロジェクトのビルド
  1. メニュー「Build→Generate/Build」を選択。
  2. 「CY8C27000/CY8C27643,48-Pin MLF」を選択しNextボタンを押す。

ピンの配置
  1. 「Volts」を46 P0[1]にドラッグ。
  2. 「LCD(Pin5)」を33 P6[4]へ移動。
  3. NEXTボタンを押す。

PSoCデバイスへの書き込み
  1. MiniProgのUSB経由でパソコンとPSoCデバイスを接続。
  2. メニュー「Program→Programmer」を選択。
  3. Portで「MINIProg1」を選択。
  4. Programボタンを押す。
  5. 「Programming Successed」と表示されたら書き込み成功。
  6. Toggle Device Powerボタンを押す。
    LCDへの数値表示は設定し忘れたかも。


PSoC Designer


編集モード
Config 説明
Selection 内蔵回路の選択
Interconnection 内部回路の配線
Application Editor C言語やアセンブラでコードを記述


内部配線図の表示操作
Config 説明
配線図の拡大 Ctrl+マウスドラッグ or マウスクリック
配線図の縮小 Ctrl+Shift+マウスクリック
配線図の移動 Alt+マウスドラッグ



PSoC Designer - IOコントロール


電子工作の"Hello World!"である「LEDの点灯」を行うアプリケーションを作成する。


プロジェクトの作成
  1. メニュー「File→New Project→Create New」を選択。
    「New Project」ダイアログが開く。
  2. 「Create a new Project」を選択。
  3. 「Project name」にプロジェクト名「HelloPSoC」と入力。
  4. 「New project location」にプロジェクトを生成するディレクトリを指定。
  5. 次へボタンを押す。
  6. 新規ディレクトリ生成の確認ダイアログがでるのではいボタンを押す。

  7. 「Create New Project」ダイアログが開く。


  8. ベースパーツとして「CY8C27443」を選択。同じ型番が複数あるがどれでもOK。
  9. 言語としてCまたはAssembler(アセンブラ)を選択。C言語を利用するにはライセンス購入が必要。
  10. 完了ボタンを押す。


モジュールの選択
今回は未使用。


内部配線の設定
  1. メニュー「Config→InterConnect」を選択。

  2. 左下の「Name/Port/Select/Drive/Interrupt」のグリッドを編集する。
    今回は出力のテストを行うので、Port_2_0のDriveをStrongに変更。
  3. メニュー「Config→Generate Application」を選択。


ソースコードの記述
  1. メニュー「Config→Application Editor」を選択。
  2. 左側のツリーの「Sorce File」フォルダ内の「main.c」または「main.asm」をダブルクリック。
  3. Port2_0をHighに設定するコードを記述
    C言語の場合
    #include // part specific constants and macros
    #include "PSoCAPI.h" // PSoC API definitions for all User Modules
    void main()
    {
        // Insert your main routine code here.
        PRT2DR = 0x01;
    }
    アセンブラの場合
    include "m8c.inc" ; part specific constants and macros
    include "memory.inc" ; Constants & macros for SMM/LMM and Compiler
    include "PSoCAPI.inc" ; PSoC API definitions for all User Modules
    export _main
    _main:
        ; Insert your main assembly code here.
        mov reg[PRT2DR],0x01
    .terminate:
    jmp .terminate

  4. メニュー「Build→Rebuild All」を選択してビルド。


マイコンへの書き込み
  1. ハードウェアとしてmini Programmer経由で接続。
  2. メニュー「Program→Program Part」を選択。
    Programアプリケーションが起動し書き込み。


PSoC Designer - モジュール


モジュールを利用するアプリケーションを作成する。


プロジェクトの作成
  1. メニュー「File→New Project→Create New」を選択。
    「New Project」ダイアログが開く。
  2. 「Create a new Project」を選択。
  3. 「Project name」にプロジェクト名「ModuleEx」と入力。
  4. 「New project location」にプロジェクトを生成するディレクトリを指定。
  5. 次へボタンを押す。
  6. 新規ディレクトリ生成の確認ダイアログがでるのではいボタンを押す。

  7. 「Create New Project」ダイアログが開く。
  8. ベースパーツとして「CY8C27443」を選択。同じ型番が複数あるがどれでもOK。
  9. 言語としてCまたはAssembler(アセンブラ)を選択。C言語を利用するにはライセンス購入が必要。
  10. 完了ボタンを押す。


モジュールの選択
  1. 画面左のモジュールリストから「PWMs」を開く。
    「PWM8」をダブルクリック。
  2. 上側のウィンドウに追加される。
    画面右の「Resource Meter」を見ると「Digital Block」が消費されたことがわかる。


内部配線の設定
「PWM」を設置した後、PWMと出力ポートの配線を接続させる。
  1. メニュー「Config→InterConnect」を選択。

  2. 「PWM8」を配置することが可能な場所に緑枠が表示される。
    「PWM8_1」を「右クリック→Place」で配置される。
  3. 画面左上の「Global Resources」を設定。
  4. 画面左の「PWM8_1」を設定。
  5. 回線RO 0[0]の右端の四角い部分をクリック。
  6. 以下のようなウィンドウが開くので一番上の三角をクリックし「GlobalOutEven_0」を選択。
  7. 回線GOE 0を選択し「Pin→Port2_0」を選択。
  8. 以下のように繋がる
  9. メニュー「Config→Generate Application」を選択。


ソースコードの記述
  1. メニュー「Config→Application Editor」を選択。
  2. 左側のツリーの「Sorce File」フォルダ内の「main.c」または「main.asm」をダブルクリック。
  3. コードを記述
    C言語の場合
    #include // part specific constants and macros
    #include "PSoCAPI.h" // PSoC API definitions for all User Modules
    void main()
    {
        // Insert your main routine code here.
        PWM8_1_Start();
    }
    アセンブラの場合
    include "m8c.inc" ; part specific constants and macros
    include "memory.inc" ; Constants & macros for SMM/LMM and Compiler
    include "PSoCAPI.inc" ; PSoC API definitions for all User Modules
    export _main
    _main:
        ; Insert your main assembly code here.
        call PWM8_1_Start
    .terminate:
    jmp .terminate

  4. メニュー「Build→Rebuild All」を選択してビルド。


マイコンへの書き込み
  1. ハードウェアとしてmini Programmer経由で接続。
  2. メニュー「Program→Program Part」を選択。
    Programアプリケーションが起動し書き込み。





−戻る−