マイコンソフト開発の基礎知識と初心者、中級者向け開発方法(第1回)

マイコンソフトウエア開発者には、俯瞰視野(緑マーク)から開発場所(赤マーク)を捉えることが必須です。

中国の古代建築物
中国の古代建築物(Pixabay無償グラフィックより)

初心者が陥りがちなのは、1つの開発場所の理解に拘って、迷路から抜け出せなることです。ここでは、この開発の迷路にはまらずに、初心者、中級開発者がマイコンソフトウエア開発を楽しくラクにする具体的な方法を3回に分けて解説します。

マイコンソフトウエア開発の手法を書いた書籍やネット情報は、数多くあります。
これらは、奇策などを用いずに正しい開発の方法、つまり「正攻法」で書かれています。開発期限が短くプレッシャーも多い中での正攻法によるソフト開発は、習得に時間がかかり、しかも新しい用語や背景を知らない開発初心者にとっては、覚えることが多く、かなり辛い方法です。

マイコンソフトウエアの開発障壁を高くしているのが、この正攻法です。3回で示す方法は、開発障壁を下げ、マイコンソフト開発を、もっと気軽に、ラクにします。下記内容を予定しています。

  • マイコンソフトウエア開発正攻法のデメリットと、俯瞰視野(第1回)
  • マイコンソフトウエア開発制御対象の分類と、各対象のラクな開発方法(第2回)
  • ソースコード英語コメントの注意点と、英語アレルギーの対処方法(第3回)

マイコンソフトウエア開発正攻法のデメリット

マイコンソフト開発を楽しむには、コツがあります。それは、「初めにデータシートを見ない」ことです。
データシートは、上級レベル開発者が、参考書として「読む時」に威力を発揮します。元々、初心者や中級レベル開発者向けには作成されていないのがデータシートです。

先の投稿でも書いたようにデータシートはデバイスの詳細なデータ値の羅列です。この羅列から内容を見るのではなく「読む」には、値の意味と、意味を理解するためのソフトウエアとは直接馴染みが少ない半導体の基礎知識が必須です。マイコンソフト開発を長年行い基礎知識も習得していれば「読めます」が、マイコン初心者が「読む」のは、時間的に無理、非効率です。

ところが、マイコンソフトウエア開発の根拠は、データシートです。データシートにこう書いてあるから、こうソフトを開発したという理由付けです。つまり、データシートをどのように「読み」、それを「ソフトに変換」した道筋が、巷に溢れるソフト開発情報なのです。要は説明がし易いのです。

この「データシートを読み→ソフトへ変換」は、正攻法ですがデータシートが読めない人は、鵜呑みにするしかない手法です。たくさんの鵜を飲めば、そのうち解るようになりますが効率が悪く忍耐も必要です。

ポイントは、データシートは初心者や中級開発者向けでは無いことです。向いていないデータシートを使って開発着手するのでマイコンソフトウエア開発障壁は高くなるのです。

では初心者、中級開発者は、どうすれば開発障壁を高くせずにマイコンソフト開発ができるのかについては、2回目以降で示します。

初心者、中級開発者の俯瞰視野

最初の写真に戻ります。手前の入口から円形迷路をくぐり、中心の家に到達すればゴール=ソフト開発完了と考えてください(写真そのものは無関係です、念のため…)。

迷路の途中にあるのが、マイコン周辺回路ADCやGPIO、UART通信などのソフト開発対象(斜め赤マーク)です。案件によって対象は異なりますが、対象を開発できればその場所のゲートを通過でき、複数ゲート通過でゴールへ到達するゲームです。ゲームには制限時間(=開発期間)が設定されています。

開発者には開発期間内に何らかの出力、成果が求められます。出力を生むには、現在の位置と開発期間を天秤にかけ、最も出力を生む可能性の高い最短ルート検索能力が必要です。これには、俯瞰視野(緑マーク)からの現状観察は不可欠です。開発者に最も必要な能力が、この俯瞰視野です。

マイコン初心者、中級開発者は、元々初めから俯瞰視野を持っています。マイコンの中身に詳しくないことが逆に幸いしているのです。しかし、正攻法で開発を始めると、段々と視野が狭くなり、開発につまずくとそのつまずいた場所のゲート通過のみに拘る結果、迷路にハマってしまいます。

開発が思い通りに進まない(=迷路にハマった)時は、イメージだけでも良いので俯瞰視野の初心に戻り、現状分析と、例えば、周辺回路の別の使い方などの別ルート再検索を行ってください。間違ったルートでそのまま進んでも、タイムアップでゴールに到達できない可能性もあるからです。

第1回マイコンソフト開発の基礎知識と初心者、中級者向け開発方法のまとめ

  • データシートは、マイコン初心者、中級開発者向けでない
  • マイコンソフトウエア開発者は、俯瞰視野(客観視野)の初心を忘れず状況分析

