例としてRL78ラインを使用したルネサスマイクロコントローラの紹介









マイクロコントローラ電子機器の平均的なロシア語圏の開発者がマイクロコントローラの最も有名なまたは主要なメーカーを3〜5名挙げるように求められた場合、マイクロチップ、アトメル、TIまたはSTMなどの名前を聞く可能性が最も高いでしょう。 誰かがNXP、Freescale、Samsung、またはFujitsuを呼び出すこともあります。 しかし、他のメーカーを覚えている人はほとんどいません。これは、ソビエト後の分野ではほとんど知られていません。













日本企業Renesas Electronicsについて話しています。一方、その年次報告書では、このような興味深いインフォグラフィックを誇っています...











汎用マイクロコントローラー:自動車用電子機器を除く、幅広い用途のマイクロコントローラー













そのため、以下で製品を説明する「ダークホース」は、汎用マイクロコントローラーと車載電子機器市場の両方の世界市場のリーダーであり、「世界でナンバーワンのマイクロコントローラーサプライヤー」と自称するすべての権利を持っています。 同社の成功の秘Theは簡単です。ルネサステクノロジは2003年に日立と三菱の合弁会社として登場し、2010年にNec Electronicsが参加して合弁会社Renesas Electronicsを設立しました。













この協力の結果、3社の十分に確立されたコアを、効率的な専用周辺機器と組み合わせて使用​​できるようになりました。









このような多くの開発を受けて、ルネサスは参加企業が利用できる技術を使用して新しいラインを開発し始めました。 Hitachi H8SXとMitsubishi R32Cを置き換えるために、32ビットRXマイクロコントローラーのラインが登場しました。 人気のあるNEC V850の後継として、RH850が開発されました-自動車用電子機器で使用するためのマイクロプロセッサのラインです。 R8Cコアは、三菱M16Cと互換性のある低コストソリューションとしても開発されています。













NECと合併したルネサスの最初の独立開発は、CISCアーキテクチャを備えた新しい16ビットRL78コアでした。 その中で、開発者は、R8Cと78K0のプラスの側面を1つのファミリーに統合しようとしました。 現時点では、ファミリーはさまざまなアプリケーションのために5つの「ブランチ」に分割できます。







  1. RL78 / G1x-汎用マイクロコントローラー:最大28チャネルのADC、DAC、USB、I2C、SPI、PWM、RTCC。
  2. RL78 / L1x-LCDパネルマイクロコントローラー:USB 2.0サポート、最大4x53 / 8x48セグメントのLCDインジケーター管理。
  3. RL78 / F1x-自動車産業向けのマイクロコントローラー:CANインターフェースサポート、エンジン管理、+ 150ºCまでの拡張温度範囲。
  4. RL78 / D1x-計装用マイクロコントローラー:4チャンネルのステップモーターのコントローラーを「箱から出して」直接、最大4x53セグメントのLCDインジケーターの制御、CAN。
  5. RL78 / I1x-照明制御用マイクロコントローラー:DALI / DMX512、PWM。


RL78マイクロコントローラの品揃えは単純に膨大であり、特定の用途に適したモデルを選択することは難しくありません。 すべてのファミリのコントローラーは、DMAライン、ADC / DACコンバーター、I2CおよびSPIインターフェースのサポート、産業用LINネットワークでの動作のサポートを誇ります。













RL78コアCISCパイプラインは3つのステージで構成され、命令の約86%が1〜2プロセッササイクルで実行できます。 16x16ビットMACコマンドのハードウェア実行もサポートされています。













RL78マイクロコントローラーの主な利点として、メーカーは最小消費電力を宣言し、ラインは真の低消費電力(真に低消費電力)であると呼びます。 それにもかかわらず、高い生産性と幅広い動作電圧の維持に注目することができます。













わかりやすくするために、このコントローラーの主要な特徴と「人気のある」ブランドの主要な競合他社を一般的な表にまとめています。













一般的なマイクロコントローラの特性の比較













STM8L







STM32L







Pic24 lite







MSP430







RL78







収容人数







8ビット







32ビット







16ビット







16ビット







16ビット







性能







〜1 DMIPS / MHz、最大16 MHz







〜1.04 DMIPS / MHz、最大32 MHz







〜0.5 MIPS / MHz、最大32 MHz







