让TB的STM32F446RET6开发板支持micropython
起因
因为micropython官方有对NUCLEO_F446RE开发板进行支持,故在淘宝找了一家有卖STM32F446RET6开发板的商家。
故所有的修改都是在NUCLEO_F446RE这个配置上进行,需要修改> mpconfigboard.h的配置
UART
NUCLEO_F446RE这个开发板预留的是uart2这个串口,但是我买的开发板预留的是uart1串口,所以需要修改uart和repl部分配置
#define MICROPY_HW_UART1_TX (pin_A9) // Arduino D10, pin 17 on CN10
#define MICROPY_HW_UART1_RX (pin_A10) // pin 21 on CN7
#define MICROPY_HW_UART_REPL PYB_UART_1
#define MICROPY_HW_UART_REPL_BAUD 115200
这样修改之后,micropython的repl就从uart2转移到uart1,并且uart1的tx和rx修改为A9和A10端口
SPI_FLASH
该部分参考了 https://github.com/micropython/micropython/issues/4586
需要参考同样实现了SPI_FLASH功能的STM32L476DISC开发板
需要把STM32L476DISC开发板的> mpconfigboard.h配置中的SPI部分拷贝到F446RE中去,并且修改SPI port
// use external SPI flash for storage
#define MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE (0)
#define MICROPY_HW_SPIFLASH_SIZE_BITS (64 * 1024 * 1024)
#define MICROPY_HW_SPIFLASH_CS (pin_B12)
#define MICROPY_HW_SPIFLASH_SCK (pin_B13)
#define MICROPY_HW_SPIFLASH_MISO (pin_B14)
#define MICROPY_HW_SPIFLASH_MOSI (pin_B15)
// block device config for SPI flash
extern const struct _mp_spiflash_config_t spiflash_config;
extern struct _spi_bdev_t spi_bdev;
#define MICROPY_HW_SPIFLASH_ENABLE_CACHE (1)
#define MICROPY_HW_BDEV_SPIFLASH (&spi_bdev)
#define MICROPY_HW_BDEV_SPIFLASH_CONFIG (&spiflash_config)
#define MICROPY_HW_BDEV_SPIFLASH_SIZE_BYTES (MICROPY_HW_SPIFLASH_SIZE_BITS / 8)
然后还需要从STM32L476DISC开发板配置中复制bdev.c到F446RE配置中,然后再次编译
USB支持
需要在> mpconfigboard.h中添加配置
// USB config
#define MICROPY_HW_ENABLE_USB (1)
#define MICROPY_HW_USB_FS (1)
关于stm32中用repl上传文件错误的问题
阅读了一些git上的issue发现这问题已经有人提出,但是解决方案暂时没有被merge到主分支
https://github.com/micropython/micropython/issues/8386
https://github.com/micropython/micropython/pull/9054
andrewleech这位兄弟有fork了一份代码并提供了一个解决了问题的stm32-uart-isr-ram分支(没测试过)
https://github.com/andrewleech/micropython/tree/stm32-uart-isr-ram
我这里目前的解决方案就是启用开发板的usb msc,进行代码传输,如果代码最终定形,则直接freeze代码使用。

浙公网安备 33010602011771号