NUCLEO-F767ZIでWebサーバ

NUCLEO-F767ZIのEthernet端子はMicroPythonからは使えないので、テストのために付属のアプリケーションを動かしてみました。

以前ちょっとだけ使ってみたSTM32CubeMXと一緒に配布されているものです。

C:\Users\ユーザ名\STM32Cube\Repository\STM32Cube_FW_F7_V1.8.0\Projects\STM32F767ZI-Nucleo\Applications\LwIP\LwIP_HTTP_Server_Netconn_RTOS\SW4STM32

に入っています。(入っていない場合は、CubeMXのメニューのHelp→Install New Librariesから、最新の「Firmware Package for Family STM32F7」を選択してインストールします。)
これを、SW4STM32のImport…からGeneral→Existing Projects into Workspaceでワークスペースに追加してビルドします。

デフォルトではDHCPで動作しますので、動作しているIPアドレスのアタリをつける必要があります。

とりあえずEthernetが正常に動作していることは確認できました。

STM32F7-http-server.png

STM32CubeMXですが、このNUCLEO-F767ZIのように多機能なボードになってくると、初期設定を行うコードを自動生成してくれるのはそれなりに意味はあるかもしれません。
先日のRaspberry Piのベアメタルプログラミングでも、GPIOのモードを適切に設定するにはマニュアルを調べなければなりませんでしたが、そのへんがGUIで選択していくだけで済んでしまうのは、慣れると便利な気がします。

NUCLEO-F767ZIを購入

nucleo-f767zi-1.jpg

STM32のボードは以前購入したNUCLEO-F401REを使っていましたが、結構楽しめることが分かったので、上のランクのCortex-M7ベースのボードを買ってみました。
何種類かあるのですが、価格はどれも同じなので数字が一番大きいNUCLEO-F767ZIにしました。
CPUはF767ZI、クロックは216MHz、SRAMは512KB、フラッシュは2MBで、12bitのADCとDAC、4 I2C、4 UART、6 SPIとリソースも豊富です。

早速MicroPythonを入れてみました。
MicroPythonで動くベンチマークテスト的なものがフォーラムの以下のページにあったので

Benchmark comparison of MicroPython boards – MicroPython Forum

試してみたところ、こんな数値になりました。

Pystone(1.2) time for 500 passes = 152 ms
This machine benchmarks at 3289 pystones/second

上記のページにある他のボードは最速でも2212なので、5割増しのスピードです。
ちなみにESP32だと

Pystone(1.2) time for 500 passes = 850 ms
This machine benchmarks at 588 pystones/second

という結果でした。

Ethernetも搭載されているのですが、現時点ではMicroPythonでサポートされていないのが残念です。

nucleo-f767zi-2.jpg