« トラ技原稿執筆時の注意点 | トップページ | RA4M1コアボードの16MHz水晶をPLLでメインクロックに »

2025年5月 2日 (金)

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
}
}

コネクタはまだ付けてないので、スルーホールに
クリップを引っかけて波形観察。
R41

こんな波形が得られました。
Image001_20250502130201
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メインクロックを
作るのはできました。
安定性の検証はこれから。


|

« トラ技原稿執筆時の注意点 | トップページ | RA4M1コアボードの16MHz水晶をPLLでメインクロックに »

Arduino UNO R4」カテゴリの記事

コメント

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分

コメントを書く



(ウェブ上には掲載しません)




« トラ技原稿執筆時の注意点 | トップページ | RA4M1コアボードの16MHz水晶をPLLでメインクロックに »