STN32F0Discovery開発キーポイント
20140530 coskx
T.SATOH
1. はじめに
STN32F0Discovery開発キーポイントは4つある。
(1)周辺ユニットperipheralへのクロック供給
(2)ピン割り当て
(3)ピンの機能変更Alternate function
(4)DMAチャンネル割り当て
2. 周辺ユニットperipheralへのクロック供給
周辺ユニットperipheralを利用する場合は,クロック供給しなくてはならない。使うユニットのみクロックを供給して省エネになっているためだと思われる。
ところで,あるユニットを使うときに,どこからクロックを供給するかがポイントである。
STM32F051xxリファレンスマニュアルdm00031936.pdf(RM0091)では,2.1 System architecture Figure 1. System architecture (all features)で概要がわかるようになっている。
AHB2 bus,APB1 bus,APB2 busでクロックを供給するので,これらを指定して設定することになる。
しかし,これだけではよくわからない。
7.4.6 AHB peripheral clock enable register (RCC_AHBENR)
7.4.7 APB peripheral clock enable register 2 (RCC_APB2ENR)
7.4.8 APB peripheral clock enable register 1 (RCC_APB1ENR)
を見ると,どのユニットがどのbusで有効になるか明確になる。
例えばGPIOAを使用するならば,AHB(RCC_AHBENR)のbit17なので
RCC ->AHBENR |= (1<<17);
にする,あるいは,
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
このようにして,クロックを供給する。
3. ピン割り当て
STMF0DISCOVERYで使用されているピン割り当てはSTMF0DISCOVERY User manual dm00050135.pdf(UM1525)のTable 6. MCU pin description versus board functionに記載されている。使用済みのピンをここで確認できる。
4. ピン割り当て(詳細)
機能ユニットがGPIOピンを利用する場合,あるユニットが利用できるピンは決まっており,
STM32F051xxマニュアルdm00039193.pdfのTable 13. Pin definitionsに記載されている。
5.ピンの機能変更
GPIOピンに他の機能をもたせる場合は,AFレジスタへの設定が必要になる。
ある機能を持たせるにはどのAFレジスタに登録すべきかは,
STM32F051xxマニュアルdm00039193.pdfのTable 14. Alternate functions selected through GPIOA_AFR registers for port Aに記載されている。
ただしこの表はPortA,Bのみなので,それ以外のPortC以降はフレームワークプロジェクトの
lib\STM32F0xx_StdPeriph_Driver\inc\stm32f0xx_gpio.h
の#define GPIO_AF_0などの記述のコメント欄から推測する。
6. DMA
使用する機能ユニット毎に使用できるDMAチャンネルが決まっている。
これはリファレンスマニュアルdm00031936.pdf(RM0091) Table 29. Summary of the DMA requests for each channel
on STM32F03x, STM32F04x and STM32F05x devices に与えられている。