SNSへはこちら

PSoCとやらを試食

秋月でなんか良いものないかな〜と買い物をしていた時、こんなボードを見つけました。

なんでも PSoC というらしい。評価ボードかな?なんとお値段600円。即買い。

どうやらただのマイコンではないようだ

とりあえず買って帰りの電車の中で PSoC を調べてみました。

PSoC とは Programmable System on a Chip のことであり、なんとただのマイコンではなくCPLDが載っているとのことらしい。実はここ最近 FPGA を弄りたくて、でも評価ボードが高くてもじもじしていたんです。まあ1種の FPGA ということで、コイツと遊んでみることにしよう。

なお、便宜上このブログでは PSoC を マイコンタグに含まれるように設定していますが、ご容赦ください。

開発環境

買ってきたは良いものの、開発環境が Mac で動くか全く知りません。調べてみると...やはり簡単には出来ないようですね。公式でも Windows のものしか配布されていないし...

と言うわけでいろいろ調べて無理やり Mac で動かしてみます。むりでした。

というわけで、Windows で動かした感じのものをこのブログで書きたいと思います。
開発環境は PSoC Creator を使いました。統合インストーラでは、Complete(だったっけ)を選択してインストールしました。これだけで環境が整いました。

機能の実現方法

調べていくと動作をさせる方法として、回路図(ブロック図)を構成するやり方と、Cコードを書いていく方法があるらしいです。
とりあえず体験ということで、ここは僕らしくないですが、回路図で色々やっていきます。

以下、スクショ大量の解説祭りです

雑に「できましたぞ!」って書いて終わらせようとしたのですが、如何せん日本語のまとまった情報が少ない or 解説されていても IDE のバージョンが古いという状況ですので、このブログの存在目的の1つをここで果たそうと思っております。

プロジェクトの作成

まずは(というか使うソフトはこれだけなんですけれども) PSoC Creator を起動します。最初にプロジェクト・ワークスペースの作成をする必要があるのですが、ここでこの2つの違いを述べておきますね。プロジェクトとは1つのソフトウェアを作る場です。例えば「Lチカのテスト」とか「マイクロマウスのプログラム」とかです。ワークスペースはそれらをまとめたもので、1つのカテゴリ的存在です。プロジェクトはワークスペースに属します。

さぁ実際にやっていきましょう。まずはメニューバーから図のように辿って行きます。

そして僕と同じボードを使う場合は以下のように進めていきます。


そしてワークスペース名とプロジェクト名の指定です。例えばこんな風に。

というわけで今後は機能の評価プロジェクトを作る際は、このワークスペースに別のプロジェクトを追加する、と言ったやりかたですすめることにします。なお、途中の「Empty schematic」を選択したところで、代わりに「Pre-populated schematic」を選ぶとすでに機能が組んであるテンプレートからプロジェクトが始まります。

最後に「Finish」を押すとこんな画面になったと思います。このグリッドがあるペインに部品を置いていきます。

部品の配置

今回は一定間隔でポーリングして、スイッチが押されていたらLEDを消すというプログラムを組み立てていきましょう。

まずはこんな風に、Digital の中の Logic から DFF を持ってきます。右ペインからドラッグして持っていきましょう。すると配置されます。一度配置したものは再度ドラッグしていくことで移動させることができます。なお画面の拡大は Ctrl-; で拡大、Ctrl-- で縮小です。まぁキーの+と-に対応しているんですね。
ちなみに、ピンの入力及び出力はこんな場所にあります。

てきとーにこんな感じにやってみました↓

続いて置いた部品の設定です。とりあえずダブルクリックで設定画面が出ます。下は入力端子の設定です。最初は Drive Mode が「High Impedance」(断線)になっているのですが、これではスイッチ入力ができないので、画像のようにプルアップとしておきました。また名前も SW とそれっぽくしています。これで SW = OFF の時は DFF への入力が High に、ON のときは Low となります。出力端子の設定ですが、まぁ特に変更すべきところはありません。

続いてクロック。以下のように1Hzまでエクストリーム・分周をしておきます。
「反応に遅延がでるぞ??」と思われるかもしれませんがこれは意図的にやっていて、本当に設定通りに動くのかを確認するためです。

配線

とりあえず部品は置けましたので、これらを結線していきます。配線ツールはこれ。

んで繋いだあとのものがこちらになります(3分クッキング風)。

これでいいかといったらそうではなくて、この SW と LED に対応するピン番号を割り振っていませんでしたね。ということで上の画像の左側に見える「Pins」をダブルクリックして設定画面を開きます。

画面右側に上のような欄があるので「Port」の所から図のように選んじゃってください。「Pin」のところはいじらないで大丈夫です。ってかこのPinは僕にもよく分かりません(笑)このポートはシルクにそう印刷されているものです。

Bootloadable の配置

ぶっちゃけ何がなんだかよくわからないのですが、「Bootloadable」という部品を置いておいた方がいいらしいんです。無くても書き込み・動作できるんですけどね。とりあえず言われたことには従います。部品を選んだらテキトーに配置しちゃってください。

そして、面倒なことにこれは設定が必要な項目です。まずはここからCY8CKIT-049-42xx Example Projects.zipを落としてお好きな場所に展開してください。そして Bootloadable をダブルクリックして...

とまあ先程落としたファイルのうち、Bootloadable Blinking LED.cydsn\CortexM0\ARM_GCC_473\Debug の中の hex ファイルおよび elf ファイルを選んでくださいな。これですべて完了!!

ビルド・書き込み

上のメニューバーからBuildをしてください。エラーがなければ下部コンソールに Build Succeeded と出るはずです!!!
あとは書き込みツールなのですが、なんとか Programmer というツールがインストールされていると思います。それは使わずに、IDE 内から Bootloader Host を起動して書き込みます。

このチップは UART 書き込み・SWD書き込み(実は内蔵プロセッサは ARM)に対応しているのですが、今回は UART で行きます。このために、書き込む際にはブートローダー機能に入らなければいけません。入り方は簡単。基板のSW1を押しながらUSB端子に挿入するだけ。これで青色LEDが少し早く光っていたらブートローダーに入っています。

僕の場合ですが、最初に書き込もうとした時、電源投入後スイッチから手を離すとブートローダーモードを抜けてしまう事がありました。それで書き込みができず手こずっていました。みなさんも初めて書き込もうとしてエラった場合は落ち着いて初回の書き込みが終わるまでスイッチは押し続けたままにしてみてください。それが終わればまぁ普通に動いています。

さて実際の書き込みです。図のように察して設定してください(そろそろ疲れてきた)。そんで左から2つめの矢印のボタンを押して書き込み開始です。

はい。多少手こずりましたが、初めていじるマイコン(?)にしては比較的スムーズにLチカができたと思います。またなんかそれっぽい回路を作ったり、動作の仕組みがわかったら記事にしていきたいと思います。

明日は技能教習の補修、明後日は卒検2回めだ。え??卒検落ちたのかって??ええ、落ちましたもの。卒検で。合宿免許で。