ホーム
わたしは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現在)(英語)
電源電圧は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でどんなフリーのライブラリがあるの?
こちらのページが参考になりました.
STM32F1xxでフリーを前提として抜き出すと、DSPアルゴリズムライブラリ、RTOS、FATFS、USB など.
上位のSTM32F105のような上位CPUだと MP3、TCP/IP、ZigBee なども使えるようになるらしい.
内蔵peripheral より詳細はこちら(pdf)
電源系統
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