0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

CHANBAEK 来源:安德鲁的设计笔记本 作者:安德鲁苏 2023-06-16 10:57 次阅读

引言

为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 应用。

图片

figure_mm32f5270_product_selection

图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引脚 | 绑定功能 | 备注 |

| --------- | ----------- | ------ |

| 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所示。

图片

figure-cubic-f5270-uart-sch

图3 MM32F5270电路板的UART电路MM32F5270电路板上有通过QSPI外接flash存储芯片部分的原理图。如图4所示。

图片

figure-cubic-f5270-qspi-sch

图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调试器的情况。

但若是使用JLink调试器,必须使用JLink v9以后的版本,之前市面上流行的老款JLink v8(俗称“黑砖头”)已经不支持Arm Cortex-M33,以及MM32F5微控制器所使用的ArmChina STAR-MC1内核。

单片机上运行Python小程序

MM32F5270最小系统板上设计了一个可编程LED灯,对应主控芯片的PC8引脚。接下来以编写Python程序控制这个LED灯为例,展示在电路板上运行MicroPython的玩法。

MM32F5270电路板上有通过QSPI外接flash存储芯片部分的原理图。如图6所示。

图片

figure-cubic-f5270-led-sch

图6 MM32F5270电路板的LED电路### 使用基于UART串口终端的REPL

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

图片图片

图7 通过REPL编写MicroPython程序### 使用图形开发环境Thonny IDE

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

图片

figure-thonny-overview

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

图片

demo-micropython-thonny

图9 在Thonny中运行Python程序### 将Python程序保存在文件系统中上电自启

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

图片

demo-micropython-thonny-2

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

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

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

  • 程序的可移植性变差了,每个不同的微控制器芯片可能使用不同的片内flash,对应的操作方式不同。
  • 需要足够大的片内flash,并不是每款微控制器芯片都有很大的片内flash。
  • 单位空间的片内flash比片外flash贵。
  • 操作片内flash比操作片外flash麻烦,可能需要将存放在片内flash上操作flash的函数搬运到RAM中才能正常工作。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6812

    浏览量

    147660
  • 文件系统
    +关注

    关注

    0

    文章

    273

    浏览量

    19681
  • 开发板
    +关注

    关注

    25

    文章

    4437

    浏览量

    94084
  • Micropython
    +关注

    关注

    0

    文章

    68

    浏览量

    4584
  • MM32F5
    +关注

    关注

    0

    文章

    12

    浏览量

    513
收藏 人收藏

    评论

    相关推荐

    基于MM32F5微控制器的FSMC接口外接SRAM存储器的用法

    MM32F5微控制器基于Arm STAR-MC1微控制器,最高主频可达120MHz,集成了FPU单元和DSP扩展指令集,有不错的算力。
    发表于 07-17 15:08 830次阅读
    基于<b class='flag-5'>MM32F5</b><b class='flag-5'>微控制器</b>的FSMC接口外接SRAM存储器的用法

    MicroPython:STM32上的Python开发

    运行在微控制器上。使用常规的Python 3.0,你可以毫不费力地运行你的下一个DIY项目。 TPYBoard开发板相比于其他微控制器板子的优势在哪? 相比于目前非常火爆的Arduino
    发表于 12-30 16:00

    玩转MicroPython开发板!你和Ta会有什么火花?

    开发板,你和它会有什么火花?TPYBoardv102  TPYBoardv102是一款典型的MicroPython开发板,搭载STM32F405芯片,支持DFU和SWD两种调试方式,现
    发表于 06-03 10:50

    MicroPython入门|开发板种类那么多,哪块才适合你玩?

    MicroPython开发板  TPYBoard是一款MicroPython开发板,它是Python语言的一种精益和快速的实现,将Python经过优化运行在
    发表于 06-20 18:13

    Python玩转硬件:TPYBoard-Micropython开发板大盘点

    MicroPython,其脱胎于Python,基于ANSIC(C语言标准),然后在语法上又遵循了Python的规范,主要是为了能在嵌入式硬件上(这里特指微控制器级别)更易于的实现对底层的操作。  可应用于教学更
    发表于 08-05 15:21

    MicroPython入门:能跑MicroPython开发板大盘点!

    MicroPython开发板 TPYBoard是一款MicroPython开发板,它是Python语言的一种精益和快速的实现,将Python经过优化运行在
    发表于 07-06 14:43

    MicroPython支持的一些常见开发板

    Python是Python 3编程语言的一个简洁和快速实现,专门优化运行于一个微控制器上。它基于ANSIC,语法跟Pyton 3基本一致,拥有自家的解析、编译、虚拟机和类库等,下面是Mi
    发表于 08-05 07:30

    MicroPython开发板—TPYBoard开发板测评分享!

    的 LED 保持长亮。 至此编写和运行第一个 MicroPython 程序就完成了,加油!那么TPYBoard开发板和传统的微控制器相比怎么样?正如它的创造者所说的:和Arduino
    发表于 08-14 00:18

    微控制器开发板Raspberry Pi Pico

    树莓派基金会最新发布一款低成本、高性能的微控制器开发板Raspberry Pi Pico,新产品相比普通树莓派体积更小
    发表于 10-29 07:33

    MM32F522E芯片的Plus-F5270开发板怎么玩?

    盒子,里面一共有5件东西:1、 Plus-F5270开发板2、 创芯工坊PWLINK2(DAP)3、 母对母杜邦线12根4、 USB Type-C数据线5
    发表于 08-16 15:35

    MM32F5270开发板之基本开发环境搭建

    本文是对《带MM32F5芯片的Plus-F5270开发板怎么玩?》的补充:原文中已经对拿到板子需要做的工作进行了较为详细的描述,但是对一些重要步骤的描述过于简略,导致编译下载过程出现一些问题。首先
    发表于 08-16 15:37

    基于MM32F5270开发板获取雨滴传感的数据相关资料介绍

    1、基于MindSDK对接雨滴传感我们还是来介绍一下开发板的相关参数。灵动MM32F5270开发板是搭载安谋科技“星辰”STAR-MC1处理
    发表于 08-24 15:20

    【BPI-Pico-RP2040 开发板】+MicroPython初体验

    为了突破Python不能再单片机上运行的限制,他花费了六个月的时间来打造Micro Python。是跑在MCU(微控制器)上的Python,通过内置的解释执行py文件或者py命令,就可以让
    发表于 03-18 18:42

    如何设计微控制器开发板

     您可以在接口上添加芯片使用您选择的微控制器来增强您的开发板为其用户提供的可用性或功能。
    的头像 发表于 08-29 11:04 3505次阅读
    如何设计<b class='flag-5'>微控制器</b><b class='flag-5'>开发板</b>

    MicroPython应用基础-准备基于MM32F5MicroPython开发板

    本文主要面向 **2023年全国大学生物联网设计竞赛安谋科技命题** ,使用星辰处理器的灵动MM32F5微控制器开发板,基于MicroPython
    的头像 发表于 10-19 18:27 407次阅读
    <b class='flag-5'>MicroPython</b>应用基础-准备基于<b class='flag-5'>MM32F5</b>的<b class='flag-5'>MicroPython</b><b class='flag-5'>开发板</b>