Raspberry pi の AP に関して
Broadcom 2835
Raspberry pi のAP(CPU)公式ドキュメント
場所が少しわかりにくいのでリンクを記載します。 Top ベージからは、"Help" > "Documentation" > "Hardware" > "Raspberrypi" です。
ここから "BCM2835" > "Peripheral specification" にあります。
このドキュメントの課題
- 情報が不完全で必要としている情報も欠落している
- 誤記もある
- AVR のドキュメントと比較すると随分とわかりにくい
レジスタのアドレスなど参考になるサンプルコード
wiring Pi
このライブラリの作者はいろいろなFAQ/Forumで回答者としてアドバイスされています。 細かいことを Google 検索するとかなりの確率でお世話になる。
調べてわかったこと(備忘録)
Peripheral Base Address ( Physical )
上記公式ドキュメントと
https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2836/QA7_rev3.4.pdf
で確認できます。
BCM2835(Raspberry Pi Model A, B, B+, the Compute Module, and the Raspberry Pi Zero) 0x7E00_0000
BCM2836(Raspberry Pi 2 Model B)/BCM2837(Raspberry Pi 3) 0x3F00_0000 (訂正:0x3E00_0000は間違い)
PWM pin
BCM2835 で GPIO18 を使って、モードは ALT5 にする。
PWM モード
2つのモードがある。
PWM algorithm
単位期間内のHigh/Low Cycle をバランスよく配置する。 DCモータの駆動のように平均電圧をなんとかするだけなら、こちらで使用した方が良いかもしれない。
MS algorithm
単位期間内のHigh/Low cycle が各々固まっている。 単位期間内のHigh期間が終わってから、Low 期間となる。 サーボモータの回転角を PWM 波形で制御する場合はこちらが制御しやすいだろうと思う。
Clock source
PWM のカウンタクロックは主に下記の通りとなる。 ただし、PLL の周波数はOSで設定されている通りなので、 下記周波数は調査する必要がある。
- Oscillator = 19.2MHz
- PLLA = 500MHz?