最近気がついた、コストパフォーマンスが高い RX マイコン
自分は、RX マイコンのトップグレードばかりに目がいって、安価な入門レベルのマイコンにあまり興味が無かったのです。
ところが、先日 チップワンストップで、RX マイコンのデリバリーを調べていたら、凄い事に目が行きました。
「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 円くらいと思います。