5
3

ルネサスRXマイコンの刺客RX140

Last updated at Posted at 2024-05-11

IMG_0304s.jpg

最近気がついた、コストパフォーマンスが高い RX マイコン

自分は、RX マイコンのトップグレードばかりに目がいって、安価な入門レベルのマイコンにあまり興味が無かったのです。

ところが、先日 チップワンストップで、RX マイコンのデリバリーを調べていたら、凄い事に目が行きました。

RX140_cost.png

「32ビットマイコンで165円は確かに安いけど、チープなんでしょ!?」と聞こえてきそうですが、主なスペックを観てみましょう~

  • RXv2 コア(32 ビット CISC コア)
  • 広い電源電圧範囲(1.8V ~ 5.5V)
  • 最大 48MHz 動作(1.8V ~ 5.5V)
  • 64 ピン LFQFP(0.5mm ピッチなので、ハンダ付けは少々辛い)
  • 64K プログラム領域
  • 16K RAM(ワーク領域)
  • 4K データ EEPROM(不揮発性メモリ 1,000,000 の書き換え)
  • 単精度浮動小数点演算命令サポート
  • DSP 命令サポート
  • MTU2(マルチファンクションタイマ、6 チャネル)
  • RTC(リアルタイムクロック、バッテリーバックアップは出来ません)
  • SCI 3 チャネル(64K、64ピンの場合)
  • I2C 1 チャネル
  • RSPI 1 チャネル
  • CTSU(静電容量式タッチセンサ)
  • 12bit A/D 変換器
  • 8bit D/A 変換器(2 チャンネル)
  • 最大 12 本の拡張タイマ機能、MTU、CMT、TMR、LPT
  • 低消費電流(高速動作モード:58µA/MHz)

RX140 は、RX100 系の中で、RXv2 コアを搭載する戦略的なモデルです。
他にも色々な機能があり、これなら、殆どの電子工作や実験などにかなりマッチすると思います。

これだけコストパフォーマンスが高いと、他と比べるまでも無いように思えてきます。

難点をあえて挙げるとすると、パッケージが QFP である点くらいでしょうか?

電池で長時間動く機器を作る場合は、32ビットとしてはかなり低消費電流ですが、クロックを落とすとか、色々と工夫は必要かもしれません。
動作モードを「中速」にして、クロックを落とすと、さらに低消費になります。
クロック速度は、内部 PLL によりかなり自由に設定出来ます。
8/16 ビットマイコンとは異なり、バンクを気にせず、浮動小数点も扱え、制限なくプログラム出来る事は、かなりメリットが高いと思います。

R8C/M120 の 100 円マイコンはそろそろ卒業してもいいかもしれませんね w

コストだけで考えると、60 円とかのマイコンもありますが、トータルで考えると、かなりコストパフォーマンスが高いマイコンであるように思います。


開発環境

RX マイコンフレームワークでは、RX140 を全面サポートしています。

コンパイラは、Renesas GNU-RX gcc-8.3.0 で、C++17 のプログラムが出来ます。
RAM が 16K もあるし、ROM も 64K あるので、かなり自由度の高いプログラムが出来ると思います。
※ ROM 64K は、大きなプログラムは厳しいですが、入門用としては十分実用になると考えています。

シリアルによる、フラッシュプログラムもサポートしています。(SCI_sample を書き込んだ様子)

/d/Git/RX/SCI_sample/RX140 % make run
make
make[1]: Entering directory '/d/Git/RX/SCI_sample/RX140'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/d/Git/RX/SCI_sample/RX140'     
rx_prog -d RX140 --progress  --write --verify sci_sample.mot
Write:  ################################################## 100 %
Verify: ################################################## 100 %

Ex サンプルプログラム

現在、RX140 で動作確認をしています。
ROM が 64K 以内に収まる事がマストなので、動作しない物もありますが、現状、動作を確認したリストです。
これから、増やしていく予定です。

プロジェクト 内容
FIRST_sample LED 点滅
SCI_sample SCI 接続
RAYTRACER_sample 320x240 レイトレーシング
FreeRTOS 3つのタスク起動
FLASH_sample データフラッシュの操作
  • SCI_sample/RX140
Start SCI (UART) sample for 'RX140 DIY' 48[MHz]
SCI PCLK: 24000000 [Hz]
SCI Baud rate (set): 115200 [BPS]
  Baud rate (real): 115384 (0.16 [%])
  SEMR_BRME: true
  SEMR_BGDM: true
CMT Timer (set):  100 [Hz]
  Timer (real): 100 [Hz] (0.00 [%])
#
  • RAYTRACE_sample/RX140
RX140 DIY Start for Ray Trace: 320, 240
# Render time: 1936ms (1)
help
    clear     clear screen
    render    renderring 320x240
    full      renderring 320x240
#
  • FreeRTOS/RX140
Start FreeRTOS V10.4.4+, sample for 'RX140 DIY' 48[MHz]
Task3: 0
Task3: 1
Task2: 0
Task3: 2
Task2: 1
Task3: 3
Task2: 2
Task3: 4
Task2: 3
Task3: 5
Task1: 0
Task3: 6
Task2: 4
Task3: 7
Task2: 5
Task3: 8
Task2: 6
Task3: 9
Task2: 7
Task3: 10
  • FLASH_sample/RX140
Start Data Flash sample for 'RX140 DIY' 48 [MHz]
Flash drive clock: 24 [MHz]
Data Flash total size: 0x00001000
Data Flash block size: 1024 bytes
Data Flash word size: 1 byte
# help
Data Flash Size: 4096, Block Num: 4, Block Size: 1024, Word: 1
erase [bank] (erase 0 to 4)
check [bank] (erase check 0 to 4)
r[ead] org [end] (read)
write org data... (write)
uid (unique ID list)
# uid
Unique ID0: 05081601
Unique ID1: 5A221C0E
Unique ID2: 310018FF
Unique ID3: 574B4400
# r 0 f
0x0000: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
# write 0 1 2 3 4 5 6 7 8 9 a b c d e f aa
# r 0 f
0x0000: 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F AA
#

専用基板

マイコンの単価が安くても、動かす手段がユニバーサル基板だと、手軽とまではいかないので、専用基板を制作しています。
専用基板なら、ブレッドボードに乗せて使う事も出来、応用範囲が広がり、手軽に実験出来ると思います。
CH340 USB シリアル変換も載せる予定なので、直ぐに PC と繋いでプログラムを書き込めます。
C++ の勉強会を開く場合の教材として利用する予定です。

準備が出来たら「領布」したいと思います、半完成の状態で 1000 円くらいと思います。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3