の2つを示しました。

Cortex-Mシリーズはセーフ、他はアウト

新年早々、Intel、AMD、ARMなどの制御デバイス製造各社に激震が発生しました。「CPU投機的実行機能に脆弱性発見」のニュース(Intel、AMD、ARMの対応Windowsの対応Googleの対応)です。

MeltdownとSpectre
MeltdownとSpectre(Source:記事より)

※投機的実行機能:制御を最適化するためのパイプライン化、アウトオブオーダー実行などの「現代的CPU」ハードウエアに実装済みの機能。

※脆弱性:ウイルスが入る可能性がある箇所のこと、セキュリティホールとも呼ばれる。言わばアキレス腱のような箇所。もっと知りたい方は、総務省サイトの基礎知識が良く解ります。

Cortex-Aシリーズも対象、Cortex-Mシリーズは対象外(セーフ)

パイプラインやアウトオブオーダーなどの最適化機能は、殆どの制御コアに搭載されています。従って、このニュースは深刻です。ハードウエアの深い部分の脆弱性だけに、ソフトウエアのOSやパッチなどで対応できるのか、個人的には疑問ですが、セキィリティ専門家に任せるしかないでしょう。

ARMのリアルタイム系Cortex-RやCortex-Aシリーズも対象:アウト!です。
一方、本ブログ掲載のCortex-Mシリーズマイコンは、これら投機的機能が実装されていないので今回は対象外、セーフでした。

IoT端末の脆弱性対応はOTA:Over The Air更新が必須

昨年12月3日投稿のCortex-Mを用いるIoTマイコンへも、Amazon FreeRTOSなどのRTOSが期待されています。今回のような脆弱性への対応には、無線通信によるソフトウエア更新:OTA機能が必須になるでしょう(ソフトウエアには、OSとアプリの両方を含んでほしいという願望も込みです)。

時々発生する自動車リコールも、ハード起因とソフト起因の両方があります。車の場合は、ディーラーへユーザが車を持ち込めば対応できますが、組込み制御の場合は、開発者自身が動作中の現場で対応するのが現状です。今回は、Cortex-Mシリーズはたまたまセーフでしたが、同様のセキュリティ事案への対策を練る必要があると思います。

と言っても、当面できるのは、現場でIDEやUART経由の直接ソフト更新か、または、コチラの記事のような(多分高価な)パッチ配布手段しか無いかもしれません。

RTPatch適用範囲
RTPatch適用範囲(Source:記事、イーソルトリニティ)

2018年IoT市場予測

2017年末、IoT関連の2018年~2020年頃までの市場予測記事が多く発表されました。その中から4記事をピックアップして要約を示します。IoT開発者は、開発業務への対応だけでなく、急激に変わるかもしれない市場把握も必要です。

JEITA発表 2018対前年比2%プラス成長、2020東京オリンピックまで継続、家庭や個人向けが最大市場

JEITA:Japan Electronics and Information Technology Industries Association(ジェイタ)は、日本電子工業振興協会(JEIDA:ジェイダ)と日本電子機械工業会(EIAJ)が統合したITと電機産業の業界団体で、電機という枠を超えてトヨタ自動車やソフトバンクも参加しています。12月19日発表記事が、PC Watchに掲載されています。

  • 2018年、電子情報産業の世界生産は、対前年比4%増(2兆8,366億ドル)、日本生産は前年比2%増(39兆2,353億円)の見通し。2020東京オリンピックまで成長継続。
  • IoT市場は、2030年には世界404.4兆円、日本19.7兆円とそれぞれ2016年調査の約2倍に成長する見通し。特に、今年スマートスピーカーで話題となった家庭や個人向けが一番大きな市場になる。

EVより自動運転が半導体消費は大きい

EE Times Japan12月14日掲載の新しい半導体の流れを作る、IoTと5Gによると、

  • 自動車搭載の半導体需要は、EVが400米ドル、自動運転レベル3が800米ドルで、レベルが向上すると半導体搭載額はさらに高額となる。
自動運転の半導体消費量(記事より)
自動運転の半導体消費量(記事より)

手間を考えると、車載半導体をリサイクルすることは無いでしょう。車の平均寿命を10年としても、毎年膨大な数の車載半導体が消費されることになります。さらに、顧客(車ベンダ)のMCU高性能化やメモリ量増大の要求も強いので、数兆個とも言われるIoTの家庭や個人向けMCUも、この車載MCUの流れに沿ったものへ変わるかもしれません。

自動運転で半導体消費が増える理由は、車載センサーで見えない先方の情報をネットワーク経由で取得し、運転制御に利用するからです。車載MCUに高速で膨大な計算量、大容量メモリが必要になるのもうなずけます。

セキュリティ課題と対策

