2009年2月18日水曜日

STM32のAlternate Functionが分からない

STM32ファミリのマイコンは周辺回路を多く持っている。一般的なマイコン同様、1つのI/OピンにGPIOと複数の周辺回路が割り当てられている。I/Oピンの入出力設定を行うレジスタでは、I/Oピンを入力・出力・Alternate Functionという3つのモードに切り替えられるらしい。更にプルアップやプルダウンの設定、動作速度の設定もできるらしい。(RM0008 Alternate Functionについての解説より)

GPIOの出力レジスタODR(Output Data Register)は出力バッファに接続されており、出力モードが設定されたビットにはODRの値に対応する電圧が出力される。Alternate Functionモード(これにも入出力はある)にすると、ODRのは出力バッファから切り離され、代わりに周辺回路が接続される。

この考え方は他のマイコンと同じだが、STM32では複数の周辺回路で一部のピンが重複して割り当てられていることがある。この場合周辺回路を同時に使えないはずだが、どちらの機能がピンを使えるの設定を行う方法が不明。重複した周辺回路の片方が、そのピンを使わないよう設定できたりしたら、同時に使うことができるのだろうか?

また、周辺回路は接続先のI/Oピンを切り替えられることがあるのだが(これをリマップと言い、ソフトウェアからリマップレジスタの値を書き換えることで2~4通りの接続が選択できる)、リマップ先が重複していることがある。リマップしても重複していれば当然使えないはずだが...どちらを使うかの設定はどこでするのだろう?

同じピンに複数の周辺回路が割り当てられた場合、やはり2つの回路を同時に有効にしてはいけないのだろうか(出力バッファへの入力が2つの回路から駆動されるため)。明示的に周辺回路を切り替えられる仕組みがあったりするのだろうか。何らかの注意が書かれていて欲しいが、マニュアルから見つけられずにいる。

1 件のコメント:

  1. WikimurAの『STM32でUSARTを使ってみる』
    を参考にしてください

    返信削除