〜1 DMIPS / MHz、最大25 MHz







〜1.3 DMIPS / MHz、最大32 MHz







フラッシュ







2〜64 KB







32-384 KB







16-32 KB







0.5-512 KB







0.125-512 KB







RAM







1-4 KB







4-48 KB







1-2 kb







0.125-66 KB







1-32 KB







消費スレーブ。







150-180μA/ MHz







214-230μA/ MHz







195-350μA/ MHz







80-280μA/ MHz







46-156.25μA/ MHz







睡眠消費+ RTC







1.3μA







0.9μA







0.5-0.7μA







0.7μA







0.56-0.68μA







パワーレンジ







1.65-3.6 V







1.65-3.6 V







1.8-3.6 / 2.0-5.5 V







1.65-3.6 B







1.6-5.5V







推定価格帯







0.5〜4.5ドル







1.5〜7.7ドル







0.8〜4.2ドル







0.34〜9.5ドル







0.68〜8ドル









この表では周辺機器については意図的に言及していませんが、ここでの利点は競合他社には絶対に有利ではありません。周辺機器に関しては、ルネサスは伝統的に非常にうまくいっています。













回線の一部の代表者の有用な機能については、次のことに注意してください。









これらはどれも見栄えがよく美しいものですが、ルネサスマイクロコントローラは開発に非常に便利ですか? これを確認するには、ルネサスYRPBRL78G13デバッグボードを使用して、ルネサスRL78シリーズマイクロコントローラを使用するためのエントリしきい値を評価してください。













R5F100LEAFBマイクロコントローラーは、RL78 / G13ファミリーに属する「オンボード」でインストールされます。64KBフラッシュメモリ、4 KB RAM、データを保存するための書き換えサイクルが増加した4 KBフラッシュメモリも割り当てられます。 12チャネルの内蔵ADCは最大10ビットの解像度を提供し、2チャネルのDMAは受信データをメモリに保存するのに役立ちます。 14個のタイマーチャネル、7個のPWMチャネル、3個のUART、7個のI2Cは、1.60ドルのLFQFP64パッケージの「赤ちゃん」に非常に適しています(1000個以上のバッチで)。













この掲示板は、ルネサス自体がプロモーション掲示板のセクションに起因しているため、小売価格は25ドルです。 公平には、これは会社にとって最も興味深いオファーではありません。RL78/ L12のデバッグボードYRPBRL78L12は現在わずか10ドルで提供されています。 ご希望の方には、多数の大規模な「アダルト」デバッグもあります。















デバッグボードRenesas YRPBRL78G13













ボードは100x30 mmのコンパクトなフォームファクターで作られており、RL78 / G13コントローラー自体に加えて、USBを介してボードをフラッシュするだけでなく、リアルタイムでインサーキットデバッグを実行できるハードウェアデバッガーが含まれています。 このボードは、USBバスと外部電源の両方から電力を供給します。















ルネサスYRPBRL78G13開発ボード図













外部電源(+ 5V)は、J4コネクタを使用してボードに直接接続でき、隣接するパッドを再接続する必要があります。 ジャンパJ6〜J9を使用して、USBポートが機能するかどうかを選択できます。OCD(オンチップデバッグ)または仮想UART(前述の78K0ファミリの追加の8ビットコントローラμPD78F0730を使用するUSB​​経由のCOMポートエミュレータ)。 ただし、仮想UARTは、デバッグ中にジャンパを絶えず再配置する必要があるため、常に使用すると便利ではありません。 必要に応じて、J5コネクタを介して接続された外部デバッガRenesas E1を使用できます。













マイクロコントローラーのほぼすべてのピンは、長い行J1およびJ2に表示されます。 J10コネクタは、実稼働環境で78K0補助コントローラをフラッシュするために使用されます。 マイクロコントローラの電力消費を制御するために、ジャンパJ3を介して電力が供給されます。













ボードには、2つのLED(電源インジケータとユーザーLED)と、10ビットADCマイクロコントローラーに接続されたポテンショメーターもあります。 興味深いことに、ポテンショメーターを調整するために、小さなドライバーがボードに付属しています。













したがって、ハードウェアを使用すると、すべてが明確になります。次に、ルネサスがソフトウェア開発者に提供するものを見てみましょう。













