Raspberry Pi 5のRP1-Chipを使い倒す(GPCLK)

前回投稿のPi5用のGPIOライブラリをさらにGPCLK対応してみた。

最初は全く動かなくてハマリまくってしまったがクロック・レジスタの構造体の定義が間違っていただけだった。v(-_-;)

GPCLKを最大3出力できるがGPCLK1/2はSDIO関連で利用する?っぽい感じなので使えるけど使うのはお勧めではないかも。

GPCLKの分周比が16ビットなのとPWMと同じXOSCクロックを使用するため出力周波数は763Hz~50MHzまでとなる。

しかし、GPIOで50MHzの出力は無理そうな気もするのでもっと低いクロックを使いたかったのだがGPCLK0/1/2で共通使用できるクロックはXOSCぐらいしか見つけられなかった...

使い方は簡単で次のように出力ピンと周波数(Hz)を指定する。利用可能な出力ピンはgetGPCLKChannel()を見るべし!

【修正】
2025-05-06
pinMode()に出力初期値指定の追加と不必要なプルアップ設定を解除するようにした。

2025-05-02
下記関数を追加。
static unsigned long nanos(void)
static unsigned long micros(void)
static unsigned long millis(void)
static void delayNanoseconds(unsigned long ns)
static void delayMicroseconds(unsigned long us)
static void delay(unsigned long ms)

2025-04-30
digitalWrite()の出力がリアルに反映されない現象の対策を行った。
その結果、Lチカ出力周波数は、SET/CLRで最大5MHz、TOGGLEでは最大400KHzとなる。

【サンプル】

【ライブラリ】

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


This site uses Akismet to reduce spam. Learn how your comment data is processed.