はじめに:RXファミリとは
RXは、ルネサス エレクトロニクスが独自開発した32bit CISCコア(RXv1/v2/v3)を搭載するマイコンファミリです。高い演算性能とコード効率、FPU内蔵による浮動小数点演算、豊富な内蔵周辺を備え、日本の産業機器・FA・計測・HMI・モーター制御で広く採用されています。
16bitの RL78 が小規模・超低消費電力向けなのに対し、RXは「もう少し性能と容量が欲しい」「イーサネットやTFT表示を付けたい」「モーターを回したい」といった中〜大規模な組込みシステムに向きます。本記事ではRXの全体像と、周辺機能をFITモジュールで実装する流れを入門者向けに解説します。
テクノスフィアでは RX62N・RX631・RX65N などを用いた産業用制御装置・計測機器・通信ゲートウェイの 受託開発実績 があります。RXとRL78を製品グレードで使い分ける設計も多数手がけています。
RX100/200/600/700の選び方
| シリーズ | 位置づけ | 代表品種・特徴 |
|---|---|---|
| RX100 | 低消費電力・低コスト | RX111/RX130/RX140。小型機器・センサー |
| RX200 | バランス型 | RX231/RX23E(高精度AFE内蔵で計測向け) |
| RX600 | 高性能・大容量 | RX64M/RX65N(TFT・イーサ)/RX651。HMI・通信に |
| RX700 | 最高性能・制御特化 | RX72M/RX72N(産業ネットワーク)/RX66T(モーター制御) |
選定は「必要な処理性能・フラッシュ/RAM容量・内蔵周辺(イーサネット、TFTコントローラ、CAN、USB、高精度ADC)」から逆算します。たとえばタッチパネルHMIならRX65N、サーボ/インバータ制御ならRX66T、産業用イーサネット対応ならRX72Mが定番です。
開発環境・FIT・Smart Configurator
RX開発の標準構成は次のとおりです。
| 要素 | 内容 |
|---|---|
| 統合開発環境 | e2 studio(Eclipseベース)。CS+も可 |
| コンパイラ | CC-RX(純正)。GCC for RXも選択可 |
| 周辺ドライバ | FIT(Firmware Integration Technology)モジュール |
| 設定ツール | Smart Configurator(クロック・端子・FIT管理) |
| デバッガ | E2 / E2 Lite |
FITはRX開発の中核です。r_sci_rx(シリアル)、r_riic_rx(I2C)、r_s12ad_rx(12bit A/D)といった周辺ドライバをSmart Configuratorで追加すると、統一されたAPIでペリフェラルを操作できます。レジスタ直叩きが減り、品種変更時の移植も容易になります。
SCIでUART通信
SCI(Serial Communications Interface)はRXの汎用シリアルで、調歩同期(UART)・クロック同期(簡易SPI)・簡易I2Cに対応します。ここではFITの r_sci_rx を使ったUART送受信を示します。
#include "r_sci_rx_if.h"
static sci_hdl_t s_sci_handle;
static sci_cfg_t s_sci_cfg;
/* SCIチャネルをUARTモードで開く */
s_sci_cfg.async.baud_rate = 115200;
s_sci_cfg.async.clk_src = SCI_CLK_INT;
s_sci_cfg.async.data_size = SCI_DATA_8BIT;
s_sci_cfg.async.parity_en = SCI_PARITY_OFF;
s_sci_cfg.async.stop_bits = SCI_STOPBITS_1;
s_sci_cfg.async.int_priority = 3;
R_SCI_Open(SCI_CH6, SCI_MODE_ASYNC, &s_sci_cfg, sci_callback, &s_sci_handle);
/* 送信 */
uint8_t msg[] = "Hello RX!\r\n";
R_SCI_Send(s_sci_handle, msg, sizeof(msg) - 1);
/* 受信(リングバッファ経由)*/
uint8_t c;
if (R_SCI_Receive(s_sci_handle, &c, 1) == SCI_SUCCESS) {
/* 1バイト受信 */
}
FITのSCIモジュールは内部に送受信バッファを持つため、割り込み処理やリングバッファを自前で書く手間が減ります。コールバック関数で受信エラーや受信完了イベントを受け取れます。
RIICでI2C通信
本格的なI2Cには専用ユニットRIICを使います。FITの r_riic_rx を使うと、マスタ送受信・クロックストレッチ・マルチマスタを統一APIで扱えます。
#include "r_riic_rx_if.h"
riic_info_t iic;
uint8_t slave_adr = 0x48; /* 7bit 右詰め(シフト不要:FITが処理)*/
uint8_t reg = 0x00;
uint8_t rx[2];
iic.dev_sts = RIIC_NO_INIT;
iic.ch_no = 0;
iic.p_slv_adr = &slave_adr; /* スレーブアドレスはポインタで渡す */
R_RIIC_Open(&iic);
/* レジスタ指定して2バイト読み出し(リスタート)*/
iic.p_data1st = ® iic.cnt1st = 1;
iic.p_data2nd = rx; iic.cnt2nd = 2;
R_RIIC_MasterReceive(&iic);
/* iic.dev_sts == RIIC_FINISH を待って結果を使う */
int16_t value = (rx[0] << 8) | rx[1];
RIIC FITモジュールは7bitスレーブアドレスをそのまま指定できます(内部でR/Wビットを付与)。RL78の簡易I2Cでは左シフトが必要だったのと挙動が異なる点に注意してください。
MTUでPWM・タイマ
MTU(Multi-Function Timer Pulse Unit)は、RXの高機能タイマです。インターバル割り込み、PWM出力、相補PWM(デッドタイム付き)、入力キャプチャ、位相計数(エンコーダ)などに対応し、モーター制御の中核になります。
- PWMモード:LED調光・ファン制御・DCモーター制御
- 相補PWM+デッドタイム:3相インバータ・BLDC/PMSM駆動
- 入力キャプチャ:パルス周期・幅の測定
- 位相計数モード:2相エンコーダの正逆カウント
モーター制御で本格的なリアルタイム制御を行う場合は、MTUのPWMとA/D変換開始トリガを同期させ、キャリア周期ごとに電流を取得して制御演算を回す構成が定石です。より高度なモーター制御専用機としては TI C2000 も選択肢になります。
12bit ADCの実装
RXは12bit逐次比較型A/Dコンバータ(S12AD)を内蔵します。FITの r_s12ad_rx でチャネル・トリガ・スキャンモードを設定します。
#include "r_s12ad_rx_if.h"
adc_cfg_t adc_cfg;
adc_ch_cfg_t ch_cfg;
uint16_t ad_val;
adc_cfg.resolution = ADC_RESOLUTION_12_BIT;
adc_cfg.alignment = ADC_ALIGN_RIGHT;
adc_cfg.trigger = ADC_TRIG_SOFTWARE;
/* r_s12ad_rx の公開APIは R_ADC_ プレフィクス。第1引数 unit は数値(0/1)*/
R_ADC_Open(0, ADC_MODE_SS_ONE_CH, &adc_cfg, NULL);
ch_cfg.chan_mask = ADC_MASK_CH0;
R_ADC_Control(0, ADC_CMD_ENABLE_CHANS, &ch_cfg);
R_ADC_Control(0, ADC_CMD_SCAN_NOW, NULL);
/* 変換完了を待って結果取得 */
R_ADC_Read(ADC_REG_CH0, &ad_val);
uint32_t mv = ((uint32_t)ad_val * 3300) / 4095; /* 基準3.3V時 */
制御用途では、ソフトウェアトリガではなくMTUやタイマからのハードウェアトリガでスキャンを開始し、変換完了割り込みで結果を取り込むのが一般的です。
よくあるトラブルと対策
| 症状 | 主な原因 | 対策 |
|---|---|---|
| SCIで文字化け | 動作クロック(PCLK)とボーレート設定の不一致 | Smart Configuratorのクロック設定とSCIのボーレートを再確認 |
| FITモジュールがビルドエラー | 依存モジュール(r_bsp等)の未追加・バージョン不整合 | Smart Configuratorで依存を解決し、コンポーネントを揃える |
| RIICがタイムアウト | プルアップ不足・バスハングアップ | プルアップを実装。ハング時はバスリカバリ(SCLクロック送出)を実装 |
| ADC値が暴れる | サンプリング時間不足・入力インピーダンス高 | サンプリング時間を延ばし、入力をOPアンプでバッファ |
| エンディアンで値が壊れる | RXはビッグ/リトル選択可。設定とデータ解釈の不一致 | エンディアン設定とシリアライズ処理を統一 |
まとめ
この記事のまとめ
- RXはルネサス独自コアの32bitマイコンで、日本の産業機器・FA・HMI・モーター制御で広く使われる
- RX100/200/600/700から、性能・メモリ・内蔵周辺(イーサ/TFT/CAN/高精度ADC)で選定する
- 周辺はFITモジュール(r_sci_rx / r_riic_rx / r_s12ad_rx)とSmart Configuratorで統一APIで実装する
- UART/簡易I2C/簡易SPIはSCI、本格I2CはRIIC、PWM/タイマ/エンコーダはMTUを使う
- RL78(16bit)とRX(32bit)はe2 studioで環境を共通化しつつ製品グレードで使い分けられる
RXを使った産業機器・制御システムの開発でお困りのことがあれば、テクノスフィアにお気軽にご相談ください。要件定義・回路設計支援・ファームウェア開発・量産まで一貫して対応します。
RX を使った産業用制御装置・計測機器・HMI・通信ゲートウェイの試作・量産設計、既存システムの RX 化も 組込み制御・マイコン開発 として対応しています。
Renesas RX 受託開発・産業機器設計
RXを使った産業用制御装置・計測機器・HMI・通信ゲートウェイの設計から量産まで、組込み開発歴20年超のエンジニアが一貫対応します。RL78との使い分け設計もご相談ください。
よくある質問(FAQ)
RXファミリ(RX100/200/600/700)はどう選びますか?
RX100は低消費電力・低コスト、RX200はバランス型(RX23Eは高精度計測向け)、RX600は高性能でTFT・イーサ対応、RX700はモーター制御や産業ネットワーク向けです。必要な性能・メモリ・内蔵周辺から選定します。
FITとは何ですか?
FIT(Firmware Integration Technology)はルネサス提供の周辺ドライバ部品群です。r_sci_rx・r_riic_rx・r_s12ad_rx などをSmart Configuratorで追加し、統一APIでペリフェラルを操作できます。レジスタ直叩きが減り移植も容易になります。
RXのUART・I2C・SPIはどのペリフェラルですか?
UART・簡易I2C・簡易SPIはSCI、高速SPIはRSPI、本格的なI2CはRIICを使います。FITモジュールで統一的に実装できます。
RXとRL78はどう使い分けますか?
RL78は16bit・超低消費電力で小規模機器に、RXは32bit・高性能で大規模な制御・通信・HMI機器に向きます。RL78 と同じe2 studioで環境を共通化でき、製品グレードで使い分ける構成も現実的です。