NUCLEOのAlternate Function

STM32は、ピンの割り当てがいろいろできるようになっている。

例えばUART。
NUCLEOでは、TXで「SERIAL_TX」、RXで「SERIAL_RX」を使うのが標準になっている。
だが、SERIAL_TXはPA_2、SERIAL_RXはPA_3というピンに割り当てられているだけである。

http://www.st.com/web/en/resource/technical/document/datasheet/DM00115249.pdf
このPDFのp.47から見てほしい。
これは、STM32F411のAlternate Function Mappingという表である。
左側にピン番号が書かれていて、右側はAF番号とその時に割り当てる機能が載っている。
先にp.38から載っている表を見てしまうと、同じ機能が複数のピンに割り当てられていて、訳がわからないと思うから、p.47から見た方がよいだろう。
他のSTM32も、ドキュメントは別だが同じような表があると思われる。

では、このAlternate Functionをどうやって指定するかというと、GPIOx_AFRというレジスタを使う。
STM32F411だとこちら。
http://www.st.com/web/en/resource/technical/document/reference_manual/DM00119316.pdf
p.159に、GPIOx_AFRLとAFRHがある。

ただ、こういうのを考えながらピンとソースを管理していくと間違ってしまいそうなので、私としてはSTM32CubeMXを使うのがよいと思う
http://www.st-japan.co.jp/web/jp/catalog/tools/PF259242
ソースの自動生成をしたりするので、好みが合わない人もいるかもしれないが、うまく使えば時間短縮になるし、間違いも減ると思う。

mbedの場合

NUCLEOをmbedで使う場合は、Alternate Functionなど考えず、Platformのページにある図に従うことになる。
例えば、NUCLEO-F411REはこちら。
https://developer.mbed.org/platforms/ST-Nucleo-F411RE/
Arduino HeaderとMorpho Headerの2つが図に乗っているが、UART(Serial)は1, 2, 6の3つが載っている。
だから、この3つのどれかから選ぶことになる。
UARTの3, 4, 5は気にしないのだ。
UART1は、TXがPA_9とPB_6、RXがPA_10とPB_3と2セットあるが、どちらかを選ぼう。


Please log in to post comments.