$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PSoC5LP超入門体験ハンズオン!@大阪日本橋
Search
Noguchi
June 29, 2019
Programming
1
1k
PSoC5LP超入門体験ハンズオン!@大阪日本橋
2019.06.29 日本橋 共立電子にて行われたハンズオンの資料です。
Noguchi
June 29, 2019
Tweet
Share
More Decks by Noguchi
See All by Noguchi
Algyan-kansai-Kokuhyou2
techan
1
450
Other Decks in Programming
See All in Programming
Microservices rules: What good looks like
cer
PRO
0
1.3k
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
170
React Native New Architecture 移行実践報告
taminif
1
150
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
6
3k
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.3k
AIコーディングエージェント(Gemini)
kondai24
0
210
AIコーディングエージェント(Manus)
kondai24
0
170
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
160
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
160
Microservices Platforms: When Team Topologies Meets Microservices Patterns
cer
PRO
1
1k
ID管理機能開発の裏側 高速にSaaS連携を実現したチームのAI活用編
atzzcokek
0
220
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
710
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
72
12k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
How STYLIGHT went responsive
nonsquared
100
6k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Mobile First: as difficult as doing things right
swwweet
225
10k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
Code Review Best Practice
trishagee
74
19k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
Rails Girls Zürich Keynote
gr2m
95
14k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Transcript
PSoC5LP超入門 体験ハンズオン! Ver.2019.06.29 @tetnoguchi(twitter) / techa.nog(facebook) *画像はCypressのHPから拝借
PSoC とは。。。 のSoC マイコンコア + CPLDなイメージ。 シリーズは5系列。 PSoC1: M8C PSoC3:
8051 PSoC4: ARM CortexM0 PSoC5: ARM CortexM3 PSoC6: ARM CortexM0 + CortexM4 マルチコア *画像はCypressのHPから拝借 PSoC3/5 は CPUコアと12bitSARの有無がちがうだけ。。。
UDB(Universal Digital Blocks) CPLDみたいなもん(12入力 4出力のPLD) 必要な機能はUDBで、必要な分だけ用意すればいいよね! という思想。ここがほかのマイコンと大きく違う部分。 ただ、 PSoC5には最大24個。 PSoC4は最大4個
しかない。 その分安いけれど。 PSoc4は拡張性が大幅に削減されている PSoC5 *各TRMより拝借 PSoC4
PSoC4はアナログ系も大幅に簡略化 PSoC5 *各TRMより拝借 PSoC4 PSoC4 は アナログ系につかえるピンが制限されているし、機能もすくない。。。
肝⼼のUDBがない︕。。。。orz 代わりに IOSS GPIO (SmartIO)が配備されている。 LUTで任意のIOの状態をAND/ORできるようにしているので PSoC1的な取り込みなのかも。 あまり⾃由度はないから、使いにくい︖ *各TRMより拝借 ちなみに、
トランジスタ技術2019/5⽉号付属のTSoCは PSoC4100S。
今回は 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から拝借
ボード仕様的には J1 = デジタル系 J2 = アナログ系 を想定しているように見える オンボードのSW/LED/コンデンサに注意 P1[0]/P1[1]もデバッグピンなので使えない!
SIOはスペシャルファンクションIO 5Vトレラントで、オープンドレイン設定可。 内蔵機能のI2Cもここに割り振られる。 PSoC3/5はIOバンクごとに電源電圧を設定 できるが、このボードでは不可。 VDDはUSB/Debugger経由だと5Vになるので 3.3Vで利用する場合はちょっと改造要。 *回路図はschematicより拝借
(準備) KitProgデバッガの確認
KitProgのファームバージョンがちがうとうまく書き込みできないので、バージョンを合わせておく。 KitProgをUSBで接続したうえで、PSoC Programmer を起動する。 バージョンがちがうと、『アップデートしろ︕』と怒られるので、 Utilities タブ から、Upgrade Firmware を選択。
つかってみよう! PSoC5
-Work 01- LEDを点灯しよう︕
今回のボードにはオンボードで、汎⽤の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 をつなぐ。 コンポーネントカタログから必要機能を ドラッグアンドドロップする
SWはプルアップされていないので、IO定義で内蔵プルアップを 有効にしてやる。 Pin_2 をダブルクリックして Drive modeをResistive Pull upにする
スケマティック(回路図 = xxx.cysch)ができたので 設定ファイル( xxx.cydwr )を開き、 ピン配置を決める。 LEDはPin_1 = P2[1]
SWはPin_2 = P2[2] なので、 右にあるピンをドラッグ アンド ドロップで配置したいピンに割り付ける。 できたら、いったんビルドする︕(メニューの Build-Build xxx)
必要なソースコードも準備されたので、 Debug – Program で 書き込んでみる。書き終わると⾃動的に実⾏されるので SW を 押して LEDが
変化するのを確かめよう︕︕
SWとLEDの論理が逆なので、反転動作をいれてみよう︕ Digital – Logic – Not をえらんで Pin_2 Pin_1
の間に配置と接続。 できたら、Build Program で動作確認。
-Work 02- Lチカいろいろ(Timer/PWM編)
こんどは、点滅動作をさせてみる。 まずは、オーソドックスにタイマーをつかって、チカチカさせる。 LED と SWにわりつけた Pin_1/Pin2の設定を開いて HW Connection のチェックをはずします。 こんな⾵に、相互接続部がなくなります
これで、ソフトからの制御のみになります
コンポーネントカタログから、TimerとInterruptを配置して 図のように接続する。(名前もこのように︕) 今回は1msのタイマーをつくるので、 Clock_1を10kHzに変更します。
Timer_1 の設定をします。 Clockが10kHzなので、 Period = 10 にすると、 1kHz = 1ms
のタイマーができあがります。 タイマーが完了したときに 割り込みを発⽣させたいので Interrupt On TC にチェックをいれておきます。 できたら、いったんビルドする︕ (メニューの Build-Build xxx)
基本ソースが⽣成されたので、 あとはプログラムを記述します。 CY_ISRは割り込みハンドラ。 割り込み発⽣した場合に 呼び出される特殊関数です。 今回は、 isrTimer_1 と紐づけていますね。 できたら、ビルドして 書き込んで確認しましょう。
同様のことはPWMでやるほうが簡単です。 PWMコンポーネントを配置して、 クロックとPin_1(LED)を 配置してください。 Pin_1 は HW Connection のチェックをいれるんですよね。
PWMの設定はこんな感じ。 10kHzが投⼊されているので 16-bit One Output Period=999 CMP Value = 500
これで 100ms周期 Duty=50% 完成。
基本設定が完了したので、 いったんビルド︕︕ ソースが⾃動⽣成されたので、 ソース改訂。 Pin_1 が ハード接続されたので ソフトは注釈化。 そして PWM_1を開始。
ここまでできたら、 ビルド & 書き込み︕
Debug – Program で 書き込んでみる。書き終わると⾃動的に実⾏されるので LEDがおなじように点滅するか、たしかめよう︕
-Work 03- UART をつかってみる
UART (Universal Asynchronous Receiver/Transmitter) は、調歩同期式シリアル通信。 要は、時間でIOをON/OFFしながら伝達する通信⽅式。 PSoCでも、もちろん⽤意されている。 コンポーネントカタログの Communication からドロップすると準備完了
P12_7 = TX P12_6 = RX に設定する *wikipedia
Resetピンに、Logic=0 を配置。 UART_1の設定を変更する。 Bits Per second = 115200 RX buffer
size = 64 にして、いったんビルドしておく。
ソースコードを⼊⼒する。 変数を⽤意して UART_1 をスタート 受信電⽂を得て、 UARTで送り返す。 できたら、ビルド&書き込み
TeraTermを起動して、『新しい接続』から KitProg USB-UART (COMxx) をひらく。 『設定』-『シリアルポート』 ボーレート = 115200 『設定』-『端末』で
送信 = CR+LF にする。 キーボードで押した⽂字列が 返信されてきているのを確認する。
-Work 03- USB をつかってみる
USBで疑似UART通信をおこなうコンポーネントも ⽤意されている。(USB-CDC) コンポーネントカタログの Communication からドロップすると準備完了
DesignWideResources の Clock タブで ⻩⾊いところを ダブルクリックする。 ILO = 100 kHz
IMO = 24MHz USB = Check できたら Build !
UARTのときとおなじ処理を つくってみた。 接続・再接続がめんどくさいけれど ほぼ、UARTとおなじ。
TeraTermを起動して、『新しい接続』から COMxx: USB シリアルデバイス (COMxx) をひらく。 『設定』-『シリアルポート』 ボーレート = 115200
『設定』-『端末』で 送信 = CR+LF にする。 キーボードで押した⽂字列が 返信されてきているのを確認する。 *Windows10以前のOSでは、 プロジェクトフォルダのしたにある ¥Generated_Source¥PSoC5¥USBUART_1_cdc.inf があるので、ドライバファイルとして指定します。
Windows10の最新アップデートがかかっている状態では USB-CDCがそのまま認識されるので、苦も無くつながるはずです。 初期のWindows10および8以前のOSでは、 プロジェクトフォルダのしたにある ¥Generated_Source¥PSoC5¥USBUART_1_cdc.inf があるので、ドライバファイルとして指定します。 また、Windows8では、署名つきドライバしか利⽤できないので このままではUSBをつかえません。なので、 https://freesoft.tvbok.com/win10/testmode.html を参考にして、
ドライバー署名の強制 を無効にしてください。
USBでの通信とUARTでの通信ができたので USBーシリアルコンバータも、これでできますよね︕ さー︕ つくってみよう︕ どうすればいいかな︖
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
お疲れ様でした︕ どうでしたか︖ これ以外にもいろいろな 便利なコンポーネントが⽤意されています︕ どんどん使ってみましょう︕
<改訂> 2019.07.01 追記 p34 USBUART_1_START関数のところも協調 P35/36 infファイルの指定不要とWin8での動作注意を補⾜