Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PSoC5LP超入門体験ハンズオン!@大阪日本橋
Search
Noguchi
June 29, 2019
Programming
1
880
PSoC5LP超入門体験ハンズオン!@大阪日本橋
2019.06.29 日本橋 共立電子にて行われたハンズオンの資料です。
Noguchi
June 29, 2019
Tweet
Share
More Decks by Noguchi
See All by Noguchi
Algyan-kansai-Kokuhyou2
techan
1
420
Other Decks in Programming
See All in Programming
Amazon ECS とマイクロサービスから考えるシステム構成
hiyanger
2
580
Writing documentation can be fun with plugin system
okuramasafumi
0
130
pylint custom ruleで始めるレビュー自動化
shogoujiie
0
140
Honoのおもしろいミドルウェアをみてみよう
yusukebe
1
220
Rails アプリ地図考 Flush Cut
makicamel
1
130
JavaScriptツール群「UnJS」を5分で一気に駆け巡る!
k1tikurisu
9
1.8k
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
6
2.1k
React 19アップデートのために必要なこと
uhyo
5
870
パスキーのすべて ── 導入・UX設計・実装の紹介 / 20250213 パスキー開発者の集い
kuralab
3
860
PHPのバージョンアップ時にも役立ったAST
matsuo_atsushi
0
210
Generating OpenAPI schema from serializers throughout the Rails stack - Kyobashi.rb #5
envek
1
290
Datadog DBMでなにができる? JDDUG Meetup#7
nealle
0
120
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
How to Think Like a Performance Engineer
csswizardry
22
1.4k
4 Signs Your Business is Dying
shpigford
182
22k
Building Your Own Lightsaber
phodgson
104
6.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Side Projects
sachag
452
42k
Facilitating Awesome Meetings
lara
52
6.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
Designing for Performance
lara
604
68k
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での動作注意を補⾜