ホーム

わたしはSTM8S-DISCOVERYの解説ページをこちらで運営しています.

STM8Sはかなりいじり回しましたので、こんどはSTM32に浮気してみようと思います.

このページでは、STM32-DISCOVERYの解説をしようと思います.

まだ使い始めなので、ツールをインストールしてどうやって使うんだこれ?というレベルです.(2012.1月現在)

=== STMのアフィリエイト始めました ===

STM32のwelcome-kitです

Welcome-Kit for STM32F4-Nucleo

試用レポはいずれまた...

====================

STM32-DISCOVERYはこんなかんじで売られています.

秋月で¥1100ですから驚きの安さです.

どんなCPUが載っているのか?

STM32-DISCOVERYに搭載されているのは、STM32F100RB という品種です.

STM32シリーズCPUのデータシートはこちらのページにあります.(2011.12現在) (英語)

http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00251732.pdf

ARM 32-bit Cortex™-M3 というCPUが載っているので、携帯とかでおなじみのARMプロセッサの一種です.

搭載されているメモリは、フラッシュメモリ128 KB、RAM 8 KB です.

メモリマップはこうなっています.

STM8Sの空間に比べると広大な32bitアドレス空間にスカスカにメモリや周辺回路が分布しています.

クロック周波数は最大で24MHz.

PLLが内蔵されていて周波数をアップできますので、STM32-DISCOVERYの外付け水晶発振子は8MHzになっています.

周辺回路は、タイマ、ADC(12bit)、DAC(12bit)、SPI、I2C、UART が内蔵されています.ブロック図はこちらです

おおっ、これは便利と思うのは、RTCが載ってることです.時刻をログるのに有用ですから.

DMAは、何に使うんだろ?というかんじで、ピンと来なかったのですが、データシートによると、ADC/DACとDMAを組み合わせて使うようになっているようです.

HDMIのコントローラも内蔵されているようですけど、どのように使えるのかは不明です.

周辺回路の詳しい解説はこちらのページです.(2011.12現在)(英語)

http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/REFERENCE_MANUAL/CD00246267.pdf

電源電圧は3.3V系です.5V電源は使えません.5Vを加える場合はレギュレータで3.3Vに落とす必要があります.

ピン配置はこうなっています.各種周辺回路のIOポートは下記のピンに対してenable/disableされますので、下図には描かれていません.

ピンアサイン表はこちらです

STM32ではUSBを使えるの?

わたしがSTM32でもっともやりたいことはUSBで高速のIFをPCとやることです.

STM32F100RB の周辺回路資料をざっと見た限りではUSB-IFの回路が内蔵されているふうにはみえません.

しかし、USBが使えると思われる資料がSTMicroのサイトにあります.

これらはUSBを動かすためのfirmwareの資料です.

http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/USER_MANUAL/CD00158241.pdf

http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/um0424.zip

いったいなんでしょうか?

資料を読んだところでは、こうなっていることが判りました.STM32-DISCOVERYのSTM32F100RB ではUSBが使えません.

STM32F100xx USBなし ←STM32-DISCOVERYのCPU

STM32F101xx USBなし

STM32F102xx USBあり

STM32F103xx USBあり

STM32F105xx USBあり

STM32F107xx USBあり

STM32-DISCOVERYの回路図

こちらのページがSTM32-DISCOVERYのuser manualです.

http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/USER_MANUAL/CD00267113.pdf

STM32-DISCOVERYの回路図はこれです.

STM32F1xxでどんなフリーのライブラリがあるの?

こちらのページが参考になりました.

http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32-stm8_embedded_software_solutions.zip

STM32F1xxでフリーを前提として抜き出すと、DSPアルゴリズムライブラリ、RTOS、FATFS、USB など.

上位のSTM32F105のような上位CPUだと MP3、TCP/IP、ZigBee なども使えるようになるらしい.

電源系統

STM32は2~3.6Vで動作します.

IC内部に1.8Vのレギュレータが内蔵されていて、1.8Vがコア電圧として利用されます.

内部回路は下図のように、分かれています.

・VDDA 領域 アナログ回路

・VDD領域 デジタル回路

・1.8V領域 コア回路

・VBAT領域 リアルタイムクロック(RTC)とかバックアップレジスタ

VBAT領域は、スタンバイモードの時のレジスタバックアップとか、RTCを止めるわけにいかないという事情があるためです.

Reset

リセットには大きく3つの経路があります.

それぞれがさらに細かく分かれています.

1) system reset

・NRSTピンを0にしてresetする

・WWDGが発生させるreset

・IWDGが発生させるreset

・ソフトウエアreset

・Low-power magement が発生させるreset

→スタンバイモードに入ったとき

→ストップモードに入ったとき

2)power reset

・power-on

・power-down

・スタンバイモード

3)backup domain reset

backup領域だけをresetする機能があります.

・BDRSTレジスタでresetされる

・VDDがオンになったときにresetされる

・VBATがオンになったときにresetされる

注意:

NRSTピンは基本的に入力ピンなんだけど、STM32の内部からwired OR的にLOW信号が出力されることがあります.

CLOCK

clock源は HSI、HSE、PLL、LSI、LSE の5つ.

下図がSTM32F100RBのclock system図です.

下図によれば、様々なSWを通って各々の周辺回路へとclockが分配されるので、その都度この図を参照して理解する必要があります.

重要と思われるclockは、

●to Coretex System timerと書かれたclockは、SysTic割り込みのソースとなります

●RTCCLKは、RTCのclockです

メモリマップ概要

BOOT

BOOTモードを選択できる.外部ピンBOOT1/BOOT0がそれ.

x0: Flashの先頭から実行

01: System memoryの先頭から実行 →UARTからFLASHを焼くのにつかう

11: SRAMの先頭から実行

GPIO

GPIOポートは、次のどれかに設定できます.

● Input floating

● Input pull-up

● Input-pull-down

● Analog

● Output open-drain

● Output push-pull

ペリフェラル機能とGPIOは二者択一の関係にあるので、ペリフェラル機能を使うならGPIOとしては使えなくなる.

そこで、融通性を高めるために、ペリフェラル機能のポート割り当てを変更する機能(リマッピング)がある.

二者択一か、三者択一ぐらいの融通が利くようになっている.

割り込みベクタ

優先順位は、変更できます.

DMA

おおまかにはつぎのような設定でDMAを起動する.

1)ペリフェラルのアドレスをセット

2)メモリアドレスをセット (最大で65535個)

3)データ個数をセット

4)優先度をセット

5)転送方向、モード、割り込みをセット

6)enableする

Circular mode : ADCのscan modeのように連続してデータが発生するときにつかう

Memory-to-memory mode :

DMA1とDMA2に次のように割り当てられていて、channel1が高優先度.

bit assignがよくわからない.

ADC

12bit ADC

外部16ch入力切替

内部温度センサ ADIN16

内部電圧監視 ADIN17

一発変換/連続変換

ADCLK<12MHz

14clocks/変換

最速1.17uSec変換 = 854ks/Sec

analog watch dog機能あり

DAC

12bit または 8bit

2ヶ

自動ノイズ発生機能

自動三角波発生機能

TIM1

16bit up/down counter

input capture mode

output compare mode

PWM

complementary PWM with dead-time

one shot moed

encoder interface mode