Arduino UNO R4の3回目です。
今回は、Arduino cc の HP で紹介されていない Arduino UNO R4 の隠された機能について探っていきます。
Arduino として実装されている機能ではなく、Arduino UNO R4で採用になったルネサス社のMCU「RA4M1」の「超能力」についてです。
2回目の記事は、「Arduino IDE を使用して Arduino UNO R4 に書き込む方法」を紹介しました。
書き込む方法は Windows だけではなく、我が家の作業部屋のパソコンには ubuntu (Linux)が入っているので、「Linux で Arduino IDE を使う場合の不具合対処法」も記載しました、(前回の記事は以下をクリック。)
- Arduino UNO R4 の種類と追加機能
- 採用されているMCUの機能
- 電源
- クロック(外部クロック供給端子)
- 動作モード コントロール(ブートローダの書き込み用)
- システム制御
- CAC(クロック周波数精度測定回路)
- インタラプト
- KINT(キー割り込み機能)
- オンチップ デバッグ
- バッテリバックアップ
- GPT(汎用PWM タイマ)
- AGT(低消費電力非同期汎用タイマ)
- RTC(リアルタイム クロック)
- SCI(シリアル コミュニケーション インタフェース)
- IIC(いわゆる I2C 用)
- SSIE(拡張シリアルサウンドインタフェース)
- SPI(シリアルペリフェラルインタフェース)
- CAN(車載機器通信用)
- USBFS(USB2.0 フルスピードモジュール)
- アナログ電源
- ADC14
- DAC12
- コンパレータ出力
- ACMPLP(低消費電力アナログ コンパレータ)
- OPAMP
- CTSU(静電容量式タッチセンシング ユニット)
- I/Oポート
- SLCDC(セグメント LCD コントローラ)
- その他の機能
- RA4M1 の「超能力」
- Arduino UNO R4 の心配な機能
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(バックアップ電源供給端子)があります。
クロック(外部クロック供給端子)
Arduino UNO R4 ではクロックはチップ内部で作っていますが誤差が大きいです。(特にサブクロックは日差10分程度の誤差)外部クロック付きの UNO の登場が待たれます。
XTAL、EXTAL: 外部(メイン)クロック信号用
XCIN、XCOUT:サブクロック発振器用
CLKOUT:クロック信号の出力端子
動作モード コントロール(ブートローダの書き込み用)
ここを GND に落とすとブートローダを書き込む動作モードに移行します。
Arduino UNO R4 のブートローダの書き込み方法は別記事に記載しています。
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(リアルタイム クロック)
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 用)
MCU 的には2チャンネルの 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(車載機器通信用)
インターフェースは別に準備する必要がありますが、自家用車に搭載されている MCU とつないで各種情報(速度や燃費など)を簡単に取得できます。
CRX0:受信データ
CTX0:送信データ
USBFS(USB2.0 フルスピードモジュール)
Arduino UNO R3 で採用されている Atmega328 と違い自分で USB のインターフェースを持っています。
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
OPAMP は3チャンネル分を内蔵しています。
AMP0+~AMP3+、AMP0-~AMP3-:アナログ電圧入力端子
AMP0O~AMP3O:アナログ電圧出力端子
CTSU(静電容量式タッチセンシング ユニット)
タッチセンサの静電容量を測定、ソフトウェアで静電容量の変化を判定してタッチセンサに接触したことを検出する機能
TS00~TS13,TS17~TS22,TS27~TS31,TS34, TS35:静電容量式タッチ検出端子(タッチ端子)
TSCAP:タッチドライバ用の二次電源端子
I/Oポート
沢山のチェンネルを持っていますが、その内3チャンネル(P200,214,215)は入力専用のようです。
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 Pin | R4 Pin | 端子名 | 機能 |
37 | 11 | SSIBCK0 | シリアルビットクロック端子 |
38 | x | SSILRCK0/SSIFS0 | ワード選択端子 |
x | x | SSITXD0 | シリアルデータ出力端子 |
x | x | SSIRXD0 | シリアルデータ入力端子 |
1 | x | AUDIO_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 から電源を供給するとショットキ・ダイオードにより 5 V 部分の電圧が 4.7 V 程度まで電圧降下します。
さらに下がった時のことを考えれば、給電電流の最大は 50 mA 程度です。
よく使われる「1.3インチ OLEDディスプレイ」の消費電流は、最大で 20 mA 程度のようですから、あまり多くの周辺機器の電源を Arduino UNO R4 の 3.3 V 端子から取るのは心配です。
コメント