2019年03月01日

タイマーカウンタのセットアップ

CubeMXは、このようにタイマーカウンタをセットアップするためのコードを吐き出してくれる。

WS001732.JPG

Arduinoで記述していたこの部分のコードがそれに相当する。

WS001559.JPG

データブックを引かなくてもさっさとコードを吐き出してくれるのはとても便利だ。

WS001727.JPG

WS001728.JPG

WS001729.JPG

WS001726.JPG

WS001730.JPG

WS001731.JPG



posted by Yasuski at 13:49| AudioElectronics

STM32F407ZET6ボード

去年の年末辺りからTeensyへのオルタナティヴとなりそうなボードを探っていたのだが、高性能なSpresenseは敷居が高すぎるうえに今のところ開発に必要なデータが揃わない。

そこで、まずは手軽に試せそうな STM32F407ZET6 を搭載したボードをArduinoに対応させてみた。

IMG_8942.JPG

単価は1.3k程と激安だが、オーバークロックさせない素の状態では168MHzと処理能力はシステムクロックを最高速に設定したTeensy3.6の2/3位になるだろうか。 Spresenseとは違って、出せるpinを全て引き出している構成がとても好ましい。

Brand: Unbranded/Generic
Markings: STM32F4XX STM32_F4XX V3.0 1606

Specs:
STM32F407ZET6 ARM Cortex M4
168MHz, 210 DMIPS / 1.25 DMIPS / MHz
1.8V - 3.6V operating voltage
8MHz system crystal
32.768KHz RTC crystal
2.54mm pitch pins
JTAG/SWD header
512KByte Flash, 192 + 4 KByte SRAM
3x SPI, 3x USART, 2x UART, 2x I2S, 3x I2C
1x FSMC, 1x SDIO, 2x CAN
1x USB 2.0 FS / HS controller (with dedicated DMA)
1x USB HS ULPI (for external USB HS PHY)
Micro SD
Winbond W25Q16 16Mbit SPI Flash
RTC battery CR1220
1MB SRAM footprint, unpopulated (IS62WV51216-1M)
1x 10/100 Ethernet MAC
1x 8 to 12-bit Parallel Camera interface
3x ADC (12-bit / 16-channel)
2x DAC (12-bit)
12x general timers, 2x advanced timers
AMS1117-3.3V: 3.3V LDO voltage regulator, max current 800mA
Micro USB for power and comms
Yellow user LED D1 (PF9) active low
Yellow user LED D2 (PF10) active low
Yellow power LED D3
2x jumpers for bootloader selection
Reset button, Wakeup button, 2x user buttons K0 (PE4) and K1 (PE3)
2x30 side pins + 2x16 bottom pins + 1x4 ISP pins
2x16 FMSC LCD Interface
NRF24L01 socket
M3 mounting holes
Dimensions: 95.1mm x 74.6mm

ボード側のピン接続はこうなる。

<-----+
|_1 _2| Pin 1 = 3v3
|_3 _4| Pin 4 = GND
|_5 _6|
|_7 _8| Pin 7 = SWDIO
|_9 10| Pin 9 = SWCLK
|11 12|
|13 14|
|15 16|
|17 18|
|19 20|
<-----+

当初はボードが認識されずにあれこれ試行錯誤を行っていたが、単に配線が外れているだけだったという何時ものマヌケぶりを発揮してしまった。

凡ミスを防ぐために、書き込みケーブルには専用のコネクタ付きのものを購入したほうが良さそうだ。

今回は、Arduino IDEからBlinkLEDを書き込んで、ポートアサインの確認を行った。 

WS001723.JPG

Pinナンバーは数字単体ではなく、回路図にあるようにPF9と記述すれば良いようだ。 コンパイルには結構な時間が掛かっている。 単なるBlinkに数分掛かるようではこの先が思いやられてしまう。

WS001724.JPG

ボードへのデータの書き込みはST-Linkを介して行うことになる。 ST-Linkはファームウエアやドライバのアップデートを確認出来るUtilityを併用すると便利だ。

WS001721.JPG

何れは使用するであろう直アサインの記述は、MCUのアプリケーションデータで確認する必要がある。

STM32F4シリーズは、カウンタの構造などチップの構成がTeensyで使い慣れたFreeScaleのMCUとは大幅に異なるので、これからデータブックを読み込んでいかなければならないが、もしかするとST製のM3を搭載した Due に近い命令体型なのかもしれない。

追記:

KeilにExampleコードを引っ張ってきて検討しているところだが、Timerの構成はFreescaleのものと比べて複雑な印象がある。 あまりに項目が多くて選択肢がつかめないので、予め必要とされる機能を選択した使用例を探した方が早道だろう。

WS001725.JPG

基本的にはリングカウンターの瞬間値を入力PINのアップエッジでキャプチャー出来れば良いだけなのだが、入力信号の分周まで出来てしまうのが便利なのかどうか? 構造をよく理解していない現時点では何とも言えないがが、もしかするとコード側にも根本的な構造の改変が必要になるかもしれない。
posted by Yasuski at 06:22| Arduino