昨日USBシリアルを準備して備えておったのは、Cypress社のPSoCの開発環境である
PSoC Creator
なんであります。開発環境やら周辺部品やらをいろいろ遊んでいくためにはターゲットボードは「何枚あっても良いな」けれども「先立つ物が」などと思っていた矢先
トラ技5月号にPSoC 4 体験キット、その名も”TSoC”
ということで付録基板が付いていました。GWの10連休中に遊ぶためにCQ出版様が付録を付けたのかとも思われます。早速、遊んでみることにいたしました。
※「鳥なき里のマイコン屋」投稿順Indexはこちら
実を言えば、PSoCの出始めのころから、数回、PSoCで「遊んでみた」ことはございますんです。ですから、その開発環境を始めてみるわけではないのですが、見るたびに、初めてそれを見たときの驚きがよみがえってまいります。勿論、たまに見る度にツールの洗練度合が増している感じがします。PSoCの開発環境自体は、ローカルインストールのIDEのもとにツールチェーンやら各種ツールやらが統合されているという点では他の伝統的マイコン用開発ツールと変わりがありません。しかし、
デフォルトで最初に表示されるのが「回路図エディタ」画面
である、というところからして他のツールと一線を画します。PSoCの最大の特徴である
アナログ回路をプログラムできる
ことから現れてくる必然的な帰結とも言えます。ご存知の通り、「デジタル回路をプログラムできる」チップとしてはFPGAというものがあり、最近では、FPGAの中にArmコアなどのCPUを埋め込んだものもあります。しかし、PSoCの特徴は「アナログ回路を」プログラムできるという部分です。アナログだけでなくデジタル回路も小規模ですがプログラムできます。ユニークな機能ではあるのですが、別にCypress社 PSoC だけの専売事項というわけでもなく、スイッチドキャパシタなどを使ったプログラマブルアナログ回路というのはいくつも事例がある筈です。しかし、「諸般の事情」から、あまり成功を見た例はないように思われます。その中で唯一とも言える成功例が
CypressのPSoC
ではないでしょうか。
まずはボードの準備
トラ技付録のボードは、CypressのPSoC4のCY8C4146LQI-S433 という機種をDIPにできるような形にしました、といったごく小規模なボードです。マイコンのコアとしては Arm Cortex-M0+搭載です。基板の上にはマイコン以外にはいくつかの受動部品とLEDくらいが実装されているだけです。予算的な都合からか、スペースの問題か、外部と接続するためのコネクタ、ピンの類は何も乗っていません。トラ技のホームページへ行けば
この基板を動作させるための各種部品一式とかさらに活用するためのキット
などの通販サイトにつながるので、そこで買えば一式そろいます。しかし、今回はお金もないので、手元の部品で間に合わせることにいたしました。「書き込みと電源供給」に使うUSBシリアルアダプタは前回で準備してReadyです。後は、ピンヘッダ40ピン分とジャンパ・ピンを引き出しから出してきて半田付けすれば基板の組み立てはおしまいです。できた基板を昨日準備しておいたUSBシリアルの横に差し込みます。トラ技の解説記事を読むと、「ジャンパピン2-3ショートにすればブートローダモードでずっと待つ」が「ジャンパピンを外しておくと、ブートロードのシーケンスが始まらないと、直ぐに書き込み済のアプリに制御を移す」ようなことが書いてあり、「初期プログラムとしてLED点滅」が書き込まれていると読めました。そこで、電源入れてしばらくするとLED点滅する、という期待で、とりあえず電源入れてみました。
LED点灯したまま、点滅しない。
赤の電源LEDが点灯したままなのは電源入れたのだから良いとして、緑が点滅しない。気を取り直して、先に進めてしまうことにいたします。
PSoC Creator のダウンロードとインストール
Cypress社のサイトに行き、最新のPSoC Creatorをインストールしました。別なパソコンで何度かやったことがありますが特にメンドイこともなし。Cypress社のIDEの裏でソフトウエアをコンパイルするツールチェーンはArm用のgccツールチェーンが使われていました。コンパイラとしては、Mbed-CLIでインストールしたものと実は同じ(バージョンまでは確認していないですが)。ソフトのインストールOK。
トラ技誌の「スタートアップ・マニュアル」にそって、動作の確認
PWM出力とLチカを同時に行う例について、かなり丁寧に解説してくださっています。迷う部分もなく、言われたとおりに回路図というかブロックダイアグラムというかを描き(多分、マイコンをプログラムしようなどという方面では、回路図描くのに抵抗ない人が多いでしょう)、パラメータを設定し、最後にmainプログラムのひな形に2行ばかりコードを記入し(ハードウエアを設定するような関数類は回路図に入力したパラメータから生成されているので呼び出すだけでよい)、ビルドしてオブジェクトを作るところまで10分、15分くらいかと思います。
出来たオブジェクトをターゲットにダウンロード
ここが、一番どきどきしますね。ちゃんと接続されてチップに書き込めるのか?案ずるより産むがやすし、書き込み開始すると、昨日、USBシリアル準備のところで「仕込んでおいた」TXDでチカチカするLEDがチカチカし、データが送り込まれていることが分かります。チカチカが終わると書き込みツールは「Success」の報告です。ボードを見れば、ちゃんとLチカしています。
OK!と思いましたが、プログラムはLチカだけでなく、PWM出力もやっています。PWMも確かめねば。しかし、ここでようやく気付きました。
PWMOUTってボードのどの端子?
今回のPSoC Creatorもそうなのですが、昔ながらのマイコン開発だったら避けて通れなかった制御用のレジスタはどれ?とか、どのビットを叩いて、とかそういった「下々」の部分はほぼ隠蔽されてしまっているので「気にせず」最後まで書けてしまう。今回も、ピンのアサインはやったのですが、トラ技誌片手に書かれているまま入力しただけだったので、基板のどのピンなのだがさっぱりです。さいごにきて、基板のピン配置と、チップの端子名の一覧表を眺めPWMOUTの端子を見つけました。
x軸点線1つが500mSなので、指定した1kHzクロックで1000回カウント、つまり、1秒周期で、4分の1デューティの信号が出力されているのが分かりますでしょうか。確認とれたので、こんどこそOK!ボードも動いているし、PSoC Creatorでしばらく遊ばせていただくことにいたします。