# Renesas RX マイコン入門｜SCI・RIIC・MTU・ADCをFITモジュールで実装する32bit組込み開発｜株式会社テクノスフィア

> ルネサス RX ファミリ（RX100/200/600/700）の概要と SCI/RIIC/MTU/12bit ADC の実装を、FIT モジュールと Smart Configurator・e2 studio で進める方法を実例で解説。

URL: https://technosphere.co.jp/blog/renesas-rx-introduction

** 目次
1. はじめに：RXファミリとは
2. RX100/200/600/700の選び方
3. 開発環境・FIT・Smart Configurator
4. SCIでUART通信
5. RIICでI2C通信
6. MTUでPWM・タイマ
7. 12bit ADCの実装
8. よくあるトラブルと対策
9. まとめ

## はじめに：RXファミリとは

 **RX**は、ルネサス エレクトロニクスが独自開発した32bit CISCコア（RXv1/v2/v3）を搭載するマイコンファミリです。高い演算性能とコード効率、FPU内蔵による浮動小数点演算、豊富な内蔵周辺を備え、**日本の産業機器・FA・計測・HMI・モーター制御**で広く採用されています。

 16bitの [RL78](https://technosphere.co.jp/blog/renesas-rl78-peripheral-guide) が小規模・超低消費電力向けなのに対し、RXは「もう少し性能と容量が欲しい」「イーサネットやTFT表示を付けたい」「モーターを回したい」といった**中〜大規模な組込みシステム**に向きます。本記事ではRXの全体像と、周辺機能をFITモジュールで実装する流れを入門者向けに解説します。   ** 弊社での活用実績

テクノスフィアでは RX62N・RX631・RX65N などを用いた産業用制御装置・計測機器・通信ゲートウェイの [受託開発実績](https://technosphere.co.jp/embedded-achievements) があります。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  = &reg;  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];
```

   ** FITはアドレスのシフトを内部処理

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](https://technosphere.co.jp/blog/ti-c2000-motor-control) も選択肢になります。

## 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 化も [組込み制御・マイコン開発](https://technosphere.co.jp/embedded) として対応しています。   ／この内容の受託開発・PoC相談はこちら＼

### Renesas RX 受託開発・産業機器設計

RXを使った産業用制御装置・計測機器・HMI・通信ゲートウェイの設計から量産まで、組込み開発歴20年超のエンジニアが一貫対応します。RL78との使い分け設計もご相談ください。  [組込み開発サービスを見る](https://technosphere.co.jp/embedded) [RX/産業機器設計相談](https://technosphere.co.jp/contact)

## よくある質問（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](https://technosphere.co.jp/blog/renesas-rl78-peripheral-guide) と同じe2 studioで環境を共通化でき、製品グレードで使い分ける構成も現実的です。

##   次に読む｜マイコン記事
-  [Renesas シリーズ RL78 ペリフェラル実装ガイド 16bit低消費電力。SAU/IICA/TAUを解説](https://technosphere.co.jp/blog/renesas-rl78-peripheral-guide)
-  [TI シリーズ TI C2000 モーター制御入門 FOC・ePWM・eQEPでモーターを回す](https://technosphere.co.jp/blog/ti-c2000-motor-control)
-  [開発実績 組込み制御・マイコン開発 実績紹介 RX採用案件を含む多数の受託開発事例](https://technosphere.co.jp/embedded-achievements)
    [技術コラム一覧に戻る](https://technosphere.co.jp/blog/)
