RX26T が発表されている
RX26Tが発表されて、購入が可能な事が判り、いつもの chip1stop で購入した。
品番は、R5F526TFDGFPで、フラッシュ512K、RAM64K、データフラッシュ16K、100ピンのバージョンだ。
構成としては、かなり目新しい部分もあるが、基本的にはRX200シリーズなので、RX24Tの後継品だろうか・・
基本、家電製品や自動車などに使う事がメインと思うので、値段もまぁまぁ安い部類。
特徴
- RXv3 コア(最大120MHz動作)
- TFU2 内蔵(バージョンアップ版 TFU)
- RSCI モジュール(新しいシリアル通信モジュール)
- I3C バスインターフェース
- RSPIA(シリアルペリフェラルインターフェース)
- CANFD(FD 仕様の CAN モジュール)
こんな感じだろうか・・
他にも細かい部分で色々な機能がある。
残念なのは、USB インターフェースが無い点。
※CANFD のクロック分周器が新設されたが、これは以前は、USB クロックの分周器として利用していたものなので、そのせいで、USB を切ったのかもしれない。
TFU2 は、レジスタ退避機能があり、割り込み内で利用可能になったようだ。
RSCI、I3C、RSPIA,CANFD は、新たにドライバーを作り直す必要がある。
これらモジュールは、ARM 系モジュールでも使われて、今後、RX マイコンでも主流になるものと思う。
※ソフト資産を共有可能なのだろう~
内蔵メモリの容量違いで、機能が削られたりする仕様があり、デバイス選択に複雑な要因が入り込む。
このようなセールスはやめて欲しいと思う、何かメリットがあるのだろうか?
内蔵RAMが64K版と48K版がある・・、この仕様も、何かメリットがあるのだろうか?
難産・・・
早速、ユニバーサル基板に組み、初期実験を行った。
フレームワークは、RX24T、RX66T、などと共通点が多く、必要な部分を実装しておいた。
どちらかと言うと RX66T に近い構成。
しかし、ちゃんと動作しない・・・
簡単なLED点滅ですら、動かない・・・
調査調査調査・・・
少し調査した限りでは、クロックのブーストは動作しているようだが、その先でつまずくようだ・・・
こんな症状は初めてで、基板の配線、電源、色々と検査した。
VSS が1本接続忘れがあったり、細かい部分でミスを発見したが、直しても、駄目・・・
簡単なプログラムでも、リセットを繰り返すと、頻度は少ないが動作しない場合がある。
これは、クロックのブーストが失敗するのかも・・
基板の配線、主に電源ラインを確認したり、何か間違いが無いか確認したりと色々と行ったが成果無し。
色々な事をトライして、判ったのは、内部 PLL の最大周波数を 240MHz にすると、動作が不安定になる。
120MHz だと、安定して動作するようだ。
ハードウェアーマニュアルでは、120MHz~240MHz となっている。
VCL に接続したコンデンサは、 0.47uF が無かったので 1uF を付けた、それが原因なのかもしれない。
しかし、内部電源の平滑用なので、容量は PLL の動作に関係無いと思うのだが・・
昔に、チップワンストップで、チップコンデンサがファイルされた「コンデンサセレクション」を買った(高かった)、それを探したら、0.47uF があったので付け替えた。
※ここぞと言う場合に使うので、あまり使いたく無いのと、サイズが1608なのが・・
しかし、やはり 240MHz の動作は不安定でほぼ動作しない。
とりあえず、内部 PLL は 120MHz で動作させる事とした。
ソフト・ディレイループ定数
RX24T より、優秀で、単純なループでも、40%くらい速い感じがある、同じ RXv3 コアの RX66T、RX72T とほぼ同等の性能のようだ。
static constexpr uint32_t DELAY_MS = ICLK / 3'065'133; ///< ソフトウェアー遅延における定数(1マイクロ秒)
オーバークロック耐性
static constexpr uint32_t PLL_BASE = 180'000'000; ///< PLL ベースクロック(最大 120 to 240MHz)
static constexpr uint32_t ICLK = 180'000'000; ///< ICLK 周波数(最大 120MHz)
static constexpr uint32_t PCLKA = 90'000'000; ///< PCLKA 周波数(最大 120MHz)
static constexpr uint32_t PCLKB = 45'000'000; ///< PCLKB 周波数(最大 60MHz)
static constexpr uint32_t PCLKC = 90'000'000; ///< PCLKB 周波数(最大 120MHz)
static constexpr uint32_t PCLKD = 45'000'000; ///< PCLKD 周波数(最大 60MHz)
static constexpr uint32_t FCLK = 45'000'000; ///< FCLK 周波数(最大 60MHz)
オーバークロックによるSCIサンプルの動作:
Start SCI (UART) sample for 'RX26T DIY' 180[MHz]
SCI PCLK: 45000000 [Hz]
SCI Baud rate (set): 115200 [BPS]
Baud rate (real): 115355 (0.13 [%])
SEMR_BRME: true
SEMR_BGDM: true
CMT Timer (set): 100 [Hz]
Timer (real): 100 [Hz] (0.00 [%])
#
とりあえず、180MHz(1.5倍)の動作は確認した、PLL が 240MHz で不安定なので、240MHz(2倍)は動作しないだろうと思う。
それでも、十分な耐性だと思える。
サンプルアプリの動作
当然なのだが、C++ フレームワークの柔軟性により、FIRST_sample が動作したら、SCI 関係も、何の苦労無く普通に動作する。
- FIRST_sample
- SCI_sample
- RAYTRACER_sample
RAYTRACER_sample:
マイコン |
core |
FPU |
fsqrt 命令 |
周波数 [MHz] |
描画方式 |
時間 [ms] |
RX62N |
RXv1 |
O |
X |
96 |
8 bits, port-bus |
1860 |
RX631 |
RXv1 |
O |
X |
96 |
8 bits, port-bus |
1868 |
RX24T |
RXv2 |
O |
O |
80 |
8 bits, port-bus |
1224 |
RX26T |
RXv3 |
O |
O |
120 |
8 bits, port-bus |
692 |
RX65N |
RXv2 |
O |
O |
120 |
Frame Memory |
784 |
RX64M |
RXv2 |
O |
O |
120 |
16 bits, port-bus |
751 |
RX66T |
RXv3 |
O |
O |
160 |
8 bits, port-bus |
602 |
RX72T |
RXv3 |
O |
O |
192 |
8 bits, port-bus |
464 |
RX71M |
RXv2 |
O |
O |
240 |
16 bits, port-bus |
439 |
RX72N |
RXv3 |
O |
O |
240 |
Frame Memory |
361 |
Start CALC sample for 'RX26T DIY' 120[MHz]
# Rad
# tan(355/226)
-7497258.185325587112905071831891248663417267943785263161571
# Deg
# sin(45)
0.7071067811865475244008443621048490392848359376884740365883
# cos(60)
0.5
# cos(45)
0.7071067811865475244008443621048490392848359376884740365883
# sin(60)
0.8660254037844386467637231707529361834714026269051903140279
#
まとめ
久しぶりにブログを書いた。
RXマイコン関係もかなり久しぶり。
RX26T は、CP が高めなのと、新しいペリフェラルの投入もあり、中々面白いCPUとなっている。
RX26T に新設されたペリフェラルの実装もまだなので、今後それらを中心にサポート、実験をしていきたい。