PSoC5LP超入門体験ハンズオン!@大阪日本橋

 PSoC5LP超入門体験ハンズオン!@大阪日本橋

2019.06.29 日本橋 共立電子にて行われたハンズオンの資料です。

6fccfdb9bd1eb92f20be84c3497ef7dd?s=128

Noguchi

June 29, 2019
Tweet

Transcript

  1. PSoC5LP超入門 体験ハンズオン! Ver.2019.06.29 @tetnoguchi(twitter) / techa.nog(facebook) *画像はCypressのHPから拝借

  2. PSoC とは。。。 のSoC マイコンコア + CPLDなイメージ。 シリーズは5系列。 PSoC1: M8C PSoC3:

    8051 PSoC4: ARM CortexM0 PSoC5: ARM CortexM3 PSoC6: ARM CortexM0 + CortexM4 マルチコア *画像はCypressのHPから拝借  PSoC3/5 は CPUコアと12bitSARの有無がちがうだけ。。。
  3. UDB(Universal Digital Blocks) CPLDみたいなもん(12入力 4出力のPLD) 必要な機能はUDBで、必要な分だけ用意すればいいよね! という思想。ここがほかのマイコンと大きく違う部分。 ただ、 PSoC5には最大24個。 PSoC4は最大4個

    しかない。 その分安いけれど。 PSoc4は拡張性が大幅に削減されている PSoC5 *各TRMより拝借 PSoC4
  4. PSoC4はアナログ系も大幅に簡略化 PSoC5 *各TRMより拝借 PSoC4 PSoC4 は アナログ系につかえるピンが制限されているし、機能もすくない。。。

  5. 肝⼼のUDBがない︕。。。。orz 代わりに IOSS GPIO (SmartIO)が配備されている。 LUTで任意のIOの状態をAND/ORできるようにしているので PSoC1的な取り込みなのかも。 あまり⾃由度はないから、使いにくい︖ *各TRMより拝借 ちなみに、

    トランジスタ技術2019/5⽉号付属のTSoCは PSoC4100S。
  6. 今回は PSoC5LP (CY8C5888‐LTI‐LP097)で進める。。。 1500円でデバッガ付き! PSoC5LP PrototypingKit CY8CKIT‐059 http://akizukidenshi.com/catalog/g/gM‐09432/ 慣れたら、PSoC4にいくもヨシ。 こちらは600円だし。http://akizukidenshi.com/catalog/g/gM‐08446/

    (PSoC4200 PrototypingKitは形状は似ているがデバッガではないでの注意。。) 標準デバッガは MiniProg3 (CY8CKIT‐002)だが、サイプレス直販で$99。 https://www.cypress.com/documentation/development‐kitsboards/cy8ckit‐002‐psoc‐miniprog3‐program‐and‐debug‐kit MiniProg4 (CY8CKIT‐005) が発売された。 サイプレス直販で$99。 https://www.cypress.com/documentation/development‐kitsboards/cy8ckit‐005‐miniprog4‐program‐and‐debug‐kit 必ず MiniProg3かMiniProg4であること! (秋月にはMiniProg1はあるけど、PSoC1用なので注意!) でも、当面はCY8KIT‐059のデバッガで十分。 切り離して、デバッグできる! *一部画像はCypress/秋月通商のHPから拝借
  7. ボード仕様的には J1 = デジタル系 J2 = アナログ系 を想定しているように見える オンボードのSW/LED/コンデンサに注意 P1[0]/P1[1]もデバッグピンなので使えない!

    SIOはスペシャルファンクションIO 5Vトレラントで、オープンドレイン設定可。 内蔵機能のI2Cもここに割り振られる。 PSoC3/5はIOバンクごとに電源電圧を設定 できるが、このボードでは不可。 VDDはUSB/Debugger経由だと5Vになるので 3.3Vで利用する場合はちょっと改造要。 *回路図はschematicより拝借
  8. (準備) KitProgデバッガの確認

  9. KitProgのファームバージョンがちがうとうまく書き込みできないので、バージョンを合わせておく。 KitProgをUSBで接続したうえで、PSoC Programmer を起動する。 バージョンがちがうと、『アップデートしろ︕』と怒られるので、 Utilities タブ から、Upgrade Firmware を選択。

  10. つかってみよう! PSoC5

  11. -Work 01- LEDを点灯しよう︕

  12. 今回のボードにはオンボードで、汎⽤のSWとLEDが接続されている。 まずは、これで⼩⼿調べ。 LED は IO(P2_1)  LEDアノード  GND と接続されているので、制御は正論理でよい。

    SW は IO(P2_2)  SW(open側) / SW(Close側)  GND なので、 そのままつかうとSWが押されていない場合、オープン(ハイインピーダンス状態)になる! 内蔵プルアップ抵抗を有効にしてつかう。 Schematicの部分にコンポーネントを配置する。 SWとLEDなので、 LED  Digital Output Pin (Pin_1) SW  Digital Input Pin (Pin_2) に割り振る。 SWでLEDを制御したいので、 配線ツールで、Pin_2 と Pin_1 をつなぐ。 コンポーネントカタログから必要機能を ドラッグアンドドロップする
  13. SWはプルアップされていないので、IO定義で内蔵プルアップを 有効にしてやる。  Pin_2 をダブルクリックして Drive modeをResistive Pull upにする

  14. スケマティック(回路図 = xxx.cysch)ができたので 設定ファイル( xxx.cydwr )を開き、 ピン配置を決める。 LEDはPin_1 = P2[1]

    SWはPin_2 = P2[2] なので、 右にあるピンをドラッグ アンド ドロップで配置したいピンに割り付ける。 できたら、いったんビルドする︕(メニューの Build-Build xxx)
  15. 必要なソースコードも準備されたので、 Debug – Program で 書き込んでみる。書き終わると⾃動的に実⾏されるので SW を 押して LEDが

    変化するのを確かめよう︕︕
  16. SWとLEDの論理が逆なので、反転動作をいれてみよう︕ Digital – Logic – Not をえらんで Pin_2  Pin_1

    の間に配置と接続。 できたら、Build  Program で動作確認。
  17. -Work 02- Lチカいろいろ(Timer/PWM編)

  18. こんどは、点滅動作をさせてみる。 まずは、オーソドックスにタイマーをつかって、チカチカさせる。 LED と SWにわりつけた Pin_1/Pin2の設定を開いて HW Connection のチェックをはずします。 こんな⾵に、相互接続部がなくなります

    これで、ソフトからの制御のみになります
  19. コンポーネントカタログから、TimerとInterruptを配置して 図のように接続する。(名前もこのように︕) 今回は1msのタイマーをつくるので、 Clock_1を10kHzに変更します。

  20. Timer_1 の設定をします。 Clockが10kHzなので、 Period = 10 にすると、 1kHz = 1ms

    のタイマーができあがります。 タイマーが完了したときに 割り込みを発⽣させたいので Interrupt On TC にチェックをいれておきます。 できたら、いったんビルドする︕ (メニューの Build-Build xxx)
  21. 基本ソースが⽣成されたので、 あとはプログラムを記述します。 CY_ISRは割り込みハンドラ。 割り込み発⽣した場合に 呼び出される特殊関数です。 今回は、 isrTimer_1 と紐づけていますね。 できたら、ビルドして 書き込んで確認しましょう。

  22. 同様のことはPWMでやるほうが簡単です。 PWMコンポーネントを配置して、 クロックとPin_1(LED)を 配置してください。 Pin_1 は HW Connection のチェックをいれるんですよね。

  23. PWMの設定はこんな感じ。 10kHzが投⼊されているので 16-bit One Output Period=999 CMP Value = 500

    これで 100ms周期 Duty=50% 完成。
  24. 基本設定が完了したので、 いったんビルド︕︕ ソースが⾃動⽣成されたので、 ソース改訂。 Pin_1 が ハード接続されたので ソフトは注釈化。 そして PWM_1を開始。

    ここまでできたら、 ビルド & 書き込み︕
  25. Debug – Program で 書き込んでみる。書き終わると⾃動的に実⾏されるので LEDがおなじように点滅するか、たしかめよう︕

  26. -Work 03- UART をつかってみる

  27. UART (Universal Asynchronous Receiver/Transmitter) は、調歩同期式シリアル通信。 要は、時間でIOをON/OFFしながら伝達する通信⽅式。 PSoCでも、もちろん⽤意されている。 コンポーネントカタログの Communication からドロップすると準備完了

    P12_7 = TX P12_6 = RX に設定する *wikipedia
  28. Resetピンに、Logic=0 を配置。 UART_1の設定を変更する。 Bits Per second = 115200 RX buffer

    size = 64 にして、いったんビルドしておく。
  29. ソースコードを⼊⼒する。 変数を⽤意して UART_1 をスタート 受信電⽂を得て、 UARTで送り返す。 できたら、ビルド&書き込み

  30. TeraTermを起動して、『新しい接続』から KitProg USB-UART (COMxx) をひらく。 『設定』-『シリアルポート』 ボーレート = 115200 『設定』-『端末』で

    送信 = CR+LF にする。 キーボードで押した⽂字列が 返信されてきているのを確認する。
  31. -Work 03- USB をつかってみる

  32. USBで疑似UART通信をおこなうコンポーネントも ⽤意されている。(USB-CDC) コンポーネントカタログの Communication からドロップすると準備完了

  33. DesignWideResources の Clock タブで ⻩⾊いところを ダブルクリックする。 ILO = 100 kHz

    IMO = 24MHz USB = Check できたら Build !
  34. UARTのときとおなじ処理を つくってみた。 接続・再接続がめんどくさいけれど ほぼ、UARTとおなじ。

  35. TeraTermを起動して、『新しい接続』から COMxx: USB シリアルデバイス (COMxx) をひらく。 『設定』-『シリアルポート』 ボーレート = 115200

    『設定』-『端末』で 送信 = CR+LF にする。 キーボードで押した⽂字列が 返信されてきているのを確認する。 *Windows10以前のOSでは、 プロジェクトフォルダのしたにある ¥Generated_Source¥PSoC5¥USBUART_1_cdc.inf があるので、ドライバファイルとして指定します。
  36. Windows10の最新アップデートがかかっている状態では USB-CDCがそのまま認識されるので、苦も無くつながるはずです。 初期のWindows10および8以前のOSでは、 プロジェクトフォルダのしたにある ¥Generated_Source¥PSoC5¥USBUART_1_cdc.inf があるので、ドライバファイルとして指定します。 また、Windows8では、署名つきドライバしか利⽤できないので このままではUSBをつかえません。なので、 https://freesoft.tvbok.com/win10/testmode.html を参考にして、

    ドライバー署名の強制 を無効にしてください。
  37. USBでの通信とUARTでの通信ができたので USBーシリアルコンバータも、これでできますよね︕ さー︕ つくってみよう︕ どうすればいいかな︖

  38. CY8CKIT-059 PSoC® 5LP Prototyping Kit With Onboard Programmer and Debugger

    https://japan.cypress.com/documentation/development-kitsboards/cy8ckit-059-psoc-5lp-prototyping-kit-onboard-programmer-and  Download CY8CKIT-059 Kit Setup (Kit Design Files, Creator, Programmer, Documentation, Examples) https://japan.cypress.com/file/416376 CY8CKIT-059 Schematics.pdf https://www.cypress.com/file/443786/download CY8CKIT-059 PSoC 5LP Prototyping Kit Guide https://www.cypress.com/file/157966/download CY8CKIT-059 PSoC 5LP Prototyping Kit Guide https://www.cypress.com/file/157971/download PSoC5LP Technical Reference Manual https://japan.cypress.com/documentation/technical-reference-manuals/psoc-5lp-architecture-trm
  39. お疲れ様でした︕ どうでしたか︖ これ以外にもいろいろな 便利なコンポーネントが⽤意されています︕ どんどん使ってみましょう︕

  40. <改訂> 2019.07.01 追記 p34 USBUART_1_START関数のところも協調 P35/36 infファイルの指定不要とWin8での動作注意を補⾜