STM32上的Circuitpython

该端口将 ST Microelectronics STM32 系列 MCU 引入 Circuitpython。STM32 芯片具有广泛的功能,从低于 1 美元的低功耗 STM32F0 到以 400+ MHz 运行的双核 STM32H7。目前,仅支持 F4、F7 和 H7 系列,由 ARM Cortex M4 和 M7 处理器提供支持。

有关按系列和单个芯片系列分类的功能的更多信息,请参阅 ST Microelectronics 网站: st.com/en/microcontrollers-microprocessors/stm32-high-performance-mcus.html

STM32 SoC 在时钟速度、外设功能、引脚分配及其在此端口中的支持方面因产品而异。有关按系列排序的已启用模块的完整列表,请参阅mpconfigport.mk

该端口的组织方式:

  • boards/ /包含端口上可用的每个开发板和分支的配置文件,以及系统文件以及共享和 SoC 特定的链接器文件。电路板配置包括电路板的引脚映射、振荡器信息、特定于电路板的构建标志以及适用的 OLED 或 TFT 屏幕设置。

  • common-hal/ 包含特定于端口的模块实现,由共享模块和共享绑定使用。

  • packages/ 包含特定于包的引脚绑定(LQFP100、BGA216 等)

  • 外设/包含外设设置文件和外设映射信息,按系列和子变体排序。此目录中的大多数文件都可以使用tools/ 中的 python 脚本生成。

  • 用于通过 CubeMX 生成的 ST HAL 和 LL 文件的st-driver/子模块。与 TinyUSB 共享。

  • supervisor//包含内部闪存、串行和 USB 的特定于端口的实现,以及port.c文件,它在启动时初始化端口。

  • 工具/ python 脚本,用于在外设/和板/中生成外设和引脚映射文件。

在根级别,请参阅mpconfigboard.h和mpconfigport.mk以获取特定于端口的设置和已启用模块的列表。

构建说明

按照 Adafruit 网站上的指南,确保您的 Circuitpython 克隆已准备好构建。这包括安装工具链、同步子模块和运行mpy-cross.

一次性构建任务完成后,您可以随时通过导航到端口目录进行构建:

$ cd ports/stm

要为特定的电路板构建,请运行:

$ make BOARD=feather_stm32f405_express

您还可以使用 makefile 中可用的某些标志进行构建,具体取决于您的电路板和开发目标。以下标志将为预闪存的 UF2 引导加载程序启用调试信息和正确的闪存位置:

$ make BOARD=feather_stm32f405_express DEBUG=1 UF2_BOOTLOADER=1

USB连接

通过 USB 电缆将您选择的开发板连接到主机 PC。请注意,对于大多数 ST 开发板,例如 Nucleo 和 Discovery 系列,您必须使用辅助 OTG USB 连接器来访问 circuitpython,因为主要 USB 连接器将连接到内置 ST-Link 调试器而不是芯片本身。

在许多情况下,此 ST-Link USB 连接器仍需要连接到电源 才能打开芯片 - 请参阅您的特定产品手册了解详细信息。

刷入引导程序

大多数 ST 开发板都带有可通过 USB 访问的内置 STLink 编程和调试探针。该编程器可能会显示为MBED主机 PC 上的驱动器,通过 .bin 文件实现简单的拖放编程,或者他们可能需要像OpenOCDStLink-org/stlink这样的工具来运行刷新和调试命令。

许多业余爱好者和 3rd 方开发板也暴露了 SWD 引脚。这些可以与便宜的stlink调试器或其他普通程序员一起使用。

对于非 ST 产品或没有调试器的用户,高性能系列(F4、F7 和 H7)中的所有 STM32 板都包含一个存储在 ROM 中的内置 DFU 引导加载程序。当芯片复位时,通过确保 BOOT0 引脚保持为逻辑 1 并且 BOOT1 引脚保持为逻辑 0 来访问该引导加载程序(ST Appnote AN2606)。大多数芯片默认将 BOOT 保持为低电平,因此这通常可以通过将跳线从 3.3V 电源连接到 BOOT0 引脚(如果它暴露)或在芯片复位时翻转适当的开关或按钮来实现。一旦芯片在 DFU 模式下启动,BOOT0 不再需要保持高电平,可以释放。Feather STM32F405 指南中提供了一个示例。

Windows用户需要安装stm32cubeprog, 而Mac和Linux用户需要安装dfu-util带有或。Feather F405 guide中提供了更多详细信息。 brew install dfu-utilsudo apt-get install dfu-util

使用 DFU-Util 刷新 circuitpython 图像

按照上一节中的步骤确保电路板处于 dfu 模式。然后运行:

$ make BOARD=feather_stm32F405_express flash

或者,您可以导航到构建目录并运行原始dfu-util 命令:

dfu-util -a 0 --dfuse-address 0x08000000 -D firmware.bin

访问董事会

通过 USB 电缆将电路板连接到 PC 将允许将代码上传到CIRCUITPY卷。

Circuitpython 公开了一个用于 REPL 访问和调试的 CDC 虚拟串行连接。从 OSX 连接到它看起来像这样:

screen /dev/tty.usbmodem14111201 115200

你也可以使用像mu 这样的程序来协助 REPL 访问。