• 手工打造基于MM32F5微控制器的MicroPython开发板


    手工打造基于MM32F5微控制器的MicroPython开发板

    苏勇,2022-07-21

    引言

    为MicroPython启用LittleFS文件系统的想法在我的脑袋里已经酝酿了大半年。随着MindSDK中QSPI驱动的完善,以及基于flash存储芯片的sfud组件和LittleFS组件的成功集成(感谢同事Hao的出色工作),使我得以在MM32F5微控制上运行的MicroPython项目中,使用基于flash存储芯片的LittleFS文件系统,替换掉基于SD卡的FatFS文件系统。经过刚刚过去两天一夜的编码和调试,终于大功告成!

    在早期的MicroPython项目中使用的SD卡,本身也是一个独立的小零件,很容易丢失或者损坏,并且因为物理连接件的问题,有接触不良的风险,另外在开发板之外再购买SD卡也需要一定经济花销。使用开发板上集成的flash存储芯片取代SD卡存储设备,可以大大降低整个MicroPython开发板的成本,并且易于维护。至于用户体验,无论脚本文件存放在SD卡还是flash芯片上,开发板都能正常运行Python脚本,并且能够适配Thonny IDE,用户不会感到一丝丝的不快。借用星爷的一句话:“一个字,绝!”

    在本文中,将讲述如何自己动手制作基于MM32F5微控制的最小系统板,并获取与之配套的预先编译好的MicroPython固件,以及使用图形界面开发环境Thonny IDE在MM32F5微控制器上使用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 应用。

    在这里插入图片描述

    图1 MM32F5270系列微控制器选型

    制作MicroPython开发板

    基于MM32F5270微控制器,搭建一个可以运行MicroPython的最小系统,除了以MM32F5270微控制为核心的最小系统外,只要外接一个SPI接口的flash存储芯片即可(例如复旦微的FM25Q128)。当然,如果能附加一个USB转串口的电路,将会显著提升开发者的使用体验。我手头上有一块内部使用的小板子,刚好满足这样的要求。如图2所示。如果有开发者愿意自己设计MM32F5270的最小系统板,也是非常容易的。
    在这里插入图片描述

    图2 MM32F5270电路板

    预编译的固件使用了特定的引脚,用于支持REPL通信的UART,和连接flash存储芯片的QSPI。对于不愿意重新改写代码编译MicroPython固件的开发者们,在自行制作电路板时,必须要使用同样的引脚。实际上,这里的限制并不是很苛刻,对于使用了144引脚的芯片来说,仅绑定2个UART引脚和6个QSPI引脚并不是一件麻烦的事情,而搭建编译MicroPython的环境并改写源码重新编译固件,则将会是一个比较繁琐并且需要一定调试能力去解决各种琐碎麻烦的过程。关于绑定引脚的清单,可见表1。

    PS:甚至外扩的flash存储芯片都是不是必须的!如果你不打算让芯片上电之后自动运行一个自行编写Python程序文件,仅使用基于UART的REPL同MicroPython内核进行交互的话,那么使用flash存储芯片作为存储介质的文件系统也可以精简掉。

    表1 MicroPython绑定MM32F5270最小系统板的引脚
    MCU引脚绑定功能备注
    PB6UART1_TX必需
    PB7UART1_RX必需
    PA6QSPI1_CS可选
    PG7QSPI1_SCK可选
    PG6QSPI1_D0可选
    PA3QSPI1_D1可选
    PB3QSPI1_D2可选
    PG8QSPI1_D3可选

    MM32F5270电路板上有通过UART外接USB转串口芯片部分的原理图。如图3所示。
    在这里插入图片描述

    图3 MM32F5270电路板的UART电路

    MM32F5270电路板上有通过QSPI外接flash存储芯片部分的原理图。如图4所示。
    在这里插入图片描述

    图4 MM32F5270电路板的QSPI电路

    我手上的另一块MM32F5270微控制器的开发板,PLUS-F5270开发板,板子上集成了一颗W25Q64的flash存储芯片和USB转串口电路,也能满足运行MicroPython的条件。PLUS-F5270开发板是成都逐飞科技有限公司设计生产的一款基于MM32F5270微控制器的开发板,这也是灵动官方软件MindSDK支持的开发板。这块开发板已经对外出售,开发者可以在市面上买到。PLUS-F5270开发板的外观如图5所示。

    在这里插入图片描述

    图5 PLUS-F5270开发板

    获取并下载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所示。

    在这里插入图片描述

    图6 MM32F5270电路板的LED电路

    使用基于UART串口终端的REPL

    将MM32F5270微控制器上的串口通过USB转串口电路同电脑相连,启动串口终端软件Tera Term,在终端界面中通过串口输入Python脚本。如图7所示。
    在这里插入图片描述

    图7 通过REPL编写MicroPython程序

    使用图形开发环境Thonny IDE

    Thonny是由爱沙尼亚的Tartu大学开发,非常适合初学者和教学的一款轻量级IDE,提供可视化的编程界面,并可逐句调试运行Python程序。可从官网上下载适配多操作系统平台的安装包(https://thonny.org/)。如图8所示。

    在这里插入图片描述

    图8 Thonny概览

    启用图形开发环境Thonny IDE中,指定串口同MM32F5270电路板相连,然后在代码编辑区中输入Python程序,或从电脑上导入预先写好的Python程序文件。然后通过Thonny IDE运行脚本,在Thonny内置的串口终端界面中可以产生输出。Thonny内置的串口终端界面也可以像REPL一样,直接输入Python语句立即执行。如图9所示。
    在这里插入图片描述

    图9 在Thonny中运行Python程序

    将Python程序保存在文件系统中上电自启

    如果希望编写的Python程序能在开发板上电复位后自动运行,可以将Python脚本文件保存在MicroPython挂载的文件系统中。之后,通过电路板的硬件复位或者MicroPython的软件复位,都可以激活已经存入文件系统中的脚本运行。如图10所示。

    在这里插入图片描述

    图10 保存程序文件到文件系统中

    总结

    作者将早期开发MicroPython项目中的文件系统从SD卡迁移到开发板的flash存储器上,在完全不影响用户使用体验的情况下,简化了电路系统,降低了整个MicroPython电路系统的成本,提高了系统的可靠性。

    当然,如果进一步考虑,还可以将文件系统从片外flash迁入片内flash,利用未使用的flash存储空间做文件系统,可以继续降低成本。但是,使用片内文件系统也要面临一些麻烦:

    • 程序的可移植性变差了,每个不同的微控制器芯片可能使用不同的片内flash,对应的操作方式不同。
    • 需要足够大的片内flash,并不是每款微控制器芯片都有很大的片内flash。
    • 单位空间的片内flash比片外flash贵。
    • 操作片内flash比操作片外flash麻烦,可能需要将存放在片内flash上操作flash的函数搬运到RAM中才能正常工作。

    END

  • 相关阅读:
    数据分析实战应用案例精讲-【概念篇】物流行业数据分析(附Python和Java实现代码)
    JAVA设计模式-适配器模式
    leetcode:21. 合并两个有序链表
    第15章_锁: (表级锁、页级锁、行锁、悲观锁、乐观锁、全局锁、死锁)
    从书本《皮囊》摘录的几个句子
    从Hadder看蛋白质分子中的加氢算法
    如何做好界面设计,分享这8个优秀的案例
    QUIC协议详解
    分享demo:Vue3 使用element plus + vue-i18实现国际化
    云中网络的隔离:GRE、VXLAN
  • 原文地址:https://blog.csdn.net/suyong_yq/article/details/125905933