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
840
PSoC5LP超入門体験ハンズオン!@大阪日本橋
2019.06.29 日本橋 共立電子にて行われたハンズオンの資料です。
Noguchi
June 29, 2019
Tweet
Share
More Decks by Noguchi
See All by Noguchi
Algyan-kansai-Kokuhyou2
techan
1
410
Other Decks in Programming
See All in Programming
見せてあげますよ、「本物のLaravel批判」ってやつを。
77web
7
7.8k
Jakarta EE meets AI
ivargrimstad
0
190
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
1k
광고 소재 심사 과정에 AI를 도입하여 광고 서비스 생산성 향상시키기
kakao
PRO
0
170
AWS Lambdaから始まった Serverlessの「熱」とキャリアパス / It started with AWS Lambda Serverless “fever” and career path
seike460
PRO
1
260
受け取る人から提供する人になるということ
little_rubyist
0
230
Click-free releases & the making of a CLI app
oheyadam
2
120
Amazon Bedrock Agentsを用いてアプリ開発してみた!
har1101
0
340
Duckdb-Wasmでローカルダッシュボードを作ってみた
nkforwork
0
130
CSC509 Lecture 11
javiergs
PRO
0
180
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Agile that works and the tools we love
rasmusluckow
327
21k
Done Done
chrislema
181
16k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Ruby is Unlike a Banana
tanoku
97
11k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Typedesign – Prime Four
hannesfritz
40
2.4k
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での動作注意を補⾜