Arduino UNO R4互換品:RA4M1コアボード
「Arduino UNO R4」、そろそろ試してみないとなぁ
と思ってネットをさまよっていたら、
・Arduino UNO R4 の代替品1(RA4M1 コアボード):それ、やってみよう!
というページを発見。
・WeACT-RA4M1_CoreBoard
RA4M1コアボードが紹介されていました。
Arduino UNO R4、チップは高性能になっても、
基板サイズがUNO R3と同じ。
これでは、「ケースにちっこく組み込んで」という
工作ができません。
UNO R3は28ピンDIPのATmega328Pをソケットから
引っこ抜いて、ユニバーサル基板に組んだ回路に
乗せてということができるんでありがたいのです。
トラ技編集部からは、
・FLINT ProMicro R4(SWITCH SCIENCE扱い)
というのもあるよっとお聞きしてました。
このくらいの大きさなら、ユニバーサル基板に乗
せられるっと。
しかし、64ピンマイコンの多くの足が端子に出ないままに
なってます。
ところが、RA4M1コアボードはダブルの端子を使って
いるのでほとんどの信号が足に出ています。
こりゃエエかもっと買ってみました。
※ブートローダーの書き込み方法は前述の紹介
記事を参照。
まずやってみたのがI/Oポートのアクセス速度チェック。
digitalWriteとポートの直書きを比較してみました。
// 出力ピンのテスト
// D8ピン P304 digitalWriteでH/L
// D9ピン P303 直接I/OでH/L
// RA4M1 CoreBoardのLEDはP012(VREFH:DAC用Vref)につながっている
/***** SETUP *****/
void setup()
{
pinMode(8, OUTPUT); // P304
pinMode(9, OUTPUT); // P303
}
/***** LOOP *****/
void loop()
{
while(1){
digitalWrite(8, 1); // P304 H/L/H
digitalWrite(8, 0);
digitalWrite(8, 1);
R_PORT3->PODR_b.PODR3 = 1; // P303 H/L/H
R_PORT3->PODR_b.PODR3 = 0;
R_PORT3->PODR_b.PODR3 = 1;
R_PORT3->PODR &= ~(0b11 << 3); // 304,303 L
}
}
コネクタはまだ付けてないので、スルーホールに
クリップを引っかけて波形観察。
こんな波形が得られました。
digitalWriteでのH/Lだと1.34μs。
直書きだと0.42μs。
※思ったより速くありませんでした。
RA4M1コアボード、メイクロック用として16MHzの
水晶発振子が乗っています。
これを基準にPLLして48MHzを出すとどうなるかを
試してみたいと思います。
※RA4M1のスペックでは12.5MHzが最大。
16MHzをPLL入力が受け入れてくれるのかどうかが問題。
※UNO R4の回路を見ると、実装されていないけれど
同じように発振子(Y1)のパターンが見えます。
部品名がFTX16.000M12SM3S-30/30てなってい
てこれも水晶発振子。
※PLLは逓倍数が8~31で、それを1/2か1/4して
メインクロックの48MHzに。
ということは16MHz×12して192MHz。
それを1/4して48MHzという流れ。
※水晶の周波数を12MHzとか8MHzに落とせばエエですが、
R4の現パターンに乗るような小型の水晶が無いようです。
※しかし、もう、誰かやってるかな?
※1MHzパルスを出してメインクロックの様子を見る
// 1MHz出力のテスト
// D5ピン P102 GT2B 1MHzでトグル出力
// D8ピン P304 loopでH/L
// D9ピン P303 millis変化でトグル(500Hz)
// ポートH/L制御出力
#define D8_H (R_PORT3->PODR_b.PODR4 = 1) // D8:P304 H/L
#define D8_L (R_PORT3->PODR_b.PODR4 = 0)
#define D9_H (R_PORT3->PODR_b.PODR3 = 1) // D9:P303 H/L
#define D9_L (R_PORT3->PODR_b.PODR3 = 0)
/***** SETUP *****/
void setup()
{
pinMode(8, OUTPUT); // D8:P304
pinMode(9, OUTPUT); // D9:P303
// D5:P102
R_PMISC->PWPR_b.B0WI = 0; // PFS書き込みプロテクト解除
R_PMISC->PWPR_b.PFSWE = 1; // (プロテクト戻してないよ)
R_PFS->PORT[1].PIN[2].PmnPFS_b.PDR = 1; // ポート出力に
R_PFS->PORT[1].PIN[2].PmnPFS_b.PSEL = 0b00011; // GTIOC2B
R_PFS->PORT[1].PIN[2].PmnPFS_b.PMR = 1; // 機能出力有効
// GPT2 B出力を1MHzでトグル
R_MSTP->MSTPCRD_b.MSTPD6 = 0; // PWMモジュールストップ解除
R_GPT2->GTCR_b.MD = 0b000; // ノコギリ波モード
R_GPT2->GTUDDTYC = 0b11; // 強制的にupカウント
R_GPT2->GTUDDTYC = 0b01; // up継続
R_GPT2->GTCR_b.TPCS = 0b000; // PCLKD/1 48MHz
R_GPT2->GTPR = 24 - 1; // 48MHz/24=2MHz トグルで1/2して1MHz
R_GPT2->GTCNT = 0; // 初回カウント値
R_GPT2->GTIOR_b.GTIOB = 0b01100; // GTIOC2B 周期の終わりでトグル出力
R_GPT2->GTIOR_b.OBE = 1; // B出力許可
R_GPT2->GTCR_b.CST = 1; // カウント開始
}
/***** LOOP *****/
void loop()
{
uint32_t ms , a; // 1msチェックデータ
int f_x9 = 0; // D9ポート反転フラグ
ms = millis(); // 現1ms値
while(1){
D8_H; // D8:P304 H/L
D8_L;
a = millis(); // 新1ms値
if(ms != a){ // 1ms変化?
f_x9 ^= 1; // 0/1
if(f_x9) D9_H; // D9:P303 H/L
else D9_L;
ms = a; // 次の1msを待つ
}
}
}
タイマー2を使って、メインクロックを1/48して1MHzの
方形波を出してみました。
今回、RA4M1コアボードは3枚買いました。
そのうちの2枚の出力周波数が1MHzより10~30Hz高い
だけで「水晶発振で動いてるんとちゃうん?」と思う
くらいでした。
残り1枚がプラス400Hzほど。
ただし、みんなけっこう変動しています。
周波数カウンタのゲート時間1秒で観察すると平均化さ
れてしまって分かりにくいのですが、0.1秒にすると
400~600Hzほどで変動してるのが目立ちます。
さて、うまいこと水晶発振によるPLL化はできるかな?
もう一つ。
メインクロックの短期間周波数変動を見ようとするとど
うしたらよいでしょか。
計測時間を長くすると平均化されてしまうし。
別に置いた基準発振周波数とMIXして、差を見る
なんて方法かな。
「BFO」ですな。
※続き
・2025年5月3日:RA4M1コアボードの16MHz水晶をPLLでメインクロックに
とりあえず、16MHz水晶からPLLで48MHzメインクロックを
作るのはできました。
安定性の検証はこれから。
| 固定リンク
「Arduino UNO R4」カテゴリの記事
- Arduino UNO R4 minimaに12MHz水晶を(2025.06.09)
- Arduino UNO R4で2つの1Hz信号の位相変化を見る(2025.06.06)
- UNO R4はanalogWrite(n,128)でデュティー50%の方形波が出るぞ(2025.06.03)
- Arduino UNO R4 minima 電源供給方法でクロックが変わる#6(2025.06.02)
- Arduino UNO R4 minima 電源供給方法でクロックが変わる#5(2025.06.01)
コメント
SSBの受信機で聞いて、キャリア音のピッチ変化を測定、というか耳で聞き分けちゃうなんてどうでしょう。
投稿: ラジオペンチ | 2025年5月 3日 (土) 10時29分
拙い内容のブログが、多少でもお役に立ててうれしいです。
私は、スペックシートの記載から、試しもせずに、このボードに搭載されている 16MHz のクリスタルは使えないと思ったのですが、PLL まで出来るのですね。
投稿: パオさん | 2025年5月 3日 (土) 19時08分
UNO R4 minimaの回路図から「×マーク」で消された16MHz水晶発振子。(ちょっとかわいそう)
これが「ひょっとしたら行けるかも」の原動力です。
「5Vやったらちょい頑張れるかも」っと5V仕様のRA4M1コアボードを注文しました。
投稿: 居酒屋ガレージ店主(JH3DBO) | 2025年5月 3日 (土) 19時17分
BFO付の携帯ラジオなんて持ってない・・・
家のHF無線機(受信は100kHzからできる)を仕事場に持ってくるのもたいそうだし・・・
※NDB RK 340kHzも聞けた
http://act-ele.c.ooco.jp/blogroot/igarage/article/1201.html
1MHzといえば1000kHz。
大阪だとABCラジオ(1008kHz)のちょい下。
普通のラジオで1MHzを聞いて、それに別の発振器(あれこれある)でビートをかけるとどうなるかを試してみます。
投稿: 居酒屋ガレージ店主(JH3DBO) | 2025年5月 3日 (土) 19時40分
ビート音での比較、できました。
http://igarage.cocolog-nifty.com/blog/2025/05/post-25ac74.html
投稿: 居酒屋ガレージ店主(JH3DBO) | 2025年5月 4日 (日) 16時13分