ネット接続で問題となるセキュリティ課題と対策については、12月19日Tech Factory掲載の【徹底解説】つながるクルマ「コネクテッドカー」のセキュリティ課題と対策に解説(要無料会員登録)されています。

  • ウイルスバスターで有名なトレンドマクロは、家庭、自動車、工場の3領域に対してIoT戦略をとる。
  • コネクテッドカー以外のIoTデバイスでも同じセキュリティ課題が下記。ソフトウエアセキュリティが最重要。
IoTセキュリティ課題(記事より)
IoTセキュリティ課題(記事より)

組込みソフトにも、ウイスル対策ソフトをインストールすることが必要になるのでしょうか? 私はRTOSに実装してくれることを望んでいます。

IoTエンジニア不足

日経IT Pro12月19日、日本のIT人材は「IoT初心者」、エンジニア2000人調査で判明では、

  • IoTや人工知能を担う先端IT人材は、2020年には48000人不足

と分析しています。

職種が広範囲なので、実際の開発者が何人不足するかは私には不明ですが、2020東京オリンピック位までは、IoT開発者が忙しいのは確からしいです。

ここで挙げた予測の全てが確実だとは言い切れません。しかし、開発者は、ここ数年で起こるかもしれない家庭や個人向けIoT MCUの変化に対応しつつ、IoTサービス企画立案、最新技術に基づいた高速な開発技術が求められるようです。

数か月の開発期間が終わって気が付くと、浦島太郎になったということだけは避けなければなりません。

マイコンデータシートの見かた(最終回)

現役STマイクロエレクトロニクスの「メーカエンジニアの立場」から記載された、ユーザ質問の多かった事項を中心にマイコンデータシートの見かたを解説する記事(連載3回目)の最終回を紹介します。

全3回の連載記事内容

