スキップしてメイン コンテンツに移動

投稿

11月, 2023の投稿を表示しています

F4VE BLACK / BLACK_F407VE ( STM32F407VET6 ) 用にmicropython v1.21.0 をコンパイル

STM32F407VET6が載ったボードでF4VE BLACK/BLACK_F407VEというのがあり、micropython 向けのportもあるのですが、そのままでは2023/11現在最新の v1.21.0 ではコンパイルできませんでした。しかし少し手を入れるとビルドできたので備忘録として挙げてみることにしました。 まず、portをcloneします。 mkdir -p ~/stm32/micropython cd ~/stm32/micropython git clone https://github.com/mcauser/BLACK_F407VE つづいてmicropythonをcloneしておきます。 git clone https://github.com/micropython/micropython.git -b v1.21.0 micropython-v1.21.0 cd micropython-v1.21.0 git submodule update --init cd mpy-cross make -j6 cd .. cp -a ../BLACK_F407VE ports/stm32/boards/ 次に、一部修正が必要なので編集します。 boards/BLACK_F407VE/mpconfigboard.mk 変更前 9 MICROPY_PY_USSL = 1 変更後 9 MICROPY_PY_SSL = 1 変更はここだけです。つづいてビルドしますが、v1.21.0をWSL2/Debian 12.1でビルドするとリンク時にエラーがでました。 ../../lib/mbedtls/library/ssl_tls.c:3328:5: error: 'mbedtls_sha512_finish_ret' accessing 64 bytes in a region of size 48 [-Werror=stringop-overflow=] なのでビルド時に、CFLAGを追加してmakeします。 cd ports/stm32 CFLAGS="-Wno-stringop-overflow" make DEBUG=0 LTO=1 BOARD=BLACK_F407VE CROSS_COMPILE

STM32F401CCU6 + MicroPython 2機 でI2C通信テストを行う

前回はSTM32F401CCU6にMicroPythonを載せ簡易動作させましたが、今回は同じボードを2枚用意して片方をMasterにもう一方をSlaveにしてI2C通信を行ってみました。 なお結線ですが、SCLがB6, SDAがB7、どちらも5vトレラントのピンなので、2kΩで5vにプルアップしています。 まず、マスターからスレーブにデータを転送する例です。 スレーブ側 from pyb import I2C SLAVE_ADDR = 0x40 BAUD = 100000 i2c_slave = I2C(1, I2C.SLAVE, addr=SLAVE_ADDR, baudrate=BAUD) この状態ではslaveはscanにも反応しないので以下のようにして待ち受けさせます。 while True: try: data = i2c_slave.recv(4) except OSError as exc: if exc.args[0] == 5: # 5 == EIO ( bus scan ) print("I2C bus scan detected") elif exc.args[0] == 110: # 110 == ETIMEOUT pass else: print(exc) except KeyboardInterrupt: break else: print("RECV: %r" % data) 続いてマスター側です。 from pyb import I2C SLAVE_ADDR = 0x40 BAUD = 100000 i2c_master = I2C(1, I2C.MASTER, baudrate=BAUD) i2c_master.scan() for i in range(63): i2c_master.send("%04i" % i, addr=SLAVE_ADDR) pyb.delay(100) 成功

STM32F401CCU6 + 64Mbit SPI Flash に micropython をWSL2/Debian12でコンパイルしインストール

表題の通りなのですが、STM32F401CCU6 に 64Mbit(8MByte) SPI FLASHを載せてmicropythonをWSL2(Debian12)でコンパイルしインストールしてみました。 sudo apt-get install git build-essential binutils-arm-none-eabi gcc-arm-none-eabi cd ~ mkdir stm32 cd stm32 git clone https://github.com/micropython/micropython.git -b v1.21.0 micropython-v1.21.0 cd micropython-v1.21.0 git submodule update --init cd mpy-cross make -j6 cd ../ports/stm32/boards git clone https://github.com/xreef/stm32f401cc_micropython_firmware cp -a stm32f401cc_micropython_firmware/WeAct_F401CC WeAct_F401CC cd .. # mpconfigboard.hをバックアップ cp -a boards/WeAct_F401CC/mpconfigboard.h boards/WeAct_F401CC/mpconfigboard.h.orig 以下をboards/WeAct_F401CC/WeAct_F401CC-mpconfigboard_h.patchとして保存します。 --- boards/WeAct_F401CC/mpconfigboard.h.orig 2023-11-15 06:20:45.685061505 +0900 +++ boards/WeAct_F401CC/mpconfigboard.h 2023-11-15 07:02:50.005053685 +0900 @@ -5,7 +5,7 @@ /* BOARD Ver 2.0 set 1 ,other set 0 like V1.3 V2.1+ */ #define VERSION_V20 (0) -#define USE