手工打造基于MM32F5微控制器的MicroPython开发板
时间:2022-11-27 00:00:00
基于手工制作MM32F5微控制器的MicroPython开发板
苏勇,2022-07-21
文章目录
- 基于手工制作MM32F5微控制器的MicroPython开发板
-
- 引言
- MM32F5微控制器简介
- 制作MicroPython开发板
- 获取并下载MicroPython从固件到开发板
-
- 获取预编译的可执行文件
- 开源完整项目代码仓库
- 下载可执行文件MM32微控制器
- 运行在单片机上Python小程序
-
- 使用基于UART串口终端的REPL
- 利用图形开发环境Thonny IDE
- 将Python程序保存在文件系统中上电自启
- 总结
引言
为MicroPython启用LittleFS文件系统的想法在我脑海里酝酿了半年多。随着MindSDK中QSPI以驱动的改进为基础flash存储芯片的sfud组件和LittleFS组件的成功集成(感谢同事Hao优秀的工作),让我在MM32F运行在5微控制上MicroPython在项目中,使用flash存储芯片的LittleFS基于文件系统替换文件系统SD卡的FatFS文件系统。编码两天一夜的编码调试,终于完成了!
在早期的MicroPython在项目中使用SD卡,本身也是一个独立的小部件,容易丢失或损坏,由于物理连接问题,有接触不良的风险,除了购买开发板SD卡也需要一定的经济费用。使用开发板上集成的flash替换存储芯片SD卡式存储设备可以大大降低整个存储设备MicroPython开发板成本高,维护方便。至于用户体验,脚本文件是否存储在SD卡还是flash在芯片上,开发板可以正常运行Python脚本,可以适应Thonny IDE,用户不会感到一丝不快。借用星爷的一句话:一个字,绝!”
本文将讲述如何自己制作MM32F5微控制的最小系统板,并获得配套的预编译MicroPython使用图形界面开发环境的固件Thonny IDE在MM32F使用5微控制器Python开发的基本用法。MicroPython基于微控制器的开发者自己制作开发板。
MM32F5微控制器简介
MM32F5270 安谋科技是上海第一款智能微电子产品 Arm China STAR-MC1 内核的 MCU 产品,也是MM32F5系列第一款产品的工作频率可达 120MHz,内置256KB Flash 和 192KB RAM,配置浮点操作单元(Floating Point Unit, FPU)、数字信号处理单元(Digital Signal Processing,DSP)、互联矩阵之间的信号 MindSwitch、逻辑单元可以配置 CLU、三角函数加速单元 CORDIC等算法加速单元集成了丰富的外设模块和足够的外设模块 I/O 端口。MM32F5270 与聪明的原始产品相比,它全面提高了性能、存储容量、总线架构和外部配置,旨在覆盖更广泛的工业、汽车和 IoT 应用。
制作MicroPython开发板
基于MM32F5270微控制器可以运行MicroPython除以MM32F只要外接一个以5270微控制为核心的最小系统SPI接口的flash存储芯片(如复旦微)FM25Q128)。当然,如果可以添加一个,USB开发者的使用体验将显著提升转串口的电路。我手头有一块内部使用的小板子,个要求。如图2所示。如果开发者愿意自己设计MM32F5270最小系统板,也很容易。
预编译固件采用特定的引脚支持REPL通信的UART,和连接flash存储芯片的QSPI。不愿重写代码编译MicroPython自制电路板时,固件开发者必须使用相同的引脚。事实上,这里的限制并不是很。对于使用144引脚的芯片,只绑定两个UART引脚和6个QSPI引脚不是一件麻烦的事情,而是编译MicroPython的环境并改写源码重新编译固件,则将会是一个比较繁琐并且需要一定调试能力去解决各种琐碎麻烦的过程。可见表1。
PS:甚至外扩的flash是否有必要存储芯片!如果您不打算在芯片上电后自动操作,请自行编写Python仅基于程序文件使用程序文件UART的REPL同MicroPython如果内核交互,则使用flash存储芯片作为存储介质的文件系统也可以简化。
MCU引脚 | 绑定功能 | 备注 |
---|---|---|
PB6 | UART1_TX | 必需 |
PB7 | UART1_RX | 必需 |
PA6 | QSPI1_CS | 可选 |
PG7 | QSPI1_SCK | 可选 |
PG6 | QSPI1_D0 | 可选 |
PA3 | QSPI1_D1 | 可选 |
PB3 | QSPI1_D2 | 可选 |
PG8 | QSPI1_D3 | 可选 |
MM32F5270电路板通过UART外接USB串口芯片部分的原理图。如图3所示。
MM32F5270电路板通过QSPI外接flash存储芯片部分的原理图。如图4所示。
我手里的另一块MM32F5270微控制器开发板,PLUS-F5270开发板集成在板上W25Q64的flash存储芯片和USB转串口电路也能满足运行要求MicroPython的条件。PLUS-F5270开发板是成都逐飞科技有限公司270开发板MM32F5270微控制器的开发板也是灵活的官方软件MindSDK支持开发板。这块开发板已经对外出售,开发者可以在市面上买到。PLUS-F5270开发板外观如图5所示。
获取并下载MicroPython从固件到开发板
为了获取MicroPython可能需要预编译估价或源代码CSDN或者gitee登录到网站上下载相应的文件。
获取预编译的可执行文件
本例使用MM32F5270最小系统板:12MHz串口波特率为115200。
https://download.csdn.net/download/suyong_yq/86246621
PLUS-F5270开发板:12MHz串口波特率为115200。QSPI1_CS引脚绑定到PB10引脚,其他引脚与本例相同。
https://download.csdn.net/download/suyong_yq/86246723
开源完整项目代码仓库
包含对MM32F5270微控制器支持MicroPython项目代码仓库:
git@gitee.com:suyong_yq/micropython-su.git
下载可执行文件MM32微控制器
可以使用DAPLink或者JLink作为调试器,使用Keil或者Segger Ozone作为PC端软件。
《使用DAP-Link单独下载可执行文件到MM32F5微控制器》一文中介绍了使用Keil和Ozone作为PC端软件配合DAPLink调试器下载独立的可执行文件到MM32微控制器上,同样的方法也适用于使用JLink调试器的情况。
https://blog.csdn.net/suyong_yq/article/details/125041701/
但若是使用JLink调试器,必须使用JLink v9以后的版本,之前市面上流行的老款JLink v8(俗称“黑砖头”)已经不支持Arm Cortex-M33,以及MM32F5微控制器所使用的ArmChina STAR-MC1内核。
在单片机上运行Python小程序
MM32F5270最小系统板上设计了一个可编程的LED灯,对应主控芯片的PC8
引脚。接下来以编写Python程序控制这个LED灯为例,展示在电路板上运行MicroPython的玩法。
MM32F5270电路板上有通过QSPI外接flash存储芯片部分的原理图。如图6所示。
使用基于UART串口终端的REPL
将MM32F5270微控制器上的串口通过USB转串口电路同电脑相连,启动串口终端软件Tera Term,在终端界面中通过串口输入Python脚本。如图7所示。
使用图形开发环境Thonny IDE
Thonny是由爱沙尼亚的Tartu大学开发,非常适合初学者和教学的一款轻量级IDE,提供可视化的编程界面,并可逐句调试运行Python程序。可从官网上下载适配多操作系统平台的安装包(https://thonny.org/)。如图8所示。
启用图形开发环境Thonny IDE中,指定串口同MM32F5270电路板相连,然后在代码编辑区中输入Python程序,或从电脑上导入预先写好的Python程序文件。然后通过Thonny IDE运行脚本,在Thonny内置的串口终端界面中可以产生输出。Thonny内置的串口终端界面也可以像REPL一样,直接输入Python语句立即执行。如图9所示。
将Python程序保存在文件系统中上电自启
如果希望编写的Python程序能在开发板上电复位后自动运行,可以将Python脚本文件保存在MicroPython挂载的文件系统中。之后,通过电路板的硬件复位或者MicroPython的软件复位,都可以激活已经存入文件系统中的脚本运行。如图10所示。
总结
作者将早期开发MicroPython项目中的文件系统从SD卡迁移到开发板的flash存储器上,在完全不影响用户使用体验的情况下,简化了电路系统,降低了整个MicroPython电路系统的成本,提高了系统的可靠性。
当然,如果进一步考虑,还可以将文件系统从片外flash迁入片内flash,利用未使用的flash存储空间做文件系统,可以继续降低成本。但是,使用片内文件系统也要面临一些麻烦:
- 程序的可移植性变差了,每个不同的微控制器芯片可能使用不同的片内flash,对应的操作方式不同。
- 需要足够大的片内flash,并不是每款微控制器芯片都有很大的片内flash。
- 单位空间的片内flash比片外flash贵。
- 操作片内flash比操作片外flash麻烦,可能需要将存放在片内flash上操作flash的函数搬运到RAM中才能正常工作。
END