開発は文書化から始まり、ここでルネサスは従うべき例と呼ぶことができます:仕様は自由に簡単に見つけることができ、その関連性と完全性でほとんどの場合問題はありません-文書の量は初心者でも怖がらせることができます。 メーカーは従来、周辺機器の説明とアプリケーションノートに特別な注意を払っています。 ルネサスは広く普及しているため、控えめな名前のルネサスラルツを持つ独自のオンラインコミュニティもあります。













RL78のコード言語はCです。 開発環境として、多くの愛されているRL78サポート(バージョンEWRL78)を備えたIAR Embedded Workbenchの多くが提供されています。 IARに組み込まれたC-SPYデバッガーは完全にサポートされています。レジスター/変数を表示しながら、ブレークポイントを設定し、コードを自由に歩き回ることができます。 また、開発環境として、e²studio(Eclipse Embedded Studio)をGDBデバッガーや他の多くのユーティリティとともに使用できます。













ファームウェアコードは、ベアメタルとRTOSの両方で記述できます:メーカーは、FreeRTOS、CMX-RTX、MicriumμC/ OS、OSEK Run Time Interface(ORTI)、Express LogicまたはSegger embOSの実装を使用することを推奨しています。 ホームオートメーション愛好家には、KNXスタックの実装があります。













コントローラーにファームウェアをアップロードするための多くのアプリケーションがあります。たとえば、無料のユーティリティWriteEZ5です。 このユーティリティは汎用です。特定のマイクロコントローラモデルをサポートするには、対応する構成ファイルをpr5形式でダウンロードし、フラッシュする前にプログラムをポイントするだけで十分です。













ルネサスは、グラフィカルユーティリティAppliletを使用して、プログラムコード開発の観点から最も興味深いアプローチを示しています。 このユーティリティを使用すると、マイクロコントローラー、gpio、割り込みサブシステム、ADC / DAC動作モードで使用されるすべての周辺機器を人間が読める形式で構成し、この構成に基づいて、すべてのイベントハンドラーの初期化コードと「スタブ」を生成できます。 生成されたコードはプロジェクトの基礎として使用でき、コードを整理するためのルール(下記参照)に従って、いつでも完成したプロジェクトの構成を変更できます。













このようなアプローチにより、アプリケーションロジック、周辺の初期化、および管理用のAPIに集中して、生成されたユーティリティコードを引き継ぐことができます。 同時に、他のベンダーの場合のように、周辺機器を操作するために巨大なライブラリを扱う必要はなく、生成されたコードには最小限の冗長性が含まれることが保証されています。













したがって、RL78のエントリしきい値は大幅に削減され、マイクロコントローラーのプログラミングの経験のない開発者でも、最小限の時間で簡単なファームウェアを作成できます。













例として、マイクロコントローラの世界から伝統的なHelloの世界を書く方法を示します-LEDで点滅します。 そして、それがそれほど退屈ではないように、私たちは理由のために点滅しますが、パルス幅変調とタイマーを使用してLEDをスムーズにオン/オフします。 合計で3つのタイマーが必要になります。そのうち2つはPWMに使用され、3つ目はパルスのデューティサイクルをスムーズに変更します。この場合、輝度が変化します。













Renesas Appliletユーティリティを開き、R5F100LEAFBコントローラーの新しいプロジェクトを作成します。















RL78 / G13のユーティリティウィンドウApplilet3の新しいプロジェクト













これは、タイマーチャネルのゼロ設定タブで開いている現在のバージョン3でのAppliletユーティリティウィンドウの外観です。 適切な動作モードを使用する場合、チャネル0はPWM周期を設定するタイマー用に予約されているため、設定が豊富ではありません。 周辺からの他の割り込みと同様に、INTTM00割り込みがオンになると、この割り込みの「スタブ」のコードがユーティリティによって生成されたコードに自動的に追加(および初期化)されます。













チャネル1は、期間のアクティブな部分を直接設定するため、その構成のタブで、アクティブレベルの幅(チャネル0の期間の割合として)およびレベル設定を設定できます。















Applilet3のRL78 / G13のユーティリティウィンドウでのチャネル1設定













また、0.2秒ごとに割り込みを生成する、いわゆるインターバルタイマーも必要です。 その構成は、Appliletユーティリティインターフェイスのいくつかの「チェック」にもなります。















