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

    文章

    7547

    浏览量

    151326
  • 文件系统
    +关注

    关注

    0

    文章

    284

    浏览量

    19904
  • 开发板
    +关注

    关注

    25

    文章

    5035

    浏览量

    97384
  • Micropython
    +关注

    关注

    0

    文章

    68

    浏览量

    4731
  • MM32F5
    +关注

    关注

    0

    文章

    12

    浏览量

    531
收藏 人收藏

    评论

    相关推荐

    ARM系列微控制器:GD32 Colibri-F150R8开发板评测

    。##GD32 Colibri-F150R8开发板控制器搭载的是兆易创新的GD32F150R8T6,其实,对于这颗主控我们并不陌生,这和爱
    发表于 04-27 17:26 2452次阅读

    带灵动微MM32F5的Plus-F5270开发板怎么玩?

    虽然你现在可以使用Keil MDK,但Keil MDK此刻还不认得搭载灵动微MM32F522E芯片的开发板。咱们需要安装灵动微官网MM32F522E系列的开发支持包。
    的头像 发表于 08-18 15:21 1103次阅读
    带灵动微<b class='flag-5'>MM32F5</b>的Plus-<b class='flag-5'>F</b>5270<b class='flag-5'>开发板</b>怎么玩?

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

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

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

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

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

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

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

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

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

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

    如何设计微控制器开发板

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

    使用微控制器开发板来作为单板计算机

    半导体供应商利用评估和演示开发板为其微控制器提供支持。这些的预期用途是让工程师能够首先熟悉目标
    的头像 发表于 10-30 05:42 509次阅读

    [长文干货]MicroPython移植到野火STM32F429开发板

    [长文干货]MicroPython移植到野火STM32F429开发板
    发表于 12-05 18:51 27次下载
    [长文干货]<b class='flag-5'>MicroPython</b>移植到野火STM32<b class='flag-5'>F</b>429<b class='flag-5'>开发板</b>

    PIC18 PIN (16F628A) 微控制器开发板

    电子发烧友网站提供《PIC18 PIN (16F628A) 微控制器开发板.zip》资料免费下载
    发表于 07-27 10:34 0次下载
    PIC18 PIN (16<b class='flag-5'>F</b>628A) <b class='flag-5'>微控制器</b><b class='flag-5'>开发板</b>

    基于STM8S105K6微控制器的sduino UNO开发板

    电子发烧友网站提供《基于STM8S105K6微控制器的sduino UNO开发板.zip》资料免费下载
    发表于 08-24 10:26 3次下载
    基于STM8S105K6<b class='flag-5'>微控制器</b>的sduino UNO<b class='flag-5'>开发板</b>

    使用arduino开发板对89S52微控制器进行编程

    电子发烧友网站提供《使用arduino开发板对89S52微控制器进行编程.zip》资料免费下载
    发表于 12-09 10:01 0次下载
    使用arduino<b class='flag-5'>开发板</b>对89S52<b class='flag-5'>微控制器</b>进行编程

    Cache威廉希尔官方网站 在星辰处理中的应用

    目前,灵动微控制器产品体系中,适配了MicroPython的,有MM32F3(MM32F3273G9P,Arm Cortex-M3)和MM32F5
    的头像 发表于 08-29 17:28 786次阅读
    Cache威廉希尔官方网站
在星辰处理<b class='flag-5'>器</b>中的应用

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

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