|
setup diary |
マイコンとしては,AVRの90s2313から始めて, tiny2313, tiny261, tiny861, mega8といくつかのAVRを使った後,半田付けが面倒になってarduino UNOやnanoの互換機を主に使うようになった.arduinoだと,AVRの性能のすべてを引き出すのが難しいが,いろいろなlibraryがあるので,短く手軽に書けるのは良いことだと思う.また,LANと通信したいときには,wifiを簡単に使えるESP8266を使うようになった.
今後はどのマイコンを使っていこうかと考えていたのだが,stm32の人気が出てきたので,私も少し使ってみた.stm32は,安価であるにも関わらず,32bitでsramやflashも比較的大きく,今後もより発展していく可能性を持っている.
今回,STM32F103C8T6を搭載したBlue Pillと呼ばれるボードを使ってみた.このボードは安いのだが,R10のチップ抵抗に誤った抵抗値の部品が使われており,これを訂正する必要がある.本来は1.5kであるべきところに,10kが載っていたので,2.2kを並列に追加して,1.8kにしておいた.
arduino UNOとかarduino nanoは,USBをserialに変換してからマイコンに接続されている.一方,stm32は,直接USBと接続されており,そのままではUSBを認識しないので,まずはbootloaderをインストールする必要がある.
bootloaderは,https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/binariesからdownloadするが,今回のボードはLEDがPC13につながっているので,generic_boot20_pc13.binを選択する.また,書き込みするためのツールなどは,https://github.com/rogerclarkmelbourne/Arduino_STM32に含まれているので,一括でdownloadしておく. ここでは,手持ちのUSB-serialを使ってbootloaderをインストールすることにした.まず,ボード上のjumperを,上側を1,下側を0にする.そして,serialのGNDと3.3Vを接続し,RXDはA9と,TXDはA10と接続する.tools/linux/stm32flashにあるstm32flashを使って,
./stm32flash -w generic_boot20_pc13.bin -v /dev/ttyUSB0
として,書き込む.書き込み終わったら,jumperを両方共に0に戻しておく.それから,udevの設定をするために,tools/linuxの中のinstall.shを実行する.これで,PCからUSBを通して認識出来るようになった.
次にarduinoの設定だが,1.6.9以降を使って,board managerからarduino Dueを探して,インストールする.そして、hardwareの下にArduino_STM32 というフォルダを作って,先程downloadしたファイルをすべて置く.boardとしては,STM32F103C8を選べば良い.これで,arduinoからstm32が使えるようになるはずなのだが,resetがうまく働かないことが分かった.そこで,書き込む時には,3.3VとPC14を繋いでからresetしてperpetual bootloader modeしてから書き込むか,うまいタイミングでresetを押す必要がある.少し面倒だったが,stm32が使えるようになった.