#author("2018-11-28T02:19:48+00:00","","")
[[&ref(home.gif);:http://jaco.ec.t.kanazawa-u.ac.jp/kitagawa/]]
~
Visitor No. &counter(total);

Cypress Semiconductor社PSoC Creator (PSoC3以上) 関連のメモです。
~
----
*目次 [#k218fc8f]
#contents();

*コメント欄 [#d1b3049c]
#pcomment(reply);

*メモ [#z5b56d96]
***PSoC4ファミリー(ARM Cortex-M0版PSoC)の選択 [#def158c5]
ADCが弱いことを除くと低消費電力で使いやすい。4200にはBluetoothLE版もある。
-CY8C4000ファミリ:クロック16MHz, フラッシュ16kB, シリアルポートはI2Cのみ(送信用ソフトウエアUARTはあり)
-CY8C4100ファミリ:クロック24MHz, フラッシュ32kB, I2C/SPI/UART2個, LCD, 12bit-ADC
-CY8C4200ファミリ:クロック48MHz, フラッシュ128kB, DMA, I2C/SPI/UART4個, CAN2個, LCD, 12bit-ADC

***電源構成 [#dcfb22cc]
VDDD, VDDA, VDDR, VCCDなどいろいろあって忘れそうなのでデータシートを要約。
#ref(power_supply.png)
-電源電圧は、1.8-5.5V
--Bluetoth LE搭載ファミリは、1.9-5.5V(1.9V以下でも動作するが、BLEは停止)
-内部LDOはデフォルトで有効
--無効にした場合は、VDD1.71-1.89V、VCCDとVDDDをショートする

***MiniProg3の接続 [#e1433a2c]
純正の書き込み器MiniProg3によるPSoC生チップのプログラムに関する覚え書き。もっとも、MiniProg3は値段が高いので、マニアには敬遠されているらしい。PSoC Programmerを起動して、Utilitiesタブからファームウエアをアップデートしておく(古いファームウエアだと、Power Cycleモードが使用できないと聞いている)。
#ref(HSSP.png)
-プログラムとデバッグにSWD(ARM Serial Wire Debug)を利用する
-どのポートがSWDかは、データシートでSWDを検索する
-SWDポートは汎用IOと共有なので、プログラム専用にするとSWD_IO, SWD_CLKを割り当てた2ポート分の汎用IOが使えなくなることに注意

***開発の流れ [#a78d5c64]
学部生、卒研生向け、プログラムとデバックの手順解説。ここでは、CY8CKIT-142 PSoC4 BLEモジュール(CY8C4247LQI-BL483搭載、技適認証済み)を使用しましたが、BLEを使わないなら PSoC4 CY8C4245あたりでも。

-PSoC外部の回路製作
--下図のようなタクトスイッチを押すとLEDが点灯する回路例を考える。電源VDDDは、MiniProg3から供給(VTARG)する。

#ref(led_sw.png)

-PSoC内部の回路設計
--PSoC Creatorを起動
--File - New - Project...
---Taget device = PSoC4, PSoC4200BLE (使用するデバイスに合わせて) - Nextボタン
--Empty schematic - Nextボタン
---Workspace name, Location, Peoject nameを適当に設定 - Finishボタン
--右欄のComponent Catalog - Cypressタブ - Ports and Pins - Digital Input Pin と Digital Output Pin をドラッグして各1個づつ回路図シート(TopDesign.cysch)に配置
---Componentを選んでComponent Catalog下のOpen datasheetの文字をクリックまたは配置した部品を右クリックして、ポップアップメニューから Open Datasheet... を選ぶと、選んだComponentのデータシートが表示され、Find Code Example...を選ぶとプログラム例のリストが表示される

#ref(pin_01s.png)
--回路図に配置したPinのシンボルをダブルクリックして、下記のように設定 - OKボタン
---HW connection: プログラム制御の場合チェック無し、回路制御の場合☑有り
---Drive mode: 出力回路の設定。スイッチ入力の場合はResistive pull up (押さないときHighとする)、LED点灯の場合はStrong
---Initial drive state(初期状態のHigh, Lowに合わせる)

入力ピン
&ref(pin_input.png,,50%);

出力ピン
&ref(pin_output.png,,50%);

--左欄のWorkspace Explorer - Sourceタブ - Design Wide Resource - Pins をダブルクリック
--右欄のPin_1, Pin_2 をピンアサイン図(Design01.cydwr)のポートP2[2], P2[3]にそれぞれドラッグするか、右欄のPort列のドロップダウンリストから、割り当て先のポートP2[2], P2[3]を選択する

#ref(pin_02s.png)
-プログラムの作成
--左欄のWorkspace Explorer - Sourceタブ - Source Files - main.c をダブルクリック
--下図のようにmain.cのプログラムを入力
---通常、無限ループ for(;;) の上には、電源投入時の初期化処理のコードを入力し、for(;;)ループの中に通常のプログラムを入力する
---CyGlobalIntEnable; では、CPUへの割り込みを許可している(このプログラムでは割り込みを使用しないので、無くてもよい)
---Pin_2_Write(!Pin_1_Read()); では、Pin_1の状態(H or L)を読み取り、Pin_1の否定をPin_2に出力している
--ツールバーの Build ボタンをクリックして、プログラムをビルドする

#ref(pin_03s.png,,60%)
-プログラムの書き込み
--MiniProg3を回路基板のピンヘッダに挿す
--メニューより、Debug - Select target and program...
--MiniProg3を選択
---Port Settingボタンをクリックし下図のように設定して、OKボタンをクリック
--PSoC 4200 BLE CY8C4247LQ*-BL483(ターゲットのデバイス)を選択して、OK/Connectボタンをクリック
---しばらく待つと書き込みが始まる

#ref(program_port.png,,70%)
--MiniProg3から電源供給されているので、MiniProg3を挿したままで動作確認を行う

-デバッグ

PSoC Creatorのデバッグ機能は、非常に便利で、プログラム、動作確認、

--ツールバーの Debugボタンをクリックすると、プログラムの書き込みが行われ、続いてデバッグモードになる

#ref(debug_01zs.png,,75%)

--プログラムコードが表示されているウインドウ左側のグレーの列をクリック
---プログラムの行に赤丸が付いて、ブレークポイント(プログラムを一旦停止させる場所)が設定される
--Step Overボタンをクリックして、関数毎にプログラムを実行して動作を確認する
---Step Into で、関数内部に入り、Step Out で関数の実行前に戻る
---タクトスイッチを押しながら Step OverボタンをクリックするとLEDが点灯する

#ref(debug_03zs.png,,75%)

--Stop Debuggingボタンで、デバッグモードを一旦終了し、上図のようにプログラムを追加(例として変数の内容を確認してみる)
--再度、Debugボタンをクリックし、動作を確認する
--下の方の Localsタブをクリックすると、変数 x の値が表示される
---Step Overボタンをクリックすると、xの値がインクリメントされることが確認できる
---Registersタブをクリックすると、各種レジスタの内容が表示される
---注意:変数に値を代入しても、値がプログラム中で使用されない場合は、Localsに変数が表示されない
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS