Arduino UNO R4 その3(RA4M1 の隠された機能)

Arduino UNO R4の3回目です。
2回目の記事は、「Arduino IDEを使用してArduino UNO R4に書き込む方法」を紹介しました。Windowsだけではなく、作業部屋のパソコンにはubuntu (Linux)が入っているので、「LinuxでArduino IDEを使う場合の不具合対処法」も記載しました、
(前回の記事は以下をクリック。)

今回は、Arduino UNO R4で採用になった、ルネサス社のMCU「RA4M1」の「超能力」についてです。

Arduino UNO R4の種類と追加機能

Arduino UNO R4には2種類あり、標準の「Minima」とWiFi機能が付いた「WiFi」です。(WiFiは、搭載された「ESP32-S3」によるWiFiとBluetooth機能、ボード上にLEDマトリックスが追加され、プログラム書き込み機能などが異なります。)

最近、「Minima」の互換機について調べていましたが、使用されている「RA4M1」の能力が十分に利用されていないことに気づきました。

Arduino公式HPで紹介している、Arduino UNO R4 Minimaの機能は以下のとおりです。

  • メモリの拡張とクロックの高速化
  • 追加された機能 : 12 ビット DAC、CAN BUS、OP AMP など
  • 入力電圧の24 V 耐性
  • SWD コネクタ : 外部デバッガ用
  • HID サポート : マウスやキーボード機能をサポート

こう書かれると、「ATmega328P」を使っていたArduino UNO R3に、「12ビット DAC、CAN BUS、OP AMPとHID機能」が追加されたと思いますよね?
でも、「RA4M1」のデータシートを見ていると隠された「超能力」があることが分かります。

採用されているMCUの機能

ルネサス社は日本の会社なので、マニュアル類も(しっかりした)日本語版が用意されています。
今回は「Renesas RA4M1グループ ユーザーズマニュアル ハードウェア編」(r01uh0887jj0110-ra4m1)を参照します。

このマニュアルのP60に「1.5 端子機能」の表があり、各種機能が一覧になっています。
一覧表の順に機能の概略を紹介します。(一部解説を追記しました。)

電源

VCC:入力電源端子
VSS:グランド端子
VCL:電源安定化用のコンデンサ端子
上記以外に、RTC(時計機能)用のVBATT(バックアップ電源供給端子)があります。

クロック(外部クロック供給端子)

XTAL、EXTAL: 外部(メイン)クロック信号用
XCIN、XCOUT:サブクロック発振器用
CLKOUT:クロック信号の出力端子

動作モード コントロール(ブートローダの書き込み用)

MD:入力動作モード設定端子

システム制御

RES :リセット信号入力(Lowでリセット状態)

CAC(クロック周波数精度測定回路)

測定基準内に、測定対象のパルスをカウントし、パルス数が許容範囲内であるかどうかを判定します。
CACREF:測定基準クロックの入力端子

インタラプト

NMI:割り込み要求端子
IRQ0~IRQ12,IRQ14, IRQ15:割り込み要求端子

KINT(キー割り込み機能)

KR00~KR07:キー割り込み入力端子

オンチップ デバッグ

TMS、TDI、TCK、TDO、:オンチップ エミュレータ用端子
SWDIO、SWCLK 、SWO:シリアル ワイヤ デバッグ データ用

バッテリバックアップ

VBATWIO0~VBATWIO2:VBATT用のウェイクアップ信号

GPT(汎用PWM タイマ)

GTETRGA、GTETRGB:外部トリガ入力端子
GTIOC0A~GTIOC7A、GTIOC0B~GTIOC7B:インプット・アウトプットキャプチャ、PWM出力端子
GTIU、GTIV、GTIW:ホールセンサ用
GTOUUP、GTOULO、GTOVUP、GTOVLO、GTOWUP、GTOWLO:BLDCモータ制御用3相PWM出力

AGT(低消費電力非同期汎用タイマ)

パルス出力、外部パルスの幅または周期の測定、および外部イベントのカウントに利用可能な16 ビットのタイマです。
AGTEE0、 AGTEE1:外部イベント入力信号
AGTIO0、 AGTIO1:外部イベント入力およびパルス出力端子
AGTO0、 AGTO1:パルス出力端子
AGTOA0、 AGTOA1、AGTOB0、 AGTOB1:コンペアマッチ出力端子

RTC(リアルタイム クロック)

RTCOUT:1Hz/64Hzのクロック出力端子
RTCIC0~RTCIC2:時間キャプチャ イベント入力端子

SCI(シリアル コミュニケーション インタフェース)

内蔵しているSCI機能は以下の5種類です。
・調歩同期式インタフェース(UART および調歩同期式通信インタフェース アダプタ(ACIA))
・8 ビットクロック同期式インタフェース
・簡易IIC(マスタのみ)
・簡易SPI
・スマートカード インタフェース
(I2CとSPIは下でも出てきます。)

SCK0~SCK2,SCK9:クロック用の入出力端子
RXD0~RXD2,RXD9:受信データ用の入力端子
TXD0~TXD2,TXD9:送信データ用の出力端子
CTS0_RTS0~CTS2_RTS2,CTS9_RTS9:送受信の開始制御用の入出力端子
SCL0~SCL2,SCL9:I2Cクロック用の入出力端子
SDA0~SDA2,SDA9:I2Cデータ用の入出力端子
SCK0~SCK2,SCK9:SPIクロック用の入出力端子
MISO0~MISO2,MISO9:SPIデータのスレーブ送信用の入出力端子
MOSI0~MOSI2,MOSI9:SPIデータのマスタ送信用の入出力端子
SS0~SS2, SS9:SPIスレーブ選択入力端子

IIC(いわゆるI2C用)

SCL0, SCL1:クロック用の入出力端子
SDA0, SDA1:データ用の入出力端子

SSIE(拡張シリアルサウンドインタフェース)

SSIEは、I2S や異なるデータ フォーマットの複数デバイス間でオーディオ データの送受信ができます。

SSIBCK0:SSIEシリアルビットクロック端子
SSILRCK0/SSIFS0:ワード選択端子
SSITXD0:シリアルデータ出力端子
SSIRXD0:シリアルデータ入力端子
AUDIO_CLK:オーディオ用の外部クロック端子

SPI(シリアルペリフェラルインタフェース)

RSPCKA, RSPCKB:クロック入出力端子
MOSIA, MOSIB:マスタから出力されたデータの入出力端子
MISOA, MISOB:スレーブから出力されたデータの入出力端子
SSLA0, SSLB0:スレーブ選択用の入出力端子
SSLA1, SSLA2, SSLA3, SSLB1, SSLB2, SSLB3:スレーブ選択用の出力端子

CAN(車載機器通信用)

CRX0:受信データ
CTX0:送信データ

USBFS(USB2.0 フルスピードモジュール)

VSS_USB:グランド端子
VCC_USB_LDO:USB LDOレギュレータ用の電源端子
VCC_USB:入力時はUSBトランシーバ用の電源端子、出力時はUSB LDOレギュレータ出力端子
USB_DP:USB内蔵トランシーバD+入出力端子
USB_DM:USB内蔵トランシーバD-入出力端子
USB_VBUS:USBケーブル接続モニタ端子
USB_EXICEN:外部電源(OTG)チップの低消費電力制御信号
USB_VBUSEN:外部電源チップへのVBUS(5V)供給許可信号
USB_OVRCURA,USB_OVRCURB:外部オーバーカレント検出信号
USB_ID:MicroABコネクタのID入力信号を接続

アナログ電源

MCUのアナログ部(ADCなど)用の電源・基準電源端子
AVCC0、AVSS0:アナログ電源端子
VREFH0、VREFL0:アナログ基準電源端子
VREFH、VREFL:D/Aコンバータ用のアナログ基準電圧源端子

ADC14

AN000~AN014,AN016~AN025:A/Dコンバータで処理されるアナログ信号用の入力端子
ADTRG0:A/D変換を開始する外部トリガ信号用の入力端子、アクティブLow

DAC12

DA0:D/Aコンバータのアナログ出力端子

コンパレータ出力

VCOUT:コンパレータ出力端子

ACMPLP(低消費電力アナログ コンパレータ)

ACMPLPは、基準入力電圧およびアナログ入力電圧を比較します。
CMPREF0,CMPREF1:基準電圧入力端子
CMPIN0, CMPIN1:アナログ電圧入力端子

OPAMP

3チャンネル分を内蔵しています。
AMP0+~AMP3+、AMP0-~AMP3-:アナログ電圧入力端子
AMP0O~AMP3O:アナログ電圧出力端子

CTSU(静電容量式タッチセンシング ユニット)

タッチセンサの静電容量を測定、ソフトウェアで静電容量の変化を判定してタッチセンサに接触したことを検出する機能
TS00~TS13,TS17~TS22,TS27~TS31,TS34, TS35:静電容量式タッチ検出端子(タッチ端子)
TSCAP:タッチドライバ用の二次電源端子

I/Oポート

3チャンネルは入力専用のようです。
P000~P008、P010~P015、P100~P115、P201~P206、P212、 P213、P300~P307、P400~P415、P500~P505、P600~P603、P608~P610、P708、P808, P809、P914, P915:汎用入出力端子
P200、P214、 P215:汎用入力端子

SLCDC(セグメントLCD コントローラ)

VL1, VL2, VL3, VL4:LCD駆動用の電圧端子
CAPH, CAPL:LCDコントローラ/ドライバ用のコンデンサ接続端子
COM0~COM7:LCDコントローラ/ドライバ用のコモン信号出力端子
SEG00~SEG37:LCDコントローラ/ドライバ用のセグメント信号出力端子

その他の機能

・内蔵温度センサ(TSN)で、MCUの温度を測定できます。
・セキュア暗号エンジン(SCE5)は、アクセス管理回路、暗号エンジン、乱数生成器で構成されています。
・データ演算回路(DOC)は、16 ビットのデータを比較、加算、または減算する機能です。

RA4M1の「超能力」

Arduino UNO R4と他のマイコンとの比較記事をよく見ますが、今まで見かけたのは他の搭載されたMCUの演算スピードや搭載メモリ量の比較記事だけのようです。
しかし、RA4M1のデータシートを見ると、それ以外の機能が利用できそうです。

サウンドの処理

SSIE(拡張シリアルサウンドインタフェース)機能を使うと、マイクとスピーカをつないで簡単に録音再生が出来ます。「RXファミリ SSIEを使用する音声入出力サンプルプログラム」 (r01an6647jj0101-rx-ssie) を参照)
また、ルネサス社の「Voice Recognition Solutions」というHPでは、MCUに「RA4M2」を使っていますが、ネットに接続せずに音声認識する方法について解説しています。
解説のとおりなら、異なる音声データの変換も出来るようです。

Arduino UNO R4で使えるか確認してみます。
データシートでは、以下の5本の端子を使います。

RA4M1 PinR4 Pin端子名機能
3711SSIBCK0シリアルビットクロック端子
38xSSILRCK0/SSIFS0ワード選択端子
xxSSITXD0シリアルデータ出力端子
xxSSIRXD0シリアルデータ入力端子
1xAUDIO_CLKオーディオ用の外部クロック端子

・・・残念でした。
Arduino UNO R4で使用している64ピンのMCUでは、「シリアルデータ入出力端子」がありません。
使えませんね。

100ピンMCUを搭載している「RMC-RA4M1」なら、必要なP400とP403~406の5つの端子が「コネクタ5」に出ているので使用可能だと思います。
(「RMC-RA4M1」の詳細は、以下をクリック)

暗号化

セキュア暗号エンジン(SCE5)を使えば、MCUの固有IDから平文を暗号化するなどの処理がチップ内で行えます。
今のところ詳しいところは分かりませんが、入出力端子には影響されないようなので、使い方が分かり次第追記します。

温度センサ(TSN)

Arduino UNO R3の「ATmega328P」にもチップ内に温度センサが内蔵されていました。
「RA4M1」でも、内蔵されている温度センサでチップの温度を測定できます。
センサはチップの温度と正比例する電圧を出力します。出力された電圧は内部基準電圧と比較され14ビットA/Dコンバータで変換されるために、かなり正確であるようです。(使用範囲内での誤差が3℃程度のようです。)

Arduino UNO R4の心配な機能

ところで、Arduino UNO R4の配線図の電源部分をよく見てみると気になるところがありました。
「3.3 V」の部分です。(「+3V3」という記載になっています。)

配線図を見る前は勝手に、5 Vからレギュレータで3.3 Vを作っている。と思っていましたが違いました。
MCU(RA4M1)の20番ピン「VCC_USB」から供給されています。
ここのデータシート上の記載を見てみます。
供給できる最大定格電流は5 Vの時は100 mAですが、Arduino UNO R4はUSBから電源を供給するとショットキ・ダイオードにより4.7 V程度まで電圧降下します。
さらに下がった時のことを考えれば、給電電流の最大は50 mA程度です。

よく使われる「1.3インチ OLEDディスプレイ」の消費電流は、最大で20 mA程度のようですから、あまり多くの周辺機器の電源をArduino UNO R4の3.3 V端子から取るのは心配です。

コメント