第1回:凡例、絶対最大定格、一般動作条件、電源電圧立上り/立下り(2017年10月1日投稿済み
第2回:消費電流、低消費電力モードからの復帰時間、発振回路特性(2017年10月29日投稿済み
第3回:フラッシュメモリ特性、ラッチアップ/EMS/EMI/ESD、汎用IO、リセット回路(←今回の投稿)

マイコンデータシートの見かた

3回分割のマイコン個別機能データシートの見かた、最終回ではSPIとADCの記載データ見かたが当初予定に追加されました。SPIは、接続デバイスがASICやFPGAの場合の注意点、ADCは、アナログ回路なので消費電流が大きくなる点に注意すべきだと記載されています。

当然のことですがデータシートは、データ値の羅列です。従って、そのデータ値の意味と解釈の仕方は、例えば記事図9の赤囲みコメントで付記されたようにすべきです。しかし、普通は残念ながら赤囲みコメントは、データシートには付いていません。

サンプル&ホールドタイプのA-Dコンバーターの電気的特性
サンプル&ホールドタイプのA-Dコンバーターの電気的特性(記事、図9より)

従って、この赤囲みコメントが自然に頭に浮かぶような勉強、半導体の基礎知識がマイコンを使うには必要で、その知識を背景にデータ値を読むことを記事は求めています。

連載3回範囲のデータシート見かたまとめ

  • フラッシュメモリは、高温使用時、データ保持年数が短くなる。データシート記載値は、MCU内部書込み/消去時間であり、書込み開始~終了までの作業時間ではない。書き換えビットが増えると消費電流も増える。
  • EMS/EMI/ESDは、MCUを実装した基板や使用環境に依存。データシート記載値は、MCU「単体の能力」。
  • 汎用IOは、電源電圧を下げると端子駆動能力も下がり、立上り/立下り時間が長くなる。しかし、STM32MCUは、駆動能力をレジスタで設定できるので遅くなることを抑えることができる。
  • MCUリセット回路設計時は、フィルタリング信号幅のグレーゾーンを避けることが必須。
  • SPIは、接続デバイスがASICやFPGAの場合、十分なタイミングマージンが必要。
  • ADCは、アナログ回路のバイアス電流のため消費電流が大きくなる。また電流変動で変換誤差が増える。

全て学んだ後の開発着手では遅い!

開発者に求められるのは、「開発したもの」です。

そして、多くの場合、短い期限付きです。問題は、この期限内で、なにがしかの結果、成果を出さなければ、開発者としてはNGなことです。しかし、成果を出すには勉強、知識も必要です。

初心者は、この勉強、知識の入力時間と、成果の出力時間の配分が上手くありません。ベテランになると知識も増えますが、入出力の時間配分が上手く、結局何らかの成果も生みます。特に開発者は、全行程の自己マネジメント(時間配分)にも注意を払う必要があります。

例を挙げると、夏休みの自由課題を何にし、休み中にどのように仕上げるか、です。もし提出物が無ければ、課題に取り組んでいないのと(殆ど)同じです。

残業時間制約も厳しく、開発者にとっての作業環境は厳しくなる一方です。弊社マイコンテンプレートとMCUベンダ評価ボードとの組合せは、開発者が求められる出力を早期に生み出すツールになると思います。

100MBフラッシュマイコンとFreeRTOS

ルネサス、100MB超の大容量フラッシュ内蔵、160℃で10年以上のデータ保持もできる車載可能な次世代マイコン実現にメドの記事が、EE Times Japanで12月6日発表されました。

ルネサス100MBフラッシュマイコン実現にメド
ルネサス100MBフラッシュマイコン実現にメド(記事より)

これは、ルネサスが車載半導体シェア30%を狙う動きとリンクしています。マイコンは、ROM128KB、RAM128KB(Cypress PSoC 4 BLEの例)の「キロバイト」容量から、5~6年後には「メガバイト」へと変わろうとしています。

FreeRTOS

Richard Barry氏により2003年に開発されたFreeRTOSもVersion 10が発表されました。12月3日投稿で示したようにアマゾンがAWS:Amazon Web Service接続のIoT MCUにFreeRTOSカーネルを提供したことで、マイコンへのFreeRTOS普及が一気に進む可能性があります。

Amazon FreeRTOS
Amazon FreeRTOS(サイトより)

従来のFreeRTOSは、5KB以下のROMにも収まりリアルタイム性とマルチタスク処理が特徴で、小容量マイコンでも十分に使えるRTOSでした。しかし、Amazon FreeRTOSの魅力的ライブラリをフル活用すると大容量ROM/RAMが必要になるハズです。フラッシュ大容量化、製造技術の細分化の流れは、マイコン高性能と低消費電力ももたらし、Amazon FreeRTOSを使用しても問題はなさそうです。

世界的な電気自動車化:EVシフトの動きは、マイコンに数年で激しい変化を与えます。弊社もCortex-M0\M0+コアに拘らず、STM32F1で使ったCortex-M3コアなどの更に高性能マイコンにも手を伸ばしたいと考えています。

ポイントは、FreeRTOSだと思います。その理由が以下です。

Amazon FreeRTOS対応のSTM32L475 Discovery kit for IoT Nodeのサイトで、AWS経由でどのようにクラウドに接続し、評価ボード実装済みの各種センサデータをグラウド送信する様子や、逆にグラウド側からボードLEDを制御する様子が英語Video(約11分)に紹介されています。
英語ですが、聞き取り易く、解り易いので是非ご覧ください。

Videoで使用したサンプルソフトも同サイトからダウンロードできます。殆ど出来上がったこのサンプルソフトへ、必要となるユーザ処理を追加しさえすれば、AWS IoT端末が出来上がります。

追加ユーザ処理は、FreeRTOSのタスクで開発します。タスクの中身は、初期設定と無限ループです。無限ループは、使用マイコン(Videoの場合はSTM32L4+)APIとFreeRTOS APIの組合せです。

つまり、従来マイコン開発に、新たにFreeRTOS API利用技術が加わった構成です。従来マイコン開発は、マイコンテンプレートで習得できます。但しFreeRTOS利用技術は、別途習得する必要がありそうです。

その他の細々したクラウド接続手続きは、通信プロトコル上の決まり文句で、独自性を出す部分ではありません。

マイコンテンプレートサイト、レスポンシブ化完了

その弊社マイコンテンプレートサイトのレスポンシブ化が完了しました。閲覧の方々が、PCやスマホで画面表示サイズを変えても、自動的に最適表示に調整します。

また、サイト運営側も従来サイトに比べ、ページ追加/削除が容易な構成に変わりました。より解りやすく充実したサイト内容にしていきます。動作テストを十分にしたつもりですが、ご感想、バグ情報などをメールで頂ければ幸いです。

Amazon、IoTマイコンへFreeRTOS提供

Amazon:アマゾンがFreeRTOSをカーネルにして、IoT端末とのクラウド接続、セキュリティ確保、将来的にOTA:Over The Airによるアップデート機能をライブラリで提供というニュースが入りました。

嬉しいのは、「FreeRTOS」と「OTA機能がRTOSで提供」されることです。

Amazon FreeRTOS

IoT端末とクラウドを接続するには、IoT通信プロトコルが必要です。BLE:Bluetooth Low EnergyやThreadが有力ですが、国内外の網側事情が異なるため、実質的なIoTプロトコル実装は間違いなく大変です。

もしこのIoT通信機能が、最大手アマゾンの無償ライブラリで提供され、マイコンUARTと同様にIoT Communication APIを使え、しかもセキュリティ対策済みであるならば、IoT端末は爆発的に普及するでしょう。普及の足かせとなっているIoT通信とセキュリティ問題が解決されるからです。

Amazon FreeRTOS
Amazon FreeRTOS利用イメージ (出典:記事、AWS)

現在Amazon FreeRTOSのハードウエアパートナーは、テキサス・インスツルメンツ:TI、マイクロチップ、NXP、STマイクロエレクトロニクスの4社で、NXPは、LPC54018 IoT Module、STMは、STM32L4 Discovery Kit IoT Node評価ボードでサポートするそうです。

NXP、STMいずれもかなり高性能MCU評価ボードを使っていますが、これは高機能IoTエンド端末(≒簡易スマホ)を想定しているからだと思います。FreeRTOSカーネルなので、ROM/RAMが少ない低価格IoTエンド端末にも実装できるハズです。

弊社ブログでも紹介してきたFreeRTOS自身は、様々なベンダの低価格MCUにも実装実績があります。

残念ながら弊社のFreeRTOSサンプルソフトは、NXPのLPCXpresso824-MAX上で完全動作しているとは言えませんが、近いうちにSTMのSTM32F103RB(Cortex-M3:64MHz、ROM/RAM:128KB/20KB)で再チャレンジし、新たにFreeRTOS版のテンプレートを開発できないか検討中です。
※FreeRTOSサンプルソフトは、2020年版に更新しました。LPCXpresso824-MAXサンプルソフトは削除しました。

OTA機能

出荷後の組込みソフトを更新したいことは良くあります。但し、Windows更新でも失敗があるように、技術的にハイリスクで、また更新費用を顧客が負担してくれないこと(ノーリターン)も多いので、悩ましい事柄です。

Amazon FreeRTOSのOTAがRTOS関連のみか、または、RTOSにとってのアプリ、つまり開発ソフトも含むかは不明ですが、たとえRTOSのみであってもOTAが提供されれば好都合です。セキュリティ起因の不具合解消に役立つからです。

従来のベアメタル開発でもOTA関連の資料は、英語版で難解な記事はあります。しかし、私の場合は、結局現地でIDE書き換えの経験が多いです。リクスを少しでも下げたいのもあります。RTOSが機能提供してくれれば、責任転嫁(?)ですが助かります。

弊社FreeRTOSへの取組み

IoTクラウドサービスは、アマゾンのAmazon Web Services IoT:「AWS IoT」が先行し、マイクロソフトの「Azure IoT」、これらを追いかけるグーグルの「Weave」とアップルの「HomeKit」、その後ろにARMの「mbed Cloud」という状況だそうです。アマゾンは最先端を走っているのです。

先行アマゾンが2017年末に発表したAmazon FreeRTOSの詳細は不明ですが、IoT MCUのRTOSにFreeRTOSが有力であるのは、確実になりそうです。

FreeRTOSソフト開発の場合、タスク自体は簡単で単純な初期設定+無限ループ構成です。タスク同期やタスク通信にRTOS APIが使えれば、それ程難しくはないと(今は)考えています。この考え方が、タスクが増えたりプライオリティを変えたりしても正しいか、間違っているかは、実践経験あるのみです。

個人で実践できるFreeRTOS動作環境の構築が、弊社FreeRTOS版テンプレートの目標となりそうです。

レスポンシブサイトと説明資料

HappyTechサイトを年内完成目標に、レスポンシブ対応:Responsive Web Designへ改良します。

数年前にサイトを開発した時は、1ページ表示が流行っていたので、これに倣って(ならって)開発しました。しかし、スマホやタブレットなどのモバイルデバイスが増え状況が変わりました。

サイト内容のコンテンツ追加・削除もしにくい構成でしたので、流行のレスポンシブサイトに変更します。

Responsive Web Design
Responsive Web Design

レスポンシブテンプレートを探す

手っ取り早くレスポンシブサイトを開発する方法は、ネットに溢れるレスポンシブテンプレートを利用することです。

私は、HTML5 UPというサイトのテンプレートを利用しました。テンプレート説明資料はありませんので、開発には、多少のHTML、CSSの解読技術とベース知識が必要です。

レスポンシブテンプレートメリット

記載内容はそのままに、ユーザが使う画面大小に合わせて自動的に表示レイアウトを変えるのがレスポンシブサイトです。ご覧のブログはWordPressを使っていますので、利用テーマをレスポンシブ版に変えればそれで出来上がりますが、サイトの場合は、自分でHTMLとCSSを使って作り直す必要があります。

基本部分が出来上がったHTML5 UPテンプレートに、修正を加え動作を確認しながら、短期にサイトを開発できるのがテンプレート利用のメリットです。

マイコンテンプレートメリット

このメリットは、弊社マイコンテンプレートでも全く同じです。

サイト開発と同様、マイコンも動き出すまでに手間がかかります。また、動き出した後も、修正や変更が生じます。テンプレートを使うと、この動き出しまでの時間を、殆ど0に短縮できます。

マイコンAD変換:ADCを例に説明します。

ADCは、サンプルソフトも多く使い方も良く知られています。しかし、実際にセンサを接続して動作させると、複数回ADCの平均を計測値とするか、あるいは、1回のADCを計測値とするかは、アプリにより異なります。

通常は、ノイズ対策として平均値を用いる場合が多いです。それでも、測定間隔や何回の計算で平均を求めるかについては、センサとマイコンを接続し、実際に動作させカット&トライ:試行錯誤で決めるのがBestです。

この試行錯誤に適したソース構成が初めから出来上がっていれば、試行も容易でスパゲッティーコード(!?)にもなりません。

つまり、立ち上げを早くし、実動作に近い環境でプログラミングでき、しかもスパゲッティー化を避けられるのがマイコンテンプレートのメリットです。

マイコンテンプレート説明資料

説明資料があると、テンプレート修正や変更が容易になります。テンプレート開発者の考え方、指針が解るからです。最近のソースコードは、数行に渡るほどの多くの英語コメントが付いていますが、コメント文だけでは、これら考え方、指針は表現できません。

説明資料が無い場合は、どこを修正・変更すれば良いがが不明で、この場所を探すのに余分な時間が必要になります。マイコンソースコードは、その傾向が特に強く修正や変更で直にスパゲッティーコードになります。

標準的な決まりが多くあるHTMLやCSSと異なり、マイコンソースは比較的自由に記述できるからです。その結果たとえ同じ職場でも、他人が開発したマイコンソースは解読が難しいのが現状です。標準的な知識レベルがバラバラなのも原因の1つでしょう。デサインレビューの結果が反映され難いのです。

そこで、マイコンテンプレートには説明資料を添付し、標準的と思う私の考え方や開発指針を多く記載しています。テンプレートソースコードにも豊富な(冗長な!?)日本語コメントが付いています。

勿論、これら考え方や指針は、あくまでご購入者様のテンプレート理解が目的で、押付けではありません。テンプレート版権は、ご購入者様個人に帰属しますので、ご自分の考え方を反映した改良も自由です。

ご購入者様のご質問にも丁寧にお答えします。

マイコンテンプレートは、初心者~中級者向けです。しかし、全ての方のレベルに合わせた説明は、不可能です。それぞれの方でご質問は、異なります。広いレベルの方に参考になると思ったご質問に関しては、テンプレート改版時、説明資料へ付け加えています。

以上の方針で、マイコンテンプレート説明資料やソースコードを作成しています。

マイコンテンプレートご購入者は、または購入検討中の方であっても、いつでも、どのようなご質問でも、大歓迎です。お気軽にinfo@happytech.jpまでお寄せください。

SPI/I2Cバスの特徴と最新表示デバイス

IoT MCUは、従来の2×16文字のLCDから、SPIバス接続でよりリッチな表示ができるものへと変わりつつあると前投稿で述べました。

SPIバスは、従来MCUでも実装しています。ただし、多くの場合I2Cとポート共用で、センサやEEPROMとI2C接続するサンプルソフトが多数派でした。IoT MCUでは、センサ接続とリッチ表示を同時にサポートするので、I2C/SPIポートを2個以上装備するMCUが多くなりました。

本稿は、SPI/I2Cバスの特徴と、SPI接続の最新表示デバイスを示します。

SPIバスとI2Cバスの特徴

SPI Bus vs. I2C Bus (Source: Wikipedia)
SPI Bus vs. I2C Bus (Source: Wikipedia)

SPI(3線式)とI2C(2線式)は、どちらも制御ボード内で使うシリアル通信インタフェースです。少ない線数で複数デバイスを接続できますので、制御ピン数を少なくしたいMCUには適しています。
※SPI:Serial Peripheral Interface
※I2C:Inter-Integrated Circuit

仕様の解説などは、ネット内に数多くありますので省略します。

前投稿のNXP Swiss Army Knife Multi toolのWebinarで示されたSPIとI2Cの特徴に、MCU使用例を加筆したのが下表です。

SPI vs. I2C (Source: NXP Swiss Army Knife Multi tool Webinar)
  SPIバス I2Cバス
長所

・高速

・5V/3.3V デバイス混在可能

・2線でバス接続可能
短所

・デバイス毎にチップセレクト必要

・4動作モードがあるためバス接続時面倒

・低速

・同一Vddでデバイスプルアップ

使用例 リッチ液晶ディスプレイ, SD/MMCカードなど EEPROM, 加速度センサ, 気圧センサなど

※NXPは、当初I2Cバスで液晶ディスプレイ接続を試みたが、結局SPIバス接続になったそうです。Webinarだと、アプリケーションノートに記載されないこのような貴重な情報が入手できます。

SPI接続の最新表示デバイス

検討の結果NXPは、128×64ドット1.3“のOLED: Organic LED(有機LED)ディスプレイをMicro SDカードとSPIバス接続しています(前回投稿Swiss Army Knife Multi tool Block図参照)。
※有機LEDは、輝度や視野角、消費電力などの面で優れた特性を持つLEDです。

SPI OLED Display
SPI OLED Display

*  *  *

一方CypressのCY8CKIT-062-BLE Webinarでは、264×176ドットのE-INKディスプレイシールドが使われました。E-INKディスプレイは、電源OFFでも表示が残る画期的な表示デバイスです。しかもシールド基板なので、Arduinoコネクタを持つMCU評価ボードへの装着も可能です。

E-INK Display Shield
E-INK Display Shield

記載インタフェース信号名から、このE-INKディスプレイもSPI接続であることが解ります。

SPI E-INK Display
SPI E-INK Display (Source: PSoC® 6 BLE Pioneer Kit Guide, Doc. # 002-17040 Rev. *B, Table 1-3)

CY8CKIT-062-BLEは、このE-INKディスプレイのシールド基板付きで8,600円(Digi Key調べ)で入手可能なのでお得です。

しかし、E-INKディスプレイの制御方法が、PSoC Creatorの専用ライブラリ経由で、PSoC MCUファミリで使うには(多分)問題ありませんが、他社評価ボードでこのシールドを使う時は、専用ライブラリの詳細解析などが必要になると思います。

まとめ

SPIバスとI2Cバスの特徴と、SPI接続の最新表示デバイスを2つ示しました。

MCU評価ボードで使われた有機LEDディスプレイやE-INKディスプレイには、I2Cよりも高速なSPIバスが接続に使われています。

有機LEDディスプレイは、輝度や視野角、消費電力などの面で従来LEDディスプレイよりも優れています。

E-INKディスプレイシールドは、電源OFFでも表示が残りArduinoコネクタを持つ他社評価ボードにも装着可能ですが、Cypress制御ライブラリの解析が必要になります。

そこで、SPIバス接続を使ったArduinoシールド基板で、リッチ表示可能、サンプルソフトなどの情報多数、入手性が良く低価格、という条件で調べたところ、Adafruit(エイダフルート)の1.8“カラーTFTシールド(128×160ドット)、microSDカードスロットとジョイスティック搭載(秋月電子3,680円)を見つけました。

1.8" TFT Shield Schematic
1.8″ TFT Shield Schematic

TFT コントローラICのST7735Rのデータシートも開示されていますので、OLEDやE-INKシールドよりも使いやすいと思います。

しかも、メニュー表示した画面に、付属ジョイスティックを使ってユーザが処理選択することもできるので、お勧めのSPI接続表示シールド基板です。

マイコンデータシートの見かた(その2)

現役STマイクロエレクトロニクスの「メーカエンジニアの立場」から記載された、ユーザ質問の多かった事項を中心にマイコンデータシートの見かたを解説する記事(連載2回目)を紹介します。

全3回の連載記事内容

第1回:凡例、絶対最大定格、一般動作条件、電源電圧立上り/立下り(2017年10月1日投稿済み
第2回:消費電流、低消費電力モードからの復帰時間、発振回路特性(← 今回の投稿)
第3回:フラッシュメモリ特性、ラッチアップ/EMS/EMI/ESD、汎用IO、リセット回路

記事タイトル:データシート数値の “裏の条件” とは

先入観を与える前に、記事を読んでください。消費電流、復帰時間、発振回路特性の留意点が記述されています。記事タイトルの “裏の条件” とは何でしょうか?

私は、データシート数値は、理想的動作環境のマイコン単体の最高数値、これが裏の条件と理解しています。
例えば、車の性能を燃費で比較する方は、普通の運転では絶対に達成できないカタログ燃費で車を評価します。マイコンも同じです。データシート数値は、このカタログ燃費相当だと思います。

カタログ燃費(出典:日本自動車工業会)
カタログ燃費(出典:日本自動車工業会)

実際は、この最高数値にマージンを入れて考える必要があります。どの程度のマージンを入れるかが問題で、安全側評価ならデューティ50%、つまり性能半分位が良いと思います。

但し、これもマイコン単体の話で、マイコン:MCUと電源、発信器や必須周辺回路を含めた制御系で考えると、どの程度マージンを入れるかは複雑怪奇になります。

そこで、ベンダ開発の評価ボードを手本とする考え、つまり、10月1日投稿で示した評価ボードをハードウエアテンプレートとして用いる考え方を、私は提案しています。

10月15日記事のように、評価ボードでもWi-Fi起動時電流に電源部品の余裕が(短時間ですが)少ないものもありますが、大方のベンダ評価ボードは、実用に耐えられる厳選部品が実装済みです。そこで、プロトタイピング時には、この評価ボードで制御系を作り、実装部品のマージンが十分かを評価するのです。

マージンが足りない場合には、同じ評価ボードへ、より高性能な部品を載せ替えるなどの対策が簡単にできます。制御される側もこのようなモジュールで開発しておけば、モジュール単位の設計、変更が可能です。

ソフトウエアも同様です。評価ボードを使えば、少なくとも最低限のソフト動作環境は整いますので、プロトタイピングのソフトをなるべく早く開発し、動作マージンを確認しておきましょう。

完成・出荷時には、ソフトへ様々な機能が後追加されるので、プロトタイピング時はハード同様デューティ50%、つまりROM/RAMの残りに50%位は残しておくと安心です。

ソフトウエアのプロトタイピング開発には、弊社マイコンテンプレートが最適です。

連載第2回範囲のデータシートの見かたまとめ

  • 水晶振動子のMCUクロック供給は、発振波形が正弦波に近いため貫通電流が増え消費電流大となる。
  • 未使用GPIO端子は、外来ノイズ対策に10k~100kプルアップorダウンし、電位固定が望ましい。
  • データシート低消費電力復帰時間がクロックサイクル規定の場合はそのまま使え、㎲規定の場合は参考値。
  • 外付け水晶振動子の利用時は、ベンダ推薦部品を使う。
  • 内蔵発振回路の利用時に、MCU温度変化やリフローによる機械的応力による周波数変動が無視できない場合は、周波数トリミングソフトを組込む。
  • PLL動作最低/最高周波数の設定ミスは多いが、マージンがありそのまま動作するので注意。

マイコンデータシートの見かた(その1)

現役STマイクロエレクトロニクスの「メーカエンジニアの立場」から記載された、ユーザ質問の多かった事項を中心にSTM32マイコンデータシートの見かたを解説する記事(連載1回目)を紹介します。

全3回の連載記事内容

予定されている第2回、第3回の解説内容が下記です。

第1回:凡例、絶対最大定格、一般動作条件、電源電圧立上り/立下り(← 今回の記事)
第2回:消費電流、低消費電力モードからの復帰時間、発振回路特性
第3回:フラッシュメモリ特性、ラッチアップ/EMS/EMI/ESD、汎用IO、リセット回路

今回の第1回を読むと、データシートの読み誤り易いポイントが説明されており、興味深いです。ハードウエアに興味がある、または、ハードも自分で設計するソフトウエア開発者は、読むことをお勧めします。

マイコンハード開発を数回経験すると、おおよその感触とデータシートの見る箇所が解ってきます。私も新人の頃は、網羅されたデータシートの、”どこの何を見れば良いかが判らず”困惑したものでした。

ハードウエアテンプレートは評価ボードがお勧め

私は、使用するマイコンの評価ボードを、ハードウエアのテンプレートとして使います。
例えば、STM32F072RB(=NUCLEO STM32F072RB)は、配線パターン(=gerber files)や使用部品リスト(=BOM)もサイトに公開されています。

これらのデータは、「短納期を要求される開発者の立場」なら、網羅的記載のデータシートよりも、効率よく回路設計をする手助けとなります。

データシートを見ることは、間違いなく重要です。

しかし、具体的にハードウエア設計をする時は、評価ボードのような既に設計済みの「ブツ」を参考にしながら、なぜこの部分はこうなっているのか?などの疑問を持ってデータシートを見る方が、効率が良く、しかも、分厚いデータシートのポイントを理解するのにも役立ちます。

アナログとデジタル電源の1点接地や、パスコン実装位置などは、文字で注意書きをいくらされても解り難くいものです。この点、実物は、文字に勝ります。

ソフトウエアテンプレートはマイコンテンプレートがお勧め

ソフトウエア開発は、マイコンテンプレートの宣伝をするな!と思われた、勘のいい読者の方は、コチラのサイトを参照してください。

サンプルソフトは、”メーカ立場での提供ブツですが、”開発者の立場からの実物として、STM32ファミリ、サイプレスPSoC、NXPのLPC8xx/LPC111x/Kinetis、ルネサスRL78/G1xの各種マイコンテンプレートを、ソフトウエア開発者様向けに提供中です。

連載第1回範囲のデータシートの見かたまとめ

第1回記事の範囲で、マイコンハード開発ノウハウをまとめると、以下になります。

  • マイコン外部接続ハード駆動能力は、I2C、USART、数点のLED直接駆動可能端子を除いては極小で基本的には直接駆動はしない。
  • 外部接続ハードの駆動と接続方法は、Baseboard(mbed – Xpresso Baseboard)や、各種Arduinoシールドを参考にする。
  • マイコン電源は、評価ボードのパターン、実装部品も含めてまねる。
  • 開発製品版の未使用(空き)端子処理は悩ましいが、ソフトはデフォルト、ハードはソルダーブリッジ経由で接地。

私は、今後の連載を読んで、未使用(空き)端子処理の見識などを深めたいと思っています。