RL78 / G13のApplilet3のユーティリティウィンドウでインターバルタイマーを設定する













そしてもちろん、LEDが接続されているP77ピンを出力モードにする必要があります。















RL78 / G13のユーティリティウィンドウApplilet3でピンP77を構成する













これで停止し、プロジェクトを保存して、大切なボタン「コードを生成」を押してください。 IARを開発環境として使用します。













生成されたプロジェクトのファイルを見てみましょう。







r_cg_cgc.c







r_cg_cgc_user.c







r_cg_it.c







r_cg_it_user.c







r_cg_port.c







r_cg_port_user.c







r_cg_timer.c







r_cg_timer_user.c







r_main.c







r_systeminit.c













名前からわかるように、すべてのコードは実行される機能に応じてモジュールに分割されます:クロックジェネレーター、インターバルタイマー、gpio、タイマー、メインプログラムサイクル(この場合は空)、およびコントローラーの低レベル初期化コード。 * _user.cの形式のファイルには、対応する周辺機器のイベントハンドラーのスタブが含まれています。













r_cg_it_user.cファイルを開き、インターバルタイマーハンドラーを変更します。 ハンドラーを呼び出すたびに、ステップ数STEPS_NUMで指定された量だけPWMデューティサイクルが減少または増加します。 最大または最小に達すると、輝度の変化の方向が逆になります。













#pragma vector = INTIT_vect __interrupt static void r_it_interrupt(void) { /* Start user code. Do not edit comment generated here */ int16_t TDR0_value, TDR1_value, step; R_TAU0_Channel0_Stop(); TDR0_value = TDR00; TDR1_value = TDR01; step = TDR0_value / STEPS_NUM; if (moving_up == 1) { if (TDR1_value > TDR0_value - step) moving_up = 0; else TDR1_value += step; } else { if (TDR1_value < step) moving_up = 1; else TDR1_value -= step; } TDR01 = TDR1_value; R_TAU0_Channel0_Start(); /* End user code. Do not edit comment generated here */ }
      
      











ご覧のとおり、生成されたプロジェクトには、ユーザーによって自動的に生成されて記述されたコードを分離するように設計されたコメントが多数あります。 これらの境界を観察してコメントを保存すると、プロジェクトの既存のユーザーコードを失うことなく、いつでもAppliletユーティリティを使用して周辺機器の設定を変更できます。













プロジェクトに追加する必要があるのは、LEDが接続されているPWMステータスとP77ピンの接続だけです。 これを行うには、チャネル0タイマー割り込みがトリガーされたときに、コントローラーレッグを1に設定します。













 #pragma vector = INTTM00_vect __interrupt static void r_tau0_channel0_interrupt(void) { /* Start user code. Do not edit comment generated here */ P7_bit.no7 |= 1; /* End user code. Do not edit comment generated here */ }
      
      





また、チャネル1では、この値をゼロにリセットします。













 #pragma vector = INTTM01_vect __interrupt static void r_tau0_channel1_interrupt(void) { /* Start user code. Do not edit comment generated here */ P7_bit.no7 &= 0; /* End user code. Do not edit comment generated here */ }
      
      





すべての準備が整っています:プロジェクトをコンパイルし、WriteEZユーティリティを使用してコントローラーに入力し、デバッグボードのジャンパーをデバッグモードから動作モードに再配置し、必要に応じてボード上のLEDがゆっくりとスムーズに点灯および消灯する様子を観察します。













示されたアプローチを使用すると、ルネサスRL78シリーズマイクロコントローラーの内部機能は私たちにとって舞台裏のままでしたが、複雑なプロジェクトを実装するときに要求の厳しい開発者のニーズを満たしていない可能性がありますが、簡単な操作アルゴリズムでは、ルネサスRL78コントローラー周辺機器の広範なリストの初期化コードの自動生成を使用すると、大幅に削減できます時間、したがって超低消費電力のデバイスの開発コスト。









質問やコメントを歓迎します。



PSこの記事は、ジャーナルVestnik Elektronikiの最新号に掲載されました。 電子機器の開発に使用する他の電子部品および技術に関する詳細情報は、PromwadチームのWebサイトの「技術」セクションにあります。



All Articles