MM32F5

引言

使用Keil MDK或者IAR等使用图形界面的开发环境,可以在图形界面环境下编译源码工程,并下载编译生成的可执行文件到目标微控制器中。但若使用ARMGCC等命令行工具链,需要额外的下载工具,才能将编译生成的可执行文件下载到目标微控制器中。

若使用SEGGER J-Link调试器,可以搭配SEGGER Ozone软件或者J-FLASH、J-FLASH Lite实现单独下载的功能。但J-Link调试器价格昂贵,并且老版本的J-LINK调试器无法支持更新的微控制设备。相比而言,开源的DAP-Link方案更接地气。可以适配DAP-Link的命令行工具有openocd、pyocd等,但这些工具对某些具体微控制器设备的兼容性并不是很好,时不时会出现不识别设备或者连接不上的情况,需要开发者自行调试才能确保它们能够正常工作。同时,基于命令的操作方式,对于已经习惯了在图形界面环境下调试的开发者而言,也不是很友好。不过,若是需要搭建持续集成和自动化测试系统,这些基于命令行的工具仍是不可或缺的。

对于仅专注于微控制器端的软件开发者而言,希望能够以最简单的方式解决单独下载可执行文件的问题。本文将以下载MicroPython固件文件到灵动MM32F5微控制器为例,总结了几种简单易用的方法,专门针对使用DAP-Link调试器的情况,通过常用图形界面工具,实现单独下载可执行文件的功能。

PS:针对MM32F5微控制器,不得不使用本文描述方法的原因,还在于一些主观因素:

  • 笔者手头上的J-Link v8不再支持STAR-MC1(Arm Cortex-M33)内核

  • 笔者使用pyocd+DAP-Link的组合,经过一段时间的调试,仍无法实现连接到MM32F5微控制器

  • 使用DAP-Link在Keil中可以调试MM32F5微控制器

使用这些工具可以识别常用的可执行文件类型,例如bin、hex、axf、elf、s19等。用户可根据需要尝试。

借用Keil工程

Keil IDE实现下载功能的部分,相对于编译过程,在内部应该也是一个独立的小工具,这是笔者得以实现用Keil下载程序的关键。Keil没有将内部的下载工具独立地开放出来,因此,笔者不得不创建一个不包含任何源码的空工程,跳过编译部分,仅使用其中下载程序的功能。具体操作步骤如下:

1、启动Keil IDE,创建新工程,并选定设备类型为目标微控制器设备。

笔者实际在本机的`d:\_worksapce\keil\mm32f5`目录下,创建了`mm32f5.uvprojx`工程文件。

1.png

图1 在Keil IDE中创建新工程

2、在`options` -> `Output` 选项卡中,指定将要下载的可执行文件的路径。

在样例中,笔者在`mm32f5`目录下,存放了`micropython.hex`文件。点击`Select Folder for Objects...`按钮,指定为`mm32f5`目录,然后在`Name of Executable:`对应的文本框中输入了`micropython.hex`文件名。

2.png

图2 在Keil工程中指定下载文件的路径及文件名

从字面上看,这里指定的是编译输出的路径和文件名,但实际上,下载过程是同编译过程绑定的,编译过程生成的可执行文件,将被Keil自动作为下载过程的输入文件。

3、在主窗口的工具栏中,单击LOAD按钮,启动下载。

3.png

图3 在Keil工程中下载可执行文件到微控制器

通过 `Build Output`窗口可以查看到,当前已经擦除、下载并且校验成功。

4、使用Keil IDE也可以实现命令行式的下载操作。

此时,可将使用Keil IDE创建的工程视作`uv4.exe`程序的配置文件,例如,在之前创建的`mm32f5.uvprojx`文件中,编辑`OutputDirectory`和`OutputName`字段,指定将要下载程序的路径和文件名。

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">

  <SchemaVersion>2.1</SchemaVersion>

  <Header>### uVision Project, (C) Keil Software</Header>

  <Targets>
    <Target>
      <TargetName>Target 1</TargetName>
      <ToolsetNumber>0x4</ToolsetNumber>
      <ToolsetName>ARM-ADS</ToolsetName>
      <uAC6>1</uAC6>
      <TargetOption>
        <TargetCommonOption>
          <Device>MM32F5277E9P</Device>
          <Vendor>MindMotion</Vendor>
          <PackID>MindMotion.MM32F5277E_DFP.0.0.3</PackID>
          <PackURL>http://www.mindmotion.com.cn/Download/MDK_KEIL/</PackURL>
          <Cpu>IRAM(0x30000000,0x1C000) IROM(0x08000000,0x40000) CPUTYPE("Cortex-M33") CLOCK(12000000) ELITTLE</Cpu>
          <FlashUtilSpec></FlashUtilSpec>
          <StartupFile></StartupFile>
          <FlashDriverDll>UL2V8M(-S0 -C0 -P0 -FD30000000 -FC1000 -FN1 -FF0MM32F5270_256 -FS08000000 -FL040000 -FP0($$Device:MM32F5277E9P$Flash\MM32F5270_256.FLM))</FlashDriverDll>
        ...
          <OutputDirectory>.\</OutputDirectory>
          <OutputName>micropython.hex</OutputName>
        ...

然后在Windows的命令行界面,输入调用Keil下载代码的命令:

uv4.exe -f "d:\_workspace\keil\mm32f5\mm32f5.uvprojx" -j0 -o "d:\_workspace\keil\mm32f5\download_log.txt"

4.png

使用命令行方式有一点不方便,命令行在后台调用Keil执行下载过程没有任何用户交互。命令行触发执行`uv4.exe`程序不是阻塞式的,所以无法通过程序是否返回判定下载过程已结束。虽然在命令中指定输出log到指定文件中,但Keil并不是在下载结束后才创建输出文件,而是逐条写入输出文件。如果用户在下载过程中打开这个log输出文件,将会看到已经执行的部分操作。因此,也不能通过是否创建log输出文件判定已将下载成功。必须检查log输出文件的内容,待其中包含下载成功并通过验证的记录后,才能最终判定下载情况。

使用Ozone

常用J-Link调试器的开发者对Ozone都不陌生。Ozone和J-Link都是SEGGER公司设计发布的面向调试和下载应用的工具,Ozone是一套具有图形界面的上位机工具,可以适配J-Link调试器,独立下载可执行文件到目标微控制器并进行调试。但实际上,Ozone除了适配自家发售的J-Link调试器外,还提供了对开源CMSIS-DAP(DAP-Link)的支持,即使用Ozone通过DAP-Link连接到目标微控制器,也能够实现独立下载而执行文件并调试的功能。不过,Ozone支持DAP-Link毕竟只是额外的福利,几乎每个步骤都会弹窗提示,“这只是个试用功能,未经过充分测试”。

使用Ozone适配DAP-Link的操作同使用J-Link的情况相同,具体步骤如下:

1、启动Ozone软件,选择目标微控制器设备。

刚启动Ozone软件时,Ozone会自动检测到当前电脑上已经接入了DAP-Link调试器,然后提示警告“必须接受如下条款:1. 当前软件仅适用非商业用途或评估;2. SEGGER官方不会提供技术支持”。选择接受“Accpet”。

5.png

图4 启动Ozone

2、选择目标微控制器设备。

当确认目标微控制器设备后,警告提示对话框会再次弹出。仍然是接受“Accept”。

6.png

图5 在Ozone中选择目标设备

3、在“连接配置”对话框中,可以看到已经识别出来的DAP-Link了。

Ozone连接调试器的速度,在默认情况下被配置成4MHz。笔者手上的DAP-Link方案中,使用的是低速USB接口,考虑稳妥的情况,将速度改为1MHz。

7.png

图6 Ozone显示识别出的DAP-Link调试器

4、选择将要下载的可执行文件

8.png

图7 选择将要下载的可执行文件

5、开始下载。

再次弹出提示对话框。选择接受“Accept”。

9.png

再次弹出提示对话框。选择接受“Yes”。

10.png

图8 启动下载确认第二次警告

6、下载成功

11.png

图9 使用Ozone下载成功

如果对频繁弹出的警告对话框不喜,可勾选“不要重复弹出”复选框,有一定改善效果。

来源:灵动MM32MCU

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 22

本文以 KiCad v6.0 设计一个简单的 MM32F5277E9PV 的开发板为例,通过原理图讲述 MM32F5 硬件系统设计,中间会提到一些电路设计中遇到的问题,供大家参考。

最小系统设计

最小系统是 MM32F5 能够工作的电路设计,包括 MM32F5 系列的芯片,去耦电容,复位电路,外部时钟电路(可选)以及电源。

元件绘制

首先,我们需要绘制一个名为 MM32F5277E9PV 的元件,绘制元件的信息来自于该芯片的产品手册,可在灵动官网中查看。

在 “引脚定义及复用功能” 章节中,通过引脚分布图可以直观看到不同封装芯片的引脚分布情况(图1),或者是通过引脚定义表,查看引脚功能和序号。

“图1
图1 MM32F5270 LQFP144封装引脚排布

不同用户对 MCU 元件的绘制方法有所不同,较大的器件甚至可以绘制成多个单元,从而能在一张原理图中放下整个器件。

本文介绍一种绘制方法,规则如下:

1. 元件以单个矩形表示,引脚分布在矩形的左右两边。

2. 电源引脚集中放置在左上角,VDD 在上,VSS 在下。

3. GPIO 引脚在右侧放置,且按照 PORT 顺序排列,不同 PORT 中间间隔一个引脚位置,若右侧放置数量过多,可适当将部分 GPIO 放置在左侧。

4. 复位引脚在矩形左侧绘制,其位置在电源引脚的下面,GPIO引脚的上面。

元件绘制如图所示,由于绘制的元件较长,分成三张图片表示(图2,图3,图4):

“图2
图2 MM32F5277E9PV 元件符号 part A

“图3
图3 MM32F5277E9PV 元件符号 part B

“图4
图4 MM32F5277E9PV 元件符号 part C

当然,这种画法也存在一定的问题,A4 大小的原理图需要纸张竖向才能放得下,一般使用的话都调整成 A3 大小绘制。

元件绘制有一些建议:

1. 不建议按照芯片形状绘制,否则一个大矩形,中间空着,浪费原理图空间不说,看着也并不舒服。

2. 引脚按照功能分类,方便索引,如上面提到 GPIO 引脚在右侧放置,且按照 PORT 顺序排列,并没有按照引脚顺序排列,这样方便查找指定功能的引脚。

总之,原理图的第一需求是让用户看得懂,看着舒服,其次才是让机器明白电路之间的关系,因此绘制元件时,也需考虑怎么才能让用户看着舒服,再将元件绘制完整。

去耦电容

几乎每个器件的电源附近都要放置一个容值为 100nF 左右的去耦电容,来提高系统的稳定性。在此推荐,每个VDD 附近都要就近放置一个 100nF 的去耦电容。MM32F5277E9PV 有11个 VDD 引脚,1个 VDDA 引脚,一个 VBAT 引脚,一个 VREF+ 引脚,因此需要放置14个去耦电容(图5)。

当然,本文的目标是设计一款简单的开发板,对 ADC 的需求没有那么严格,因此 VDDA 以及 VREF+ 与 VDD 使用同样的电源,若有对 ADC 严格要求的场景,需额外使用更加稳定的基准电源,来保证 ADC 的正常工作。同样的,如果有 RTC 需求,VBAT 也需额外处理。

“图5
图5 去耦电容

复位电路

产品手册中有对复位 电路的描述(图6):

“图6
图6 手册中的复位电路

通过产品手册可知,为保证系统稳定工作,建议在复位引脚添加一个上拉电阻,和一个接地的电容。作为一个开发板,方便调试,再加上一个按键,方便复位(图7)。

“图7
图7 原理图:复位电路

外部时钟

MM32F5277E9PV 内置经出厂调校的 8MHz 高速 RC 振荡器,在一些简单的场合,无需再添加外部晶振,但即使是经出厂调教过,RC 振荡器提供的时钟依然存在误差,对于高精度要求的场合,比如说 USB,尤其是产品在进行 USB 认证时,对时钟精准度要求极高,此时就需要使用外部晶振提供更加精确的时钟来源了。

常见的外部晶振频率一般有 8MHz 和 12MHz,还有32.768KHz 的晶振作为外部低速时钟来源,用于 RTC。如果有 USB 需求的用户,外部高速时钟建议使用 12.000MHz 的晶振,注意12后面有小数点带三个零,比单纯的 12MHz 晶振更精确,这样才能给 USB 提供更精确的时钟。

如图所示(图8),本文采用 12MHz 晶振作为外部高速时钟来源,22pF的负载电容,510K 的反馈电阻。

“图8
图8 原理图:外部高速时钟晶振

本文要设计的开发板无 RTC 需求,因此不再放置 32.768KHz 晶振。若有 RTC 需求的用户,可参照 12MHz 晶振的规则,注意选择好负载电容的容值即可。

电源

前文的图片中已经可以看到,存在两种不同的电源:VMCU 和 VCC3,VMCU 是用于测量 MCU 功耗而单独设计的电源,实际与 VCC3 导通(图9)。

“图9
图9 原理图细节:VCC3 和 VMCU 的关系

MM32F5277E9PV 具有较宽的电压范围,支持2.0V ~ 5.5V 供电,但实际电路中,需要考虑外围器件的工作电压,比如稍后介绍的 QSPI Flash,就只能在 2.7V~ 3.6V 左右的电压下工作,综合考虑,在实际电路中,VCC3 的电压选择为3.3V。

本文设计的开发板供电来源为 USB 供电,开发板带有两个 TYPE-C 接口,存在两路 USB 电源,为防止电流倒灌,需使用过二极管隔离。

完整的电源原理图如图所示(图10):

“图10
图10 原理图:电源

还有个VLCD?这一路是单独给 LCD 屏这个吃电大户提供的,开发板选择使用 XC6206 LDO 作为电源芯片,考虑到可提供的电流较小,因此放置两路 LDO,且 LCD 单独供电,避免电流较大,LDO 吃不消。

为什么两个 LDO 不并联放置?考虑到的一个问题是两个 LDO 总会存在少许差异,如输出电压不一致,若并联放置,则可能其中一个 LDO 在拼命干活, 另个 LDO 在那闲着,那放置两个 LDO 就没有什么意义了。

外设器件设计

最小系统有了,MCU 就能够正常工作了,但没有外围器件,MCU 就是一个光杆司令,你甚至感受不到 MCU 已经运行起来了,除非让它以最大功耗工作,过好一会后,能感受到 MCU 有一丢丢的温热。

那么,就加一丢丢细节,丰富下这个最小系统吧,下面将讲述几个外设的电路设计:

USB 转串口

串口是一个常用的好东西,简单实用,加一个 USB 转串口的器件,方便用户在电脑上查看 MCU 的工作日志呗。

原理图放上(图11):

“图11
图11 原理图:USB 转串口

大多数用户使用串口时,习惯使用 PA9 & PA10 作为调试用的串口引脚,同时具有 ISP 下载程序的功能,但当使用 USB 功能时,PA9 & PA10 会被占用,因此建议使用 PB6 & PB7 引脚作为调试用串口引脚,也具有 ISP 下载功能,且不会被 USB 占用,岂不美哉?

有一个细节(图12),我见过一些板载 USB 转串口的方案,都没有考虑一个问题:串口芯片一般工作在 USB 提供的 5V 电压下,TXD 输出的高电平也是 5V 电压,而 MCU 以及其它外设,是工作在 3.3V 电压下的,如果没有隔离,会影响其他器件的正常工作,因此需要在串口引脚之间,加入肖特基二极管,起到隔离的作用。当然,MCU 的 RX 引脚,也要配置成上拉输入才行。

“图12
图12 原理图细节:隔离二极管

分析下电路,USB 转串口的 TXD 如果输出高电平,二极管左侧电压高于右侧,二极管截止,MCU 的 RXD 配置为上拉输入,默认为高电平,因此可以接收到 USB 转串口发出的高电平信号;USB 转串口的 TXD 如果输出低电平,二极管左侧电压低于于右侧,二极管导通,MCU 的 RXD 也因此被拉低,接收到了 USB 转串口发出的低电平信号,数据就这样传输起来了,当然,二极管需要选择肖特基二极管这种快恢复的二极管,避免丢数据。

需要注意的是,USB 转串口芯片要根据手册描述来决定是否串联阻抗匹配电阻,否则会造成芯片无法正常工作。

QSPI Flash

MM32F5 系列的一大优势就是具有 QSPI 接口,可以连接 QSPI Flash,并且 XIP 执行 QSPI Flash 中存储程序。

原理图放上(图13):

“图13
图13 原理图:QSPI Flash

一个芯片加了好多电阻,其实很多是冗余的,为了适配更多的 SPI Flash 芯片,我们来一一分析下:

以 IO2 和 IO3 引脚的上拉电阻为例,这两个引脚可能会被复用为 HOLD 引脚和 WP 引脚,当这两个引脚处于低电平时,QSPI Flash 芯片就不能随心所欲的使用了,因此,建议手动拉高这两个引脚,防止 QSPI Flash 不能正常使用。当然,在做产品时,可以省略这些上拉电阻,先将IO2 和 IO3 连接的 GPIO 配置为推挽输出模式,输出高电平,待将 QSPI Flash 配置为四线模式时,再将这两个 GPIO 恢复为 QSPI 模式,操作 QSPI Flash。

原理图中的 0R 电阻,其实阻值并不是 0R,而是需要根据 QSPI Flash 的阻抗特性,匹配相应的匹配电阻,以 W25Q 系列芯片为例,建议将 0R 电阻替换为 22R 或 33R 的电阻(仅供参考),否则在四线模式下,读写的数据可能会出错,其它 QSPI Flash 如 FM25Q系列芯片实测 0R 电阻也可用,但实际应用过程中,需根据芯片手册和实际场景,来更换匹配电阻的阻值。

SRAM

使用 QSPI Flash 扩展了 MM32F5277E9PV 的 Flash 大小,何不再扩展下它的 SRAM 呢?

常见的 SRAM 芯片有 SRAM 和 PSRAM 两种,PSRAM 其实是 DRAM 加控制器实现的,对外的接口和 SRAM 无差,但成本会比 SRAM 低不少,感兴趣的用户可以了解下。

放原理图(图14):

“图14
图14 原理图:片外 SRAM

原理图没什么好讲的,把线连起来就行,重点是 PCB 布线,SRAM 走的是并行信号,并且信号频率也挺高的,需要考虑下线路的问题了:

1. PCB 布线是否等长?

2. 信号线过孔数量是否过多?

布线要等长,这一条其实挺难实现的,如果没特别要求,在实际布线中,只要别差个十万八千里,也没啥大问题,调整 FSMC 的工作参数,别让它工作的太快也能用起来,当然,这样的话性能肯定会受影响,就需要综合考虑情况了。

过孔其实挺烦人的,每增加一个过孔,就相当于在信号线上加了个数皮法的电容,信号质量肯定会受影响,因此,要减少过孔数量,实测两三个没啥问题,但过孔多了,还是得担心信号质量问题了。

LCD

同 SRAM 一样,LCD 也是使用 FSMC 驱动,当然,SPI 也可以,但有 FSMC,为什么还要用 SPI 慢悠悠刷屏呢?

放原理图(图15):

“图15
图15 原理图:LCD

信号线也没什么多讲的,接上就行,需要注意几点:

1. 同 SRAM 一样,注意信号线要尽可能等长,过孔数量尽可能少。

2. LCD_RS 可接 FSMC 任意一根地址线,但软件要根据所接的地址线,来决定向哪个地址读写数据。

3. LCD_RST 接任意 GPIO,该 GPIO 配置为普通的推挽输出即可,与 FSMC 无关。

需要看的就是这个 LCD 的背光控制了,LCD 背光来自于 LED,由于工作电流较大,不能单纯使用限流电阻草草了事,而应该使用三极管进行电流控制,LCD_BL 同 LCD_RST 一样,接任意 GPIO,该 GPIO 配置为普通的推挽输出即可,与 FSMC 无关,当然,如果想实现屏幕亮度控制的话,可用带定时器 PWM 输出的引脚作为背光控制,使用 PWM 波控制屏幕亮度。

结语

本文通过设计一个 MM32F5277E9PV 开发板的原理图讲解下 MM32F5 的硬件系统设计,以及分享下设计电路中遇到过的坑,比如说 USB 转串口的问题,一个是 USB D+ & D- 不加串联电阻,一个是串口电流倒灌,都是本文作者切身实际踩过的坑,希望大家设计电路时,能够注意到这些问题,减少 PCB 打样的次数,也希望能有更多的人,选择使用 MM32F5 系列的芯片,做出更多更有趣的产品。

来源:灵动MM32MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 49

MM32F5270 是灵动近期发布的全新性能型 MCU 产品,采用“星辰”处理器做为主控核心,并在系统架构和外设配置上做了全面的升级。漫谈系列的前几期中依次介绍了 MM32F5270 中的多处创新特色,细心的读者可能对“星辰”处理器的跑分数据还有印象,没错,第一期中笔者曾经提到过“星辰”处理器达到了 4.02 CoreMark/MHz,相较于 Cortex-M3 和 Cortex-M4 有约 17~20% 的提升。本期,笔者就来说说 CoreMark 跑分,以及如果利用 MindSDK 轻松将 CoreMark 程序移植到 PLUS-F5270 开发板上,并将跑分结果和友商的高性能产品做一个对比。

1、CoreMark 测试

CoreMark 是评测 MCU 性能的最常用测试程序之一,经常能看到很多国际大厂将 CoreMark 分数标注在产品手册上,足以体现 CoreMark 测试的权威性。

CoreMark 是由 EEMBC 提出的基准测试程序,可通过 EEMBC 官网(www.eembc.org)下载 。根据 EEMBC 的介绍,CoreMark 是为了测试处理器功能而特制的基准测试程序,其通过产生单一数字的跑分结果,来帮助用户快速的对不同的处理器做出比较。

接下来,笔者通过 EEMBC 网站下载了最新版的 CoreMark 测试程序,最新的程序需要通过 github 获取(github.com/eembc/coremark),这里的具体操作就不介绍了,我们直接来看下载下来的 CoreMark 程序包。

下载后的程序包结构如下图所示,其中,coremark-main 文件夹下的 .c 和 .h 是 CoreMark 测试的核心程序,和程序运行的平台没有关系,所以理论上,coremark-main 下的文件是不需要修改的。同时看到 coremark-main 文件夹下有很多子文件夹,这些文件夹是移植到不同操作系统上所需要修改的文件,即 core_portme.*。这里,考虑到我们仅运行 CoreMark 程序,不需要跑操作系统,因此,选择其中的 barebones 文件夹,打开后看到里面包含了 core_portme.c,core_portme.h 以及其它一些程序和 Makefile。后期的移植就是通过修改这些 portme 文件实现。

“MM32F5

到这里,我们运行 CoreMark 所需的所有文件已经就位。简单看下 CoreMark 中到底测试了哪些内容。CoreMark 的核心程序有 3 个,分别是 core_list_join.c,core_matrix.c,core_state.c。其中,core_list_join 用于列表运算测试,主要包括列表插入、删除、反转等操作;core_matrix 用于矩阵运算测试,主要包括矩阵的乘法、加法等;core_state 用于状态机运算测试,主要运行状态的转换。

CoreMark 结果通过完成指定运算量所需要的时间来表征,即 CoreMark = Data size/时间。这个结果用于评定 MCU 的性能,而非 CPU 性能。CoreMark 分数和 CPU 的主频有关,如果仅评估 CPU 的性能,则通过 CoreMark 分数和主频的比值来表示,即 CoreMark/MHz。“星辰”处理器 4.02 CoreMark/MHz 就是这么来的。

2、借助 MindSDK 移植 CoreMark

接下来就是 CoreMark 的移植。前面提到 CoreMark 的核心程序是和平台无关的,那我们需要移植哪些内容呢?很简单,仅需要处理好以下几点:

1)提供时间基准 – CoreMark 测试需要知晓运算所花费的时间,因此需要定义一些 API 来告诉 CoreMark 当前时间是多少,而最终 CoreMark 测试关心的是测试开始到测试结束的时间差。

2)系统初始化 – 包括Cache 配置、电源配置、时钟配置等。

3)提供串口打印 – CoreMark 的结果需要打印出来,一般通过串口打印的方式接收 CoreMark 的结果。

4)最后,还要将 CoreMark 程序放入 IDE 中,并下载到开发板上运行。这里采用 IAR 开发,在 PLUS-F5270 开发板上运行。

这里选择基于 MindSDK 进行移植。MindSDK(mm32-mcu-sdk)是由灵动官方的软件团队开发和维护的基于灵动微控制器的软件开发平台。其包含了驱动程序、功能组件、样例工程及演示工程。用户可以访问灵动官网,到产品-> MM32F5270 -> 工具和软件下找到 MindSDK 的入口,也可以直接访问 mindsdk.mindmotion.com.cn 登录并获取。

MindSDK 中包含了这里所需的所有驱动程序,基于 MindSDK 可以实现快速 CoreMark 移植。

“MM32F5

这里,我们登录到 MindSDK 网站,选择 Toolchain 为 IAR,选择开发板为 PLUS-F5270,点击 BUILD PROJECT,即可生成 PLUS-F5270 配套 SDK 包。

“MM32F5

下载下来的 plus-f5270_iar SDK 包的内部结构如下图所示:

“MM32F5

这里,考虑到移植需要用到串口打印,因此笔者选择了基于 demo_apps -> basic 中的 hello_world 工程进行移植,这里,需要以下几个步骤:

1)将 hello world 工程拷贝一份,重命名为 Coremark_test。

2)新建一个 Coremark 文件夹,将 Coremark 程序拷贝进去。

3)打开 IAR 工程,添加 Coremark 程序,并删除原有的 main.c。

4)在 portme.c 的 portable_init 函数中做系统初始化配置。

这里的配置包含以下几步:

第一步是打开指令和数据缓存,MM32F5270 所配置的缓存是“星辰”处理器自带的 L1 缓存,指令和数据各 4KB,其调用的 API (SCB_ 开头)都已经在头文件 core_star.h 中定义好,该头文件位于 MindSDK 的 device/CMSIS/Include 路径下。

“MM32F5

第二步是板子初始化,这里直接拷贝 hello world main.c 中的BOARD_Init() 函数。其中包含了时钟的初始化、IO 引脚的初始化和串口的初始化(用于串口打印)。这里 CPU 配置为 120MHz。

“MM32F5

第三步是定时器的初始化,这里直接将 driver_examples -> tim -> tim_basic 中的 app_tim_init() 函数拷贝到 core_portme.c 来修改。这里采用 32 位定时器 TIM2 做为系统时间基准,配置 TIM2 运行在 120MHz,分频系数为 100,计数周期为 1000 秒。

“MM32F5

以上配置完毕后,CoreMark 的移植工作就完成了。可以看出,基于 MindSDK 移植 CoreMark 程序是非常简单的。此时打开编译配置可以看到,该工程选择了 Mind Motion MM32F5277E9P 做为 Device,Core 识别为 STAR。

“MM32F5

3、基于 PLUS-F5270 运行 CoreMark

接下来,需要将程序下载到 PLUS-F5270 开发板中运行。这里,PLUS-F5270 开发板是灵动联合逐飞科技打造的 MM32F5270 系列全功能评估板,目前已经可以通过逐飞科技官方淘宝账户购买。

“MM32F5

PLUS-F5270 开发板没有板载调试器,用户需要通过外部调试器连接。目前,J-LINK V9 或以上版本已经支持 STAR 处理器,用户也可以通过 DAP-LINK 来进行调试和烧写。其硬件连接如下图所示。

“MM32F5

4、CoreMark 结果对比

这里对 MM32F5270 进行了多种配置下的 CoreMark 测试,包括不同的编译器优化条件、不同的 CoreMark size。这里,程序运行在内置 Flash 中(0x08000000),中间数据存放在 System RAM (0x30000000)中。

测试结果如下图所示,可以看到,MM32F5270 在优化开到最大的条件下,达到了 3.93 CoreMark/MHz,这个数值已经非常接近理论极限值 4.02 CoreMark/MHz,可以看出MM32F5270 的运行效率还是很高的。

“MM32F5

其中,优化开到最大时的串口打印结果如下图所示,可以看到,MM32F5270 在 21.2 秒内完成了 10000 次迭代,因此跑分结果为 1000/21.2 = 471.4 CoreMark,单位主频的分数为 471.4 CoreMark/120MHz ≈ 3.93 CoreMark/MHz。

“MM32F5

将这个数据和友商的 Cortex-M4 处理器进行了对比,这里选择的 Cortex-M4 处理器运行在 180MHz,配置 1KB L2 指令缓存和 128B L2 数据缓存,测试时打开 I/D Cache,并使能 Flash prefetch,得到其运行结果是 3.34 CoreMark/MHz。实测结果显示, MM32F5270 的 CoreMark 结果比友商 Cortex-M4 产品快了约 18%。在不同的编译优化程度下也有 14% ~ 19% 的提升。

“MM32F5

这个结果是否和 CoreMark size 有关呢?为此,对不同 CoreMark size 下的结果进行了对比,可以看出,当 CoreMark size 增加时,“星辰”处理器相对于 Cortex-M4 有 19% ~ 23% 的提升,并且 Data size 越大,CoreMark提升就越多。

“MM32F5

5、小结 & Next

本文介绍了如何利用 MindSDK 轻松将 CoreMark 移植到 PLUS-F5270 开发板上,并将实测结果和 Cortex-M4 进行了对比。测试结果显示 “星辰”处理器相较于 Cortex-M4 有约 14% ~ 23% 的性能提升。

CoreMark 测试仅仅是常用的基准测试之一,感兴趣的读者也可以基于 MindSDK 和 PLUS-F5270 开发板移植 Dhrystone 等其它测试程序。

未完待续!本文是 MM32F5 漫谈系列的第五篇,后续将为大家持续更新,旨在分享 MM32F5 系列中所包含的那些有趣的技术,敬请期待!

往期回顾

MM32F5 系列漫谈 1:“星辰” 处理器?!
MM32F5 系列漫谈 2:吞吐率最大化的总线设计
MM32F5 系列漫谈 3:MindSwitch 实现高效互联
MM32F5 系列漫谈 4:高性能模拟和 3 合 1 控制

来源:灵动MM32MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 272

6月17日,灵动微电子受邀参加了由 Aspencore 主办的“全球MCU生态发展大会”,会上灵动应用开发总监金昭发表了题为“灵动 MM32‘星’平台,新生态”的精彩演讲,与大家分享了灵动的新产品成员 MM32F5 系列。这是自今年该新品发布以来,首次在线下亮相。MM32F5 搭载了基于 Armv8-M Mainline 架构的“星辰” STAR-MC1 处理器内核,其最大的特点就是高性能,可以达到 4.02 CoreMark/MHz,并集成了 DSP 和 FPU,相较传统的 M3 和 M4 有很大的提升。

有关 MM32F5 系列更多的介绍参见 往期文章 以及 MM32F5 系列漫谈。

“灵动携高性能MM32F5系列&SPIN0280亮相全球MCU生态发展大会"

此外,在提到本次大会的主题生态发展时,金昭也表示,生态系统一直是灵动发展的重点。灵动 MCU 开发产品项目分成四个阶段:产品选型、开发设计、样机测试和量产升级。在选型阶段,灵动有选型手册、在线服务和应用参考方案可供选择。到开发设计阶段,灵动提供了软件开发包 MindSDK,同时对常用的开发环境如 IAR SYSTEMS、Arm KEIL 等,以及各类常见的嵌入式 RTOS 都提供了支持。样机阶段,灵动有自己的编程调试器,和 FAE 团队线上线下的支持。量产阶段,灵动会提供对第三方量产烧录工具的支持。以完善的生态系统为客户提供全方位的服务。

“”灵动携高性能MM32F5系列&SPIN0280亮相全球MCU生态发展大会"

在同期举办的“电机驱动与控制论坛”上,灵动电机技术事业部市场经理胡力兴也带来了“基于灵动 SPIN 系列的平台化电机应用解决方案”分享。灵动基于电机的 SPIN 系列产品线涵盖非常全面,包括专用 MCU、预驱 MCU 及驱动 MCU,Flash 从 16KB 到 512KB,电压覆盖 20V 到 600V。针对不同电机终端产品的需求,还提供了 All in one、高集成和专用 MCU 等不同级别的解决方案。All in one 集成了 MOSFET,LDO,电阻网络,运放,系统外部只需要一些电阻电容;专用 MCU 针对电机控制设计,多种方案搭配多种封装。

灵动的程序、方案和应用都已实现平台化,给出具体应用,就能找到对应产品。程序平台化方案涵盖了无传感器单电阻FOC、无传感器双电阻FOC、霍尔传感器FOC、无传感器反电势控制、霍尔传感器,方波控制等。方案平台化提供从12V-72V的电机系统支持,SPIN系列产品在服务器风机/冷却风扇、电动工具、吸尘器/鼓风机、电动车/滑板车、冰箱压缩机、空调和洗衣机中被广泛采用。

灵动程序平台化、方案平台化,最终的目的还是希望将应用平台化,让工程师能够更好地把产品做出来。

“”灵动携高性能MM32F5系列&SPIN0280亮相全球MCU生态发展大会"

灵动工业级芯片 MM32SPIN0280 / MM32SPIN560C 将进行 AEC-Q100 认证。SPIN0280 是灵动最新推出的一个产品,这个产品是针对汽车 AEC-Q100 设计的。SPIN0280 目前已经量产,将在认证完成后公布给大家。SPIN560C 与 SPIN360C 引脚兼容,也将进一步申请 AEC-Q100 认证。

“”灵动携高性能MM32F5系列&SPIN0280亮相全球MCU生态发展大会"

“”灵动携高性能MM32F5系列&SPIN0280亮相全球MCU生态发展大会"

“”灵动携高性能MM32F5系列&SPIN0280亮相全球MCU生态发展大会"

“灵动携多款产品与客户线下互动"
灵动携多款产品与客户线下互动

本次大会期间,由 Aspencore 主导调研分析的“Top 50国产MCU厂商”,灵动微电子凭借基于 Arm Cortex-M 系列内核自主研发软硬件和生态系统,入选“Top 50国产MCU厂商”榜单前 15 名。

“”灵动携高性能MM32F5系列&SPIN0280亮相全球MCU生态发展大会"

未来,灵动将继续秉承“诚信、承诺、创新、合作”的精神,为客户提供从硬件芯片到软件算法、从参考方案到系统设计的各项支持。

来源:灵动MM32MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 30

漫谈系列的上一期中介绍了外设间互联矩阵 MindSwitch,用户可以通过 MindSwitch 将系统中的常用外设进行同步。本期,笔者就来聊聊 MM32F5270 中的高性能模拟外设,并以一个典型的 3 合 1 控制的例子来对前面几期的内容做一个综合的讲解。

1、高速 ADC

ADC 用于将模拟信号转换成数字信号,是微控制器应用中必不可少的外设之一。

MM32F5270 中包含了 2 组高速 SAR 结构 ADC,每组 ADC 支持最高 12 位分辨率和最高 3MSPS 采样率。其中 ADC1 支持 17 路外部通道(ADC1_INx),ADC2 支持 19 路外部通道(ADC2_INx),两组 ADC 有 12 个通道是共用引脚的(ADC12_INx),因此总计可用的外部通道数是 17 + 19 – 12 = 24 通道。MM32F5270 中的具体 ADC 通道分布整理如下表:

“MM32F5

ADC 的具体特点这里就不一一介绍,感兴趣的读者可以阅读 MM32F5270 用户手册。(https://www.mindmotion.com.cn/download/products/UM_MM32F5270_SC.pdf

这里,对 MM32F5270 ADC 的部分创新特色做如下总结:

支持任意通道转换

支持转换通道的任意排列,最高可支持 16 个通道。这相对于仅能固定顺序扫描的 ADC 而言有两个优势:一是实际应用中通道间的采样顺序可能会变化,二是实际应用中不同通道的采样频繁程度是不同的,而任意转换序列 ADC 能够很好的应对这些场景。下图是一个例子,任意通道转换模式下,前 5 次转换中的通道编号是乱序的(任意可配的),且通道 12 和 通道 6 仅转换 1 次,而通道 3 则转换了 3 次。

“MM32F5

每个任意通道都有独立的结果寄存器

除了最近一次转换的结果,MM32F5270 的每个任意通道都有一个独立的结果寄存器,存储对应通道最近一次的转换结果。这样用户可以在所有ADC通道转换完毕后在需要使用的时刻再读取对应ADC通道的结果寄存器的值,而不需要每次转换后都读取,有效的降低了 DMA 或 CPU 对 ADC 的访问次数和软件复杂度。

支持自动注入模式

在任意通道转换方式下,完成任意通道转换后会自动开始注入通道转换。每个 ADC 支持最高 4 路注入通道,同样支持任意序列转换。需要注意的是,注入通道的触发源和常规通道的触发源是独立的,后文将要讲到的 ADC 分时复用就需要用到这个功能。

支持最高 256 次硬件过采样

MM32F5270 支持 2 到 256次可配的硬件过采样,当配置为 256次时,ADC 将 256 次的采样数值进行累加和硬件平均,并将结果存储在一个 16 位寄存器中。很多应用为提高采样准确度都需要进行多次采样求平均的操作,硬件过采样的优势是不需要 DMA 或 CPU 的数据搬运和计算就能得到平滑滤波后的结果。

触发源通过 MindSwitch 配置

通过 MindSwitch 配置的触发可以实现更灵活可配的触发,后文中的应用案例就将用到这一功能。

2、高速 COMP

比较器 COMP 用于比较两个模拟信号的电平,比较器因其比较速度快和响应速度快等特点,在实际应用中常用于做过流保护等安全保护措施。

MM32F5270 中包含了 3 组高速比较器 COMP1~3,每组比较器都具备如下特点:

● 参考源丰富

● 带窗口 Blanking 功能

● 支持轮询

● 支持滤波

● 带极性选择功能

在实际应用中,往往是将外部的模拟信号和一个参考电压值通过比较器进行比较,这个参考电压值往往是一个固定电平,其可以从芯片外部输入,也可以由芯片内部提供。MM32F5270 的比较器支持这两种方式,并且提供了丰富的电压参考源包括:

● CRV 的输出

● DAC1 的输出

● DAC2 的输出

这里,CRV 的全称是 Comparator Reference Voltage,是一个低分辨率的电阻分压网络,可提供 1/20 到 16/20 共 16 档参考电压,其分压源可以选择是 VDDA 或者内部 1.2V 带隙基准电压。以 VDDA = 3V 为例,其分压范围为 150mV 到 2.4V,每 150mV 一档,共 16 档。

如果需要更精确的参考电压,则可以采用 DAC1 或 DAC2 的输出,这里的两个 DAC 都是 12 位分辨率。以 VDDA = 3V 为例,其分压范围为 0V 到 3V,共 4096 档,分辨率约为 0.7 mV(仅是理想分辨率,真实分辨率会更大)。

不论是 CRV 还是 DAC,其相较于外部输入的最大优势是其电压可随时调整。

每组 COMP 支持 4 路正向输入和7路负相输入,其中正向输入全部由外部引脚输入,而 7 路负相输入中包含了 3 路外部引脚输入、1 路 CRV 输出、1 路 DAC1 输出和 1 路 DAC2 输出,总结如下表:

“MM32F5

上面的提到的 2 组 DAC 除了可以为比较器提供参考电压外,它们还带有一定的输出驱动能力,支持最快 1MSPS 转换率,可以不需要外部放大器而直接驱动负载,非常适用于一些音频应用。此外,DAC 还支持硬件自动生成三角波,用户也可以通过精确的触发控制和数据输入来通过 DAC 生成更复杂的正弦波或任意波形。

3、应用场景:3 合 1 控制

经过上述介绍,相信读者对于 MM32F5270 中的高性能模拟外设已经有所了解。接下来,笔者就将前几期介绍内容和本期内容结合在一起,通过一个常见的应用案例来讲解。

实际应用中的一个趋势是系统的集成度越来越高,很多嵌入式系统会将原本分布在多个 MCU 中的功能集成在同一个主控 MCU 中,在汽车、家电和消费电子领域中都能观察到这种趋势,这样做能够带来开发便捷、节省空间、节省成本、节省线束等多种好处,通常可以把这种多功能合并的结构叫做多合一控制,举几个典型的例子:

2 合 1

2 合 1 典型场景是双电机控制,具体应用包括洗烘一体洗衣机中的滚筒电机 + 热泵风扇控制、割草机中的割草电机 + 行进电机控制、电动三轮车中的差速电机控制等等。对于此类应用,灵动的 MM32SPIN0280 就非常适合,其配备了96MHz M0 内核、硬件除法和开方、双 3MSPS ADC + 双高级定时器、多路运放和比较器,感兴趣的读者可以点击链接进一步了解。

3 合 1

3 合 1 典型的应用是空调外机中的 PFC + 压缩机 + 风机控制,对于此类应用,其对于 CPU 性能的要求往往更高,因此,目前市面上的方案往往是 Cortex-M4 及以上性能的 MCU 或 DSP 来实现。MM32F5270 配备了 120MHz 的 Armv8 “星辰”处理器,带有 DSP 和 FPU 扩展,单位主频性能相较于 Cortex-M4 提升约 20%,并配有多并发的总线架构、高效互联系统 MindSwitch、多路定时器以及本期重点讲解的高性能模拟外设,非常适合用于此类 3 合 1 的应用场景。

4 合 1

典型的应用是四旋翼飞行器的四个螺旋桨控制,甚至可以将电机控制和飞控进行合并,此类应用往往需要 Cortex-M7 或以上性能的 MCU 或 MPU 来实现。

这里,笔者就以空调外机 3 合 1 控制这个典型应用来说明 MM32F5270 的高性能配置。

空调外机的主体部分包括 1 路 PFC、1 路压缩机和 1 路风机。这里,对这3个模块的参数做如下约束:

● PFC

采用 Boost 结构,通过 1 路 PWM 驱动 MOS 管以控制功率因数校正网络,PWM 周期为 64KHz,电流环为 32KHz,带过流保护。

● 压缩机

永磁同步电机,采用无感 FOC 控制,单电阻采样,PWM 周期和电流环均为 16KHz,带过流保护。

● 风机

永磁同步电机,采用无感 FOC 控制,单电阻采样,PWM 周期和电流环均为 16KHz,带过流保护。

其中,Boost PFC 的原理图如下:

“MM32F5

单电阻无感 FOC 电机控制原理图如下:

“MM32F5

根据上述约定:每路电机需要 3 相互补 PWM 来驱动,1 路高速 ADC 去做电流采样,多个定时器通道去控制 ADC 的采样点,以及 1路比较器做过流保护;PFC 则需要 1 路 PWM 输出去做功率因数校正,1 路高速 ADC 去做电流采样,1个定时器通道去控制 ADC 的采样点,以及 1 路比较器做过流保护。

这里,考虑到两路电机的 PWM 周期完全一致,因此可以很容易的将两路电机的处理(包括采样和计算)在时序上分割开,这样, 两路电机就可以共用一组 ADC 进行分时采样,而另一组 ADC 可以留给 PFC 使用。

MM32F5270 中配置了 2 组高级定时器(TIM1 & TIM8)、4 组通用定时器(TIM2~5)、3 组比较器(COMP1~3)、2 组独立 DMA(DMA1~2,可分别用于两组 ADC),并通过 MindSwitch 和 CLU 将上述外设进行精确同步,能够满足上述资源需求。资源分配整理如下表:

“MM32F5

其对应的系统框图如下图所示:

“MM32F5

一种可行的时序分配和 PWM 波形如下图所示。

这里,因 TIM1 和 TIM8 的 PWM 周期都是 16KHz,因此,TIM1 和 TIM8 可以做 180° 相位差的严格同步。这样电机1(M1)和电机2(M2)的采样可以分时复用 ADC1 而不互相干扰。CPU 也可以分时处理 M1 和 M2 的电流环而不互相干扰。

这里电机 1 的电流采样点通过任意通道的触发控制(ADC1_TRIG),而电机 2 的电流采样点通过自动注入通道的触发控制(ADC1_JTRIG)。

TIM3 的 PWM 周期是 64KHz,而电流环是 32KHz,因此,其刚好可以利用 M1 和 M2 电流环的处理间隙做 PFC 的电流环。当然,这也得益于 “星辰”处理器的高性能运算能力,有足够的 CPU 带宽可以用于三路算法的运算。

“MM32F5

此时,MindSwitch 和 CLU 的内部连接如下图所示:

“MM32F5

可以看到,上述 3 合 1 的应用场景用到了 MM32F5270 的多个模块:

高性能“星辰”处理器

● MindSwitch 和 CLU

● 2 组高速 ADC

● 3 组高速比较器

● 2 组高级定时器

● 1 组通用定时器

● 2 组 DAC

MM32F5270 以高性能运算能力和丰富的外设资源,很好的满足了 3 合 1 应用的需求。

4、小结 & NEXT

本文介绍了MM32F5270 中的 ADC、DAC 和比较器等模拟外设,并结合前几期的知识点,以 3 合 1 的应用实例来说明了这些高性能外设间如何协同配合来满足复杂应用的需求。

未完待续!本文是 MM32F5 漫谈系列的第四篇,后续将为大家持续更新,旨在分享 MM32F5 系列中所包含的那些有趣的技术,敬请期待!

往期回顾

MM32F5 系列漫谈 1:“星辰” 处理器?!
MM32F5 系列漫谈 2:吞吐率最大化的总线设计
MM32F5 系列漫谈 3:MindSwitch 实现高效互联

来源:灵动MM32MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 21

漫谈系列的前两期分别介绍了 MM32F5270 所采用的 “星辰”STAR-MC1 处理器多并发总线架构设计,相信读者在读完了前面的介绍后,已经对 MM32F5270 的高性能设计特点有了一定的了解。本期,笔者接着来聊聊在 MM32F5270 中首次采用的外设间互联矩阵 MindSwitch 和组合逻辑单元 CLU,看看 MM32F5270 是如何通过 MindSwitch 和 CLU 来实现可任意编程、任意重组的外设间互联系统的。

注:为避免读者把外设互联和上期谈到的总线互联混淆,这里做一个简单的解释。总线互联指的是CPU、DMA 等总线 Master 和存储、外设等总线 Slave 间的数据传递,而外设互联指的是外设间的控制信号的交互。

痛点:IP-to-IP

MCU 中文翻译为微控制器,可以定义为使用处理器来控制外围设备以实现和外部世界交互的控制单元,这里的交互包括外部信号的采集、通信以及对外部电路的控制。因此, MCU 一般具备比较丰富的外围设备(外设,Peripherals),常见的外设如下表所示:

“MM32F5

需要补充说明的是,上表中仅仅列举了外设的类型,而在一个 MCU 中,其每种外设的数量可能是有很多个的,这样一来,所有外设的数量就变得很庞大。

而在实际应用中,这些外设往往不是孤立的,很多情况下都需要多个外设间的协同配合去实现某项功能,典型的例子如电机控制系统,这类系统中往往需要 ADC、定时器、PWM等模块间的精确同步。因此,当这些数量庞大的外设间需要交互时,如何高效便捷的管理成了芯片设计中的一个主要难题(芯片设计人员一般将此叫做 IP-to-IP 设计)。

而 MCU 的一个主要特点是其面向的应用非常广泛,这就导致不同的用户对于外设资源的使用千差万别,外设间的同步逻辑更是各不相同。

为满足不同应用的需求,就需要外设间的互联做到灵活可配。但在很多市面上常见的 MCU 中,外设间的同步逻辑是固定的,是软件无法配置的。这种 IP-to-IP 设计虽然能够满足一些典型应用的需求,但确无法满足所有用户的需求。

以灵动的产品为例,MM32F3270 和 MM32F5270 中均配备了2 个 5 通道高级定时器和 4 个 4 通道通用定时器,每个定时器都有一路触发脉冲输出(TRGO 信号,具体含义参考用户手册),同时定时器的每个通道都可以产生一个触发脉冲输出,因此,这里一共有 32 个触发脉冲信号,这些脉冲可用于触发其它模块的执行,如触发 ADC 的采样和 DAC 的转换,或触发其它定时器的计数以实现多计数器间的同步。

以定时器触发 ADC 采样为例,传统的做法是根据应用经验,固定几种常见的触发方式,这里可以参考 MM32F3270 中的做法,如下图所示。可以看到,这里 ADC 的触发源是通过一个 5 位的 TRGSEL 寄存器来选择的。

这里主要有两个局限:

触发源有限

这里的触发源仅覆盖了 32 个触发脉冲信号中的半数,例如如果用户想选择 TIM1_TRGO,或者 TIM2_CC3 等来触发,这里是无法实现的

触发源的组合有限

假如用户需要在 1 个 PWM 周期内多次触发 ADC,则需要多个触发源的逻辑组合(OR 运算),但这里支持的信号组合非常有限。

“MM32F5

互联矩阵 MindSwitch

MindSwitch就是针对这一痛点而设计,实现了可以任意编程、任意重组的 IP-to-IP 互联网络。MindSwitch 将系统常用的触发源都连接到了其输入端,解决了触发源限制;而 MindSwitch 内置的组合逻辑单元 CLU (Combinational Logic Unit) 则支持任意信号的逻辑组合,解决了触发源组合限制。

MindSwitch 和 CLU 的构造如下图所示,其主要特性包括:

1)分为触发矩阵(Trigger Matrix)和连接矩阵(Connection Matrix)

2)可配置触发源和触发目标

  • 触发源和触发目标可自由配置
  • 支持外设硬件触发和软件触发
  • 内部集成四个组合逻辑单元 CLU,提供 OR-OR 组合逻辑操作

3)可配置连接源和连接目标

  • 连接源和连接目标可自由配置
  • 内部集成四个组合逻辑单元 CLU,提供多种组合逻辑操作

4)支持不同时钟频率的触发源和触发目标之间协同工作

读者可以把 MindSwitch 理解成两个独立的 M 到 N 映射矩阵,其中 M 是源的数量,N 是目标数量,任意源可以映射到任意目标上。

“MM32F5

这里,触发指的是边沿触发(上升沿、下降沿),而连接指的是电平信号的直连。

在 MindSwitch 内部,这两种类型的互联矩阵是互相独立的,即 MindSwitch 内部包含了 1 个触发类型互联矩阵(Trigger Matrix)和 1 个连接类型 互联矩阵(Connection Matrix),两个 Matrix 互相独立,互不干扰,触发源仅能连接到触发目标上,而连接源仅能和连接目标相连。

这里 CLU 是一个 4 输入 1 输出的组合逻辑单元,后文会有更具体的介绍,这里先跳过。

用户可将任意触发源连接到任意触发目标上,或者通过 CLU 将任意 4 个触发源进行 OR-OR 逻辑组合后连接到任意触发目标上。这里的配置都是软件编程的,即用户可以根据其应用场景的需要进行任意配置。

触发和连接的区别是,触发信号需要 MindSwitch 做同步处理,且触发信号仅支持 OR-OR 逻辑操作。

下表整理了 MM32F5270 中的所有源和目标的数量和类别,具体列表可参考芯片的用户手册。

“MM32F5

“MM32F5

组合逻辑单元 CLU

上文已经提到过 MindSwitch 中内置了 4 个 CLU 单元 (CLU0~CLU3),CLU 的全称是 Combinational Logic Unit,即组合逻辑单元。顾名思义,即实现与、或、非等组合逻辑运算的单元。

每个 CLU 都是一个 4 输入 1 输出的单元。4 个输入命名为 CLUxIN0~CLUxIN3,这里将 CLUxIN0 和 CLUxIN1,CLUxIN2 和 CLUxIN3 两两组合(第一级组合),再将组合后的信号进行组合(第二级组合),得到 CLUx 的输出。CLU 的运算类型根据两级组合的不同进行区分,可以分为:

  • OR-OR
  • AND-OR
  • OR-XOR
  • AND-AND

以 AND-OR 为例,即CLUxIN0 和 CLUxIN1 做逻辑与(AND)运算,CLUxIN2 和 CLUxIN3 做逻辑与运算,两者的结果再进行逻辑或(OR)运算,其逻辑表达式如下:

CLUxOUT = (CLUxIN0 & CLUxIN1) | (CLUxIN2 & CLUxIN3)

具体四种模式的电路图如下图所示。

对于 Connection Matrix,每个 CLU 都可以通过 CLUMODE 寄存器来配置成上述任意模式;对于 Trigger Matrix,仅支持 OR-OR 操作。

对于很多应用场景,用户可能仅需要 2 个或 3 个信号的逻辑组合,此时,用户只需要将空闲的一路或多路 CLUxINx 选择为固定电平即可。同时注意到,任意 CLU 输入都可以选择逻辑取反操作,这大大增加了 CLU 的灵活性。

“MM32F5

实例说明

经过上述介绍,读者可能还是无法直接感受到 MindSwitch 和 CLU 的强大。这里,以几个典型用例来进一步说明。

单电阻 FOC 中的 ADC 采样控制

在单电阻 FoC 控制中,需要在一个 PWM 周期内依次采集两相电流、母线电压和环境温度等信息。因此,需要在一个 PWM 周期内触发多次 ADC 的采样,这里以 3 次为例说明。

还是以 MM32F3270 为例,参考上文中 MM32F3270 的 ADC 触发源配置表,可知 MM32F3270 的多路触发源仅支持 TIM1 或者 TIM8 的 CC4 或 CC5 触发,因此其驱动电机的时候的资源分配是这样的:

● 通过 TIM1 的通道 1、2、3 来做为三相电机的驱动,而通道 CC4 和 CC5 用于触发 ADC 的采样。

可以看出,这样的操作有两个弊端:

● 1 个 PWM 周期仅能触发两次 ADC 采样,如果想要实现更多的采样,则需要采用更复杂的软件手段

● 假如使用其它定时器(TIM2/3/4/5)去做触发,则仅支持最多一次采样

而 MM32F5270 采用 MindSwitch 可实现单 PWM 周期内任意时刻的 4 次 ADC 触发。

还是以上述应用场景为例,依然用 TIM1 的通道1、2、3 来驱动电机,但 ADC 触发部分可以有以下两种优化方法:

方法1、用 TIM1 的通道 4、5 触发(CC4/CC5)加上 TIM1 的 TRGO 信号做触发源,这三个信号通过 OR-OR 逻辑组合,再送到 ADC 做触发。可实现每个 PWM 周期触发 3 次 ADC 采样。

方法2、用 TIM3(或其它通用 4 通道定时器)的通道 1、2、3 (CC1/CC2/CC3)来做触发,这三个信号通过 OR-OR 逻辑组合,再送到 ADC 做触发。可实现每个 PWM 周期触发 3 次 ADC 采样。

注:方法2 需要确保 TIM1 和 TIM8 是严格同步的。

方法 1 的优点是仅通过 TIM1 搞定一路电机的驱动和采样。但如果定时器资源还有富余,则可以采用方法2。如果将 TIM3 的 CC4 或者 TRGO 信号也利用起来,则方法 2 能轻松实现每个 PWM 周期触发 4 次 ADC 采样。

方法1 的内部连接示意如下:

“MM32F5

方法2 的内部连接示意如下:

“MM32F5

方法1 的整个步骤和定时器计数和触发波形如下图所示。读者可以试着自己推导 方法 2 的定时器波形和 CLU 逻辑表达式。

“MM32F5

Sensorless BLDC 过零检测

在 Sensorless BLDC 电机控制中,往往通过检测反电动势来判断电机当前所处的位置,而其中的关键在于对反电动势过零点的判断。这里,一种比较快速的方法是通过芯片内置的高速比较器来判断。

MM32F5270 中就包含了 3 路高速模拟比较器(COMP),可分别检测三相反电动势的过零点。

但真实情况下,MOS 管在导通和关断的瞬间会在反电动势上产生较大的毛刺,如下图所示。这个毛刺会导致比较器误判,因此,需要通过某种方法让比较器在 PWM 开关瞬间不工作。

传统的方法往往需要通过复杂的软件干预,如通过中断去定期使能和关闭比较器等。但这种方法会额外占用 CPU 带宽,特别是对转速要求较高的场景有较大限制。

“MM32F5

而 MM32F5270 通过 MindSwitch 和比较器的窗口功能可实现全硬件过零检测。

首先,MM32F5270 在模拟比较器中新增了窗口使能控制,仅在窗口信号有效时,比较器的输出结果才有效。

同时,可以采用某个定时器的输出通过 MindSwitch 连接到比较器的窗口信号上。

如果仅采用单个 TIM 通道输出,则不需要 CLU 的参与;如果需要多路信号逻辑组合后来产生一个更复杂的窗口信号,则可加入 CLU 运算。

“MM32F5

整个步骤和定时器计数和触发波形如下图所示:

“MM32F5

替代外部逻辑器件

在很多应用中,用户可能需要对某些信号进行逻辑组合,常见的逻辑运算包括与运算、或运算、非运算(取反)等基础单元以及更复杂真值表的组合逻辑运算。一般情况下,用户需要额外购买逻辑芯片(如 74 系列)来实现上述功能。

MM32F5270 通过 CLU 可以覆盖简单的逻辑芯片,从而帮助用户节省 BOM 成本。

这里,用户可以把需要进行逻辑组合的信号从 GPIO 输入,进入 CLU 进行逻辑组合,并将 CLU输出通过 GPIO交回给板级电路。此时的 MindSwitch 内部连接如下图所示:

“MM32F5

更灵活的 PCB 布线

在实际应用中,用户可能会遇到下面这种情况:

在芯片的引脚分布上,某个引脚的脚位和其相关外围电路的距离较远,从而导致无法通过单层布通。此时,如果功能引脚的脚位是可调的,就能很好的解决这个问题。

MM32F5270 也将这个功能集成到了 MindSwitch 中,可通过 MindSwitch 实现灵活的 PCB 布局布线。

如下图所示。假设 TIMER 输出的引脚是分布在芯片的左上角(橘黄色高亮),而其对应的外围电路位于 PCB 的右下角(蓝色方框)。可以看到,如果没有 MindSwitch,TIMER 输出需要很长的路径才能绕线到 PCB 右侧的外围器件上(如图中黄色路径)。这个路径是比较长的,且当布线层数较少时,可能无法成功布通,此时用户需要调整其原有的布局,PCB 布线的难度提高。

而通过 MindSwitch,用户可以将 TIMER 的输出连接到 MindSwitch 输入,并通过 MindSwitch 将其连接到芯片右下角的 GPIO 上 (橘黄色高亮),再以较短的路径连接到外围器件。通过 MindSwitch 给用户的布局布线提供了更高的灵活度。

“MM32F5

除了上述提到的 4 种典型应用场景,MindSwitch 和 CLU 还可以用于支持以下场景:

  • 方便用户调试 – 用户可以将内部信号通过 MindSwitch 引出到片外通过示波器等观测。
  • 灵活的波形组合 – 在一些复杂的应用中,需要用到非常规的控制波形,这样的波形可以通过多个定时器的输出波形进行逻辑组合产生。

需要强调的是,MindSwitch 和 CLU 的最大优势就是可以任意编程、任意重组。

笔者相信,我们的用户一定还可以将它们扩展到更多、更有趣的应用场景,让我们拭目以待吧。

小结 & NEXT

本文介绍了MM32F5270 中引入的全新外设间互联矩阵 MindSwitch 和组合逻辑单元 CLU 的功能和原理,并通过一些实例说明了 MindSwitch 和 CLU 对应用所带来的帮助。

未完待续!本文是 MM32F5 漫谈系列的第三篇,后续将为大家持续更新,旨在分享 MM32F5 系列中所包含的那些有趣的技术,敬请期待!

往期回顾

MM32F5 系列漫谈 1:“星辰” 处理器?!
MM32F5 系列漫谈 2:吞吐率最大化的总线设计

来源:灵动MM32MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 48

上一篇文章介绍了 MM32F5 系列 所采用的 “星辰”STAR-MC1 处理器,如果读者还有印象的话,“星辰”处理器相较于 M3 和 M4 处理器的一个主要优势是引入了内存子系统,包括了L1 指令和数据缓存接口和紧耦合 TCM 接口。而仅有内存子系统是不够的,需要配合高效率的总线架构设计来实现其功能最大化。

本期,笔者就来聊聊 MM32F5270 的总线架构设计,看看 F5270 是如何通过高并行度的总线设计实现系统吞吐率的最大化。

MM32F5270 的总线架构

下图展示了 MM32F5270 的总线架构,可以看到,系统中的处理器、存储和外设是通过一个零延迟 AHB 总线矩阵进行互联,这里的总线矩阵是一个多 Master 到多 Slave 的多层 AHB 总线结构。这里,把可发起读写访问的一方叫做 Master,响应访问的一方叫做 Slave。

注:AHB 属于 Arm® AMBA® 通信接口协议的一种,是嵌入式系统中的常用接口协议之一,对于不了解 Arm® AMBA® 接口协议的读者,可自行搜索相关资料,本文不再赘述。

“MM32F5

总线 Master – 访问发起者✦

从上图可以看到,MM32F5270 中包含了如下 AHB 总线 Master:

  • CPU – “星辰”STAR-MC1
  • DMA1
  • DMA2
  • USB 控制器(USB FS)
  • 以太网控制器(ENET)

其中,“星辰”处理器占据 三个 AHB 口,分别是系统总线AHBS(system bus),代码总线 AHBC(code bus),以及 TCM 总线 AHBT(TCM bus)。其中 AHBC 和 AHBS 是处理器发起访问,从外部获取数据和指令的通路,而 AHBT 是处理器以外的其它 Master(如 DMA等)访问内部 TCM 的通路,也就是说,TCM 不仅能被 CPU 访问,外部资源也可以将 TCM 当作普通 SRAM 访问。

其它Master 包括 DMA、USB 和以太网。在 MM32F5270中,为提高系统并行度,配置了两路独立的 DMA 控制器,每个 DMA 控制器包含 8 个通道,每路 DMA 都可以无需 CPU 干预而进行 Slave 的读写访问。USB 和以太网也可以做为总线 Master 直接发起对系统存储的访问,例如将提前放置在 SRAM 中的数据搬移到 TX FIFO 中以实现无需 CPU 干预而进行的数据通信。

总线 Slave – 访问响应者✦

MM32F5270 中包含了如下 AHB 总线 Slave:

  • 256KB 内置 Flash 存储器
  • 112KB SRAM1
  • 16KB SRAM2
  • QSPI – 可外扩四线 NOR Flash
  • FSMC – 8/16/32 位并口,可外扩 SRAM,NOR Flash,8080/6800 屏
  • 外设 APB1 组
  • 外设 APB2 组
  • 32KB ITCM和 32KB DTCM – 通过 AHBT 总线访问

为提高系统并行度,MM32F5270配备了两路独立的 RAM,包括 112KB 的 SRAM1 和 16KB 的 SRAM2,每个 RAM有独立的 RAM 控制器和 Slave端口。

此外,MM32F5270 还配备了 32KB 指令 TCM RAM(ITCM)和 32KB 的数据 TCM RAM(DTCM)。这里, TCM 和 CPU 是通过 TCM 接口直连的,相当于一条快速通道,CPU 访问 TCM 不需要经过外部总线矩阵,这也是 TCM 被称为紧耦合存储(Tightly-Coupled Memory,TCM)的原因。CPU 访问 TCM 是没有任何延迟的,因此也不需要经过缓存。同时,“星辰”处理器也预留了 AHBT 总线供 DMA 等 CPU 外部 Master 访问 TCM。这里的 AHBT 总线挂在总线矩阵的 Slave 端,也就是说,DMA 要访问 TCM 需要先经过总线矩阵。当 DMA 和 CPU 同时访问 TCM 时,“星辰”处理器以 CPU 访问为高优先级进行仲裁。需要说明的是,ITCM 支持程序执行和数据读取,其起始地址为 0x0000_0000,DTCM 支持数据读取,其起始地址为 0x2000_0000。

根据上述介绍可以得出,MM32F5270 里实际是配置了 4块完全独立的 RAM,包括 ITCM,DTCM,SRAM1 和 SRAM2,在某些应用场景下,这 4 块 RAM 能够同时被不同的 Master 访问而不会产生任何的总线冲突和等待。例如,CPU 可以读取并执行ITCM中存放的程序算法,以太网可以从 SRAM2 中读写数据,DMA1 可以从 DTCM中搬数据, DMA2 可以从 SRAM1中搬数据,这里的四条通路是完全独立和并行的。

MM32F5270还包含了两路独立的 APB 外设组,即 APB1 和 APB2,每个外设组有独立的 Slave 端口和AHB到 APB 的协议转换桥。

与此同时,用户还可以通过 FSMC 去外扩并口 NOR Flash 或者 SRAM,也可以通过 QSPI 去外扩四线式 NOR Flash。且这里的 FSMC 和 QSPI 都是直接挂在零延迟 AHB 总线矩阵上的 AHB Slave,因此其访问通路是完全独立的。当然,用户也可以通过 SPI、UART等串行总线接口来扩展更多存储空间,不过这些外设都是挂在 APB 总线上,和其它共同挂在 APB 总线的外设共享总线矩阵的 AHB Slave 端口,因此,可能会产生多余的等待周期。

需要说明的是,除了 TCM 和外设空间,从 Code bus 和 System bus 上读取的指令和数据基本上都可以被 4KB 指令缓存和 4KB 数据缓存加速。

下表对 MM32F5270 中支持的 Flash 和 RAM 资源做一个总结:

“MM32F5

并发网络✦

前文提到的总线结构图中,Master 和 Slave 的连接关系通过矩阵网络上的空心圆表示,如内置 Flash 仅可以被 CPU 的 code bus 或者 DMA 访问,而不能被其它总线 Master 访问。

基于上述描述所能达到的效果就是,多个 Master 可以同时发起对多个Slave的访问,如果每条路径的发起者(Master)和响应者(Slave)都是不同的,那这些访问是完全并行的,是不需要仲裁和等待周期的。

下图是一个并发访问的例子,这里,6个总线 Master 对 6 个总线 Slave 的访问构成了 6 个独立通路。当然,这里仅仅是一个极限情况,对于一个实际应用所能达到的并发效果,需要根据应用需求具体分析。

“MM32F5

案例:带显示的音频播放器✦

为了更直观的讲解 F5270 多并发总线设计的强大,这里以一个实际应用的案例来进行展示。需要说明的是,这里的案例仅仅为了讲解功能,并不做为参考设计。

这里,考虑基于 MM32F5270 制作一个带显示的音频播放器,这是一种很常见的应用场景,实际产品中所包含的功能可能是多种多样的,这里为了简化,以如下规格要求为例:

  • 可播放 SD 卡上的音频文件,支持 WAV 和 MP3 格式
  • 2.4寸屏,320x240 分辨率,GUI 交互

注:实际的产品可能有更多的功能,如更高清的显示、USB扩展、WIFI 或蓝牙联网、视频播放、触控等,感兴趣的读者可以搜索下网络上的相关产品。

基于这个要求,可以搭建一个带显示的音频播放器,根据 MM32F5270 所包含的片内资源,对上述规格要求做出如下的功能分解和资源分配:

“MM32F5

其对应的简易系统框图如下:

“MM32F5

分析可知系统的主要功能可以分为三块:

第一块是 CPU 处理部分。

首先, CPU 所执行的主程序存放在内置 256KB Flash 中,而运行中所需要内存存放在 SRAM1 中,其数据通路如下图中的蓝色箭头所示;

同时,CPU 需要从外部 SD 卡读取音频文件,这里涉及到文件系统的交互,以及 MP3 软解码运算,并将解码后的音频数据存放在 32KB DTCM 中,其数据通路如下图中的黄色箭头所示;

最后,CPU 需要运行 GUI 应用程序,包括从外扩 Flash 中获取显示数据和字库,通过 CPU 的运算并将待显示的图像缓存到外扩 SRAM 中,其数据通路如下图中的绿色箭头所示。

“MM32F5

第二块是音频播放数据流控制。

这里,通过 DMA1 来处理音频数据流,DMA1 通过 AHBT 总线从 DTCM 中读取解码后的音频数据,并写入 I2S 的 TX FIFO 中,通过 I2S 和外部的功放通信并驱动扬声器或耳机,其数据通路如下图中的红色箭头所示。

第三块是图像显示数据流控制。

这里,通过 DMA2 来处理图像显示数据流,DMA2 通过 FSMC 从外部 SRAM 中读取待显示图像,并通过 FSMC 写入外部 LCD 屏,实现图像帧的周期性刷新,其数据通路如下图的紫色箭头所示。

“MM32F5

基于上述分析,将所有路径进行汇总,并删掉非独立路径后(即两条路径有共同发起者或共同接收者),可得到下图所示的汇总数据通路。可以看到,主程序的指令获取和执行(蓝色箭头)、主程序数据读写(蓝色箭头)、音频数据流(红色箭头)和GUI数据流(紫色箭头)这四条通路是完全独立的。假设系统运行在 120MHz,而所有访问都采用 32 位宽,则可以计算出此时整个系统的并行吞吐率可达 15Gbps!

“MM32F5

当然,这里仅仅是一个精简的例子,对于实际应用,其所需功能可能会更加复杂。但重要的是,MM32F5270 的多并发总线架构为各类实际应用中的并行处理场景提供了硬件支持,使系统整体吞吐率有了大幅优化的空间。

需要补充说明的是,这个例子里面并没有用到 SRAM2 和 ITCM 等资源,因此其可以用作其他用途,如 SRAM2 可以用作 ENET、USB 、CAN 或者 ADC的数据缓存,而ITCM 中可以存放对实时性要求较高的算法或中断服务程序等。如果把这些功能都开发起来,则系统吞吐率是否还可以进一步提高呢?这个问题就留给感兴趣的读者来思考吧。

小结 & NEXT✦

本文介绍了MM32F5270 中所采用的多并发总线架构,并通过带显示的音频播放器的实例说明了该架构在实际应用中所能达到的吞吐率提升效果。

未完待续!本文是 MM32F5 漫谈系列的第二篇,后续将为大家持续更新,旨在分享 MM32F5 系列中所包含的那些有趣的技术,敬请期待!

往期回顾

MM32F5 系列漫谈 1:“星辰” 处理器?!

来源:电子创新网张国斌
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 56

目 录

“星辰”处理器是什么?

看似很厉害,跑个分?

C 代码兼容 M3 和 M4

完善的生态支持

小结 & Next

近期,灵动微电子发布了灵动“星”平台,其全新高性能 MM32F5 微控制器系列。该系列在内核、总线和外设配置等多个方面进行了创新,内核上更是首次搭载了 Armv8-M 架构的 “星辰” STAR-MC1 处理器,因此一经发布就获得了大量用户和媒体的关注。

很多用户会咨询“星辰”处理器相关的问题,特别是“星辰”处理器是什么样的内核?相较于 Arm Cortex-M 系列内核又有什么差别?这里,为了让大家对“星辰”处理器有一个快速的了解,并解答上述的这些问题,本文对“星辰”处理器的主要特色做一个梳理。

“MM32F5

“星辰”处理器是什么?

如果用一句话介绍“星辰”处理器,那就是:安谋科技设计的一款基于 Armv8-M 架构的嵌入式处理器。这里,安谋科技是中国最大的芯片设计 IP 开发与服务供应商,而灵动微电子则是从安谋科技获得了该处理器的正规使用授权,并于 MM32F5 系列中首次搭载了该处理器。

“星辰”处理器的几大特点如下:

采用最先进的Armv8-M架构

处理器是基于指令集架构设计实现的运算和控制单元,而 Arm 处理器的指令集架构自诞生以来也在不断的更新换代,目前市面上较为常见的 Arm MCU 架构包括 Armv6-M、Armv7-M和 Armv8-M 架构,其中,Armv6-M 架构的典型处理器有 Cortex-M0 和 Cortex-M0+,Armv7-M 架构的典型处理器有 Cortex-M3、Cortex-M4 和 Cortex-M7,而 Armv8-M 架构的典型处理器则有 Cortex-M23、Cortex-M33、Cortex-M55 和 “星辰”STAR-MC1。

经常关注 MCU 前沿动态的话一定会有所了解,近几年来国际上最主要的几家 MCU 大厂的新产品已经逐渐从 Armv7-M 架构过度到了 Armv8-M 架构,如ST、NXP、Renesas等。那么 Armv8-M 架构相较于 Armv7-M 架构,究竟有哪些优势?

性能提升

Armv8-M 架构优化了指令集和流水线设计,其同级别产品的性能相较于 Armv7-M架构普遍提高20% 以上。

更安全

Armv8-M 架构引入了 TrustZone 技术,并强化了内存保护单元(MPU),让代码运行在更安全的环境中。

可扩展

Armv8-M 架构引入了协处理器接口,允许 MCU 产商自己开发协处理器和自定义指令,相较于传统的基于地址映射和中断的协处理器可大幅提升执行效率。特别是Armv8.1-M架构,还预留了用户自定义指令的接口。

集成 DSP 和 FPU

弥补了 Cortex-M3 的短板,DSP 性能相较于 Cortex-M3 提升10倍。

集成内存子系统

在计算机体系结构中,除了处理器内核的设计外(指令集、流水线、ALU等等),存储架构的设计也是重要的一环。在特定应用场景下,高效率的存储访问对系统整体性能所带来的提升效果可能比提高内核性能本身还要来得明显。而提升存储访问效率的方法往往有两个:

层次化设计(Memory Hierarchy)

层次化设计的核心是缓存(Cache)。在嵌入式系统中,处理器运行速度远快于 Flash 的运行速度(典型值是 2:1 到16:1), 而处理器要从 Flash 中获取执行代码,如果 Flash 速度不做优化的话,可以说处理器跑的再快也会受到 Flash 读取速度瓶颈的制约。而最有效的解决方法就是在处理器和 Flash 之间加入缓存,这里的缓存可能是多层的,一般把靠近处理器一端的缓存叫做一级缓存(Level 1或简写为 L1),而靠近 Flash 一端的缓存叫做二级缓存(Level 2 或简写为 L2),一般情况下,因 L2 缓存和 CPU 之间还间隔了一个总线矩阵,因此 L1 缓存的效率往往高于 L2 缓存。

增加并行访问路径提高吞吐率

一般而言,越高性能的内核,其并行访问通路越多,多条通路可并发访问,因此系统吞吐率可以成倍增长。如Cortex-M0 和 Cortex-M0+ 仅有一条系统总线,指令和数据均通过一条总线访问;Cortex-M3 和 M4 中将指令和数据进行了区分,可以在取指的同时获取数据;Cortex-M7 则进一步引入了指令紧耦合 RAM (以下简称 ITCM)总线和数据紧耦合 RAM(以下简称 DTCM)总线,以及引入了独立外设总线(AHBP)。

而“星辰“ 处理器所集成的内存子系统同时采用了上述的两种技术。

首先,“星辰”处理器配置了 L1 指令和数据缓存,该缓存和内存紧耦合,可以用来加速任何指令和数据总线上的访问,这里包括内置 Flash 和 SRAM中的指令和数据,以及外置 Flash 、TF 卡、外置 RAM的指令和数据等。

同时,“星辰”处理器也引入了独立的 ITCM 接口和 DTCM 接口,用于访问与处理器紧耦合的指令和数据 RAM,处理器对于 TCM 的访问完全可以和指令和数据总线的访问并行执行。而且,当 CPU 不访问 TCM 时,TCM 也可以被 DMA 等外设通过独立的 TCM总线(AHBT)访问。

在 Armv7-M 架构处理器中,内存子系统仅在最高性能的 Cortex-M7 上才有配置。“星辰”处理器配备上内存子系统可以大幅提高系统吞吐率。

本土团队打造

在目前的国际形势下,国外对出口到我国的关键技术的管制风险一直没有缓解,而不断出现的国际纷争更是加剧了这种风险的可能性。如何应对随时可能加码的出口管制风险,做到在核心技术上不被“卡脖子”,关乎国产半导体的命脉,是所有国内半导体人需要共同面对和思考的问题。

“打铁还需自身硬”,应对出口管制和贸易战的风险,打造完全自主可控的本土半导体供应链是必要的。而据安谋科技介绍,“星辰”STAR-MC1 处理器由安谋科技本土团队设计打造,本土技术的占比高于90%,因此,真正意义上做到了自主可控。

总结而言,“星辰”STAR-MC1 处理器是一款采用了先进架构、优化了总线和存储配置、且完全自主可控的高性能处理器。

“MM32F5

看似很厉害,跑个分?

基于上述的介绍, 大家可能还是没办法直观的感受到 “星辰”处理器的强大,那下面就以国际通用的 CoreMark 跑分结果来进行说明。

下图列举了 “星辰”STAR-MC1 处理器的标称 CoreMark 跑分和同级别 Cortex-M 内核的比较。可以看到,STAR-MC1的跑分为 4.02 CoreMark/MHz,其相较于 Cortex-M3 提升了 20%,相较于 Cortex-M4 提升了 17%。因此,从核心性能而言,STAR-MC1 是一款介于 Cortex-M4 到 Cortex-M7 之间的处理器。

“MM32F5

需要说明的是,这里的跑分数值是各处理器的理论极限值,该理论极限值一般可通过把 CoreMark 代码放在零延迟 RAM 中执行而获得。而在实际应用中,用户的程序往往是从 Flash 中执行,如果存储层次设计不好,其所获得的 CoreMark 跑分结果将大打折扣。

而得益于 STAR-MC1 出色的内存子系统设计,保证了其 Flash 跑分结果和理论极限值几乎没有差别。

根据 MM32F5270 芯片上的实际测试结果,当 L1 缓存打开时,从Flash 中执行 CoreMark 的跑分结果是 3.97 CoreMark/MHz,该数值达到了理论极限值的 99%。因此,当用户在 Flash 中执行程序的时候,依然可以获得相较于 Cortex-M3 和 Cortex-M4 的理论极限值约 20% 的性能提升。

同样因为 STAR-MC1 出色的内存子系统设计,在 Flash 执行代码的前提下,搭载 STAR-MC1 并开启了内存子系统的 MM32F5 系列相较于搭载了 Cortex-M3 或 Cortex-M4 的芯片而言,能够更接近其理论极限值。因此,如果以 Flash 中实际运行的结果来对比 STAR-MC1 和市面上的 Cortex-M3 和 Cortex-M4 芯片,STAR-MC1 将带来 30%~50% 的性能提升。

C代码兼容M3和M4

综合以上 “星辰” STAR-MC1 处理器的介绍,可以说 STAR-MC1 是 Cortex-M3 和 Cortex-M4 的理想升级选择。

那么,假如用户从上述 Armv7-M 处理器切换到 Armv8-M 架构的 STAR-MC1 处理器时,是否很难移植呢?当然不是!

STAR-MC1 和 Cortex-M3 和 Cortex-M4 都是基于 Arm指令集架构的处理器,因此,其兼容性还是很高的,但由于底层指令集架构由 Armv7-M 过渡到了 Armv8-M ,因此,其无法做到完全的二进制兼容,但STAR-MC1 实现了从 Cortex-M3 和 Cortex-M4 移植时的 C 代码兼容。因此,假如用户的代码是基于 C 语言编写,则完全不用担心兼容性。

完善的生态支持

很多用户会咨询 STAR-MC1 的工具支持状况、是否支持 KEIL等问题。这个大家也可以完全放心,STAR-MC1 作为一款通用的嵌入式处理器,其目前已经获得了非常完整的生态体系支持。

下图列举了 STAR-MC1 截止目前的生态工具支持情况,可以看到,STAR-MC1 在工具链、编译器、操作系统和仿真器方面都获得了主流工具的支持:

工具链

在工具链方面,STAR-MC1 已经获得了 Arm DS、Keil、IAR、SEGGER Embedded Studio、Lauterbach TRACE32 等主流 IDE 的支持。

编译器

在编译器方面,STAR-MC1 已经获得了 GCC、Arm Compiler、IAR Compiler、SEGGER Compiler 等主流编译器的支持。

仿真器

在仿真器方面,STAR-MC1 已经获得了 ULINKPRO、ULINK2、DSTEAM、SEGGER J-Link Base/Plus、J-Link Ultra/Pro 的支持。

操作系统

在操作系统方面,STAR-MC1 更是已经获得了 MbedOS、freeRTOS、Zephyr、OpenHarmony 的支持。

“MM32F5

小结 & Next

“星辰”STAR-MC1 处理器是一款 Armv8-M 架构的高性能嵌入式处理器,由安谋科技本土团队打造,集成了出色的内存子系统,并获得了完整的生态支持,是升级 Cortex-M3 和 Cortex-M4 内核的理想选择!

未完待续!本文是 MM32F5 漫谈系列的开篇,后续将为大家持续更新,旨在分享 MM32F5 系列中所包含的那些有趣的技术,敬请期待!

来源: 灵动MM32MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 179

4月12日,本土MC厂商上海灵动微电子股份有限公司(以下简称“灵动微电子”)联合安谋科技高调宣布进入高性能MCU领域,正式发布搭载安谋科技的“星辰”STAR-MC1处理器的MM32F5系列MCU ,据灵动微市场总监王维介绍,该MCU采用Arm v8-M Mainline架构,集成DSP和FPU ,性能高达4.02CoreMark/MHz!

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

王维表示M32F5系列是灵动在高性能MCU上的一个探索,也为其未来整个高性能MCU平台发展起到助力作用。灵动微希望据此系列杀入高端工业互联网应用。

“灵动微市场总监王维"
灵动微市场总监王维

“大家都知道,ST的Cortex-M3从是2007年夏天推出,到现在已经差不多15年了,而NXP也是在2008年左右推出Cortex-M3、M4的MCU,我们今天推出的高性能系列,是对以前M3M4内核MCU的一个升级,我们在同样的主频前提下对MCU的能效升级,能适应目前更多的需求。”王维指出,“目前,ST和NXP也有更高性能的产品系列,例如主频超过500MHz或者更高的产品,它们的架构和总线有新的设计,已经是MPU的层面,通过增加DSP它们也可以做一些人工智能的处理,我们对这些产品还在关注,考虑是否增加DSP架构 ,因为安谋科技有针对机器学习的周易平台,我们还在协商未来的架构。我们的高性能系列会支持本土的操作系统,例如鸿蒙系统、阿里OS或者是RT-Thread等等。当然也支持一些海外的Free RTOS。”

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

王维进一步分析说近年来,人工智能、物联网、工业自动化领域市场发展飞速,特别是安防、民生和智能家居等行业发展迅速,其年增长率超1500%;在疫情后,非接触的人机交互设备以及对于语音和视觉的技术需求增长也越来越快;在过去的三年内,据一些数据统计,国内工业企业的增长率已超过200%,包括常见的工业自动化升级改造。现在国内的工业企业不单是为了满足国内的需要,更占据不少海外的市场份额。

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

“但我们也看到一个非常大的问题,就是虽然过去一两年整个国产MCU市占率比三年五年前提高了很多,但在高性能MCU领域,本土市占率还是很低的,甚至低于处理器行业国产化率占比,主要原因是在处理器领域,整个架构和生态相对来比较完整,但在MCU领域,架构分散,生态碎片化、算法优化难易程度不同,所以目前高性能MCU领域还是以欧美厂商产品为主,所以灵动微电子经过严谨的评估后选用了安谋科技Armv8-M Mainline架构的“星辰”STAR-MC1内核来开发高性能MM32F5系列MCU产品。”王维强调。

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

为何选用安谋科技星辰STAR-MC1处理器内核?

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

安谋科技CPU产品总监陈江杉指出从上图可以看出,实际上,ARM Cortex-M3,M4内核都是基于ArmV7架构,而安谋科技的“星辰”STAR-MC1内核则是基于Armv8-M Mainline架构,这两者在架构上是不同的。

据介绍,相对于Arm Cortex-M4,在同等工艺和功耗前提下“星辰”STAR-MC1内核有约20%的性能提升,Cortex-M4的MIPS是1.15DMIPS/MHz,“星辰”STAR-MC1内核能做到1.5 DMIPS/MHz & 4.02 Coremark/MHz;

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

此外,“星辰”STAR-MC1处理器搭载了接近Cortex-M7的内存系统总线结构,并且具备v8M独有的可定制指令接口,可以灵活地去定制用户特定指令,以提升系统效率。同时,客户也可以用这套机制去做一些差异化,来保证自己的知识产权;

还有,“星辰”STAR-MC1处理器的生态系统不仅有Arm自家的DS和Keil MDK工具,也包含第三方的IAR、SEGGER、Lauterbach等一些工具链。“星辰”STAR-MC1处理器在各类第三方编译器、操作系统、仿真器也受广泛支持,便于工程师在开发设计时快速上手。

“‘总结一下就是星辰’STAR-MC1处理器着重解决了三个问题,第一个是安全,信息安全trust zone这个技术可以提升整个系统级别的这个安全处理能力,提供更全面的一个内存保护的机制。其次是高效计算,“星辰”处理器的设计目标是一个性能功耗均衡的配置,相对于M4,它会有大概20%的性能提升。第三是灵活的扩展接口。”他强调。“此外,我要强调,我们内部请法务专家做了评估,这个“星辰”处理器美国所占技术比例不到10%,所以可以满足本土厂商的需求。”

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

他表示目前“星辰”处理器产品和生态日益完善,已经有超过70个授权,有60多个Design-IN,截止2021年年底整体出货超过一亿颗!

此外他表示“星辰”处理器也是面向全球提供,其在信息安全等级上较高,已经被中国客户广泛接受,希望可以广泛应用到嵌入式领域。

灵动的MCU布局与MM32F5系列介绍

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

王维表示近两年来,随着MCU需求暴涨,全球MCU产能紧张,为了稳定供货提升产能,灵动微从去年11月开始,率先将MCU从8寸晶圆向12寸晶圆迁移,另外就是从11月开始,保持每月发布一款新产品的速度。去年年底灵动微已经发布了针对汽车、电机应用的产品系列,这次是新内核新架构,五月灵动微还有新品发布!

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

本次灵动微发布了高性能MM32F5系列平台中,它有三个系列的规划布局:

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

MM32F52系列,120MHz“星辰”处理器,主流升级、MM32F53系列,150MHz“星辰”处理器,产能扩充、MM32F55系列,200MHz“星辰”处理器,应用拓展。

这三个系列构成了灵动在今后高性能平台上的主线,面向日益智能化的嵌入式系统需要。

王维表示灵动微的F5系列采用了专用的内存子系统以及高并发总线设计。

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

“在我们芯片的整个外设设计、模块设计上面,可以帮助拓展到更多新型应用。”他强调,“我们的研发团队还独创了一些专业模块,例如在这个F5系列里面,我们首次加入了MindSwhich这样一个专门模块,这个模块其实可以在任意的外设和GPIO之间实现独立互联,客户可以通过这个独立互联结合我们多路组合逻辑处理单元,在不需要CPU干预的情况下面可以完成更多操作处理。”

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

他表示灵动将会在本季度双首发两款MM32F52系列产品,分别是MM32F5270和MM32F5280,其主要差别是存储容量及部分外设配置,对于内核、高级通信接口等功能两款产品是一致的。

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

MM32F5系列配套软硬件平台

据介绍,作为灵动的一款全新的高性能MCU系列,灵动同步发布配套的新的软硬件平台。在开放评估板上,灵动推出了面向MM32F系列的Plus Board,为用户提供更全面的评估开发体验。主要的接口功能都能在一块开发板上进行评估,如以太网、USB、FlexCAN、SD卡、选配的LCD彩屏显示、舵机接口、传感器模块等。

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

在软件上,灵动新推出MindSDK开发套件,包含驱动程序、功能组件、样例工程及演示工具等。从整个MindSDK组成来说,除了提供相应的兼容CMSIS-Core和CMSIS-DSP的架构外,还会提供专门的基于HAL或是基于操作系统层面的软件驱动,以及对应的样例工程和丰富的集成化参考设计。在软件的驱动程序案例库里,除了基本的调用,还会针对中断方式或者DMA等方式来提供样例。随着智能化的需求增多,电子系统的设计日益复杂化,软件的功能和复杂程度将会越来越大,灵动新推出的MindSDK开发套件可以解决这些问题,满足高性能系统的开发需求。

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

MM32F5作为一个通用高性能的MCU平台,对于不同的应用场景和项目需要,客户可以从中选择所需的功能接口。同时,灵动也提供不同封装形式如64,100和144pin,以及-40~105℃的扩展工业级产品选项供客户选择。若要了解更多关于灵动MM32F5产品的信息,请登录灵动官网查看:

“灵动微杀入高性能MCU领域!推出采用安谋科技“星辰”内核的MM32F5系列!"

他透露5月灵动微将发布一款低功耗产品,以“低功耗和全新应用”为亮点,这将是一款什么产品?我们拭目以待吧!(完)

来源:电子创新网张国斌
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 56

4月12日,上海灵动微电子股份有限公司(以下简称“灵动微电子)联合安谋科技发布高性能MM32F5系列MCU产品。此款产品在架构和外设设计上做了多处创新以适应高端应用市场。

“灵动微电子发布高性能MM32F5系列MCU产品"

全系标配安谋科技“星辰”STAR-MC1处理器

近年来,人工智能、物联网、工业自动化领域市场发展飞速,特别是安防、民生和智能家居等行业发展迅速,其年增长率超1500%;在疫情后,非接触的人机交互设备以及对于语音和视觉的技术需求增长也越来越快;在过去的三年内,据一些数据统计,国内工业企业的增长率已超过200%,包括常见的工业自动化升级改造。现在国内的工业企业不单是为了满足国内的需要,更占据不少海外的市场份额。

我们从中看到一个大的问题:虽然国产的MCU产品的市占率比几年前提高了很多,但在高性能MCU产品上,国产的市占率还是非常低。主要原因是:国内企业对高性能产品的支持和布局还不够完善。另外,MCU的开发和应用环境有非常多差异化的生态要求。碎片化的生态加上不同算法的门槛,这些都是国产高性能MCU面临的挑战,所以灵动微电子经过严谨的评估后选用了安谋科技Armv8-M Mainline架构的“星辰”STAR-MC1内核来开发高性能MM32F5系列MCU产品。

“灵动微电子发布高性能MM32F5系列MCU产品"

安谋科技“星辰”STAR-MC1内核优势

Armv8-M Mainline架构的“星辰”STAR-MC1内核优势:

  • 相对于Arm Cortex-M4,在同等工艺和功耗前提下“星辰”STAR-MC1内核有约20%的性能提升,Cortex-M4的MIPS是1.15DMIPS/MHz,“星辰”STAR-MC1内核能做到1.5 DMIPS/MHz & 4.02 Coremark/MHz;
  • 灵活的扩展接口,“星辰”STAR-MC1处理器搭载了接近Cortex-M7的内存系统总线结构,并且具备v8M独有的可定制指令接口,可以灵活地去定制用户特定指令,以提升系统效率。同时,客户也可以用这套机制去做一些差异化,来保证自己的知识产权;
  • “星辰”STAR-MC1处理器的生态系统不仅有Arm自家的DS和Keil MDK工具,也包含第三方的IAR、SEGGER、Lauterbach等一些工具链。“星辰”STAR-MC1处理器在各类第三方编译器、操作系统、仿真器也受广泛支持,便于工程师在开发设计时快速上手。

“灵动微电子发布高性能MM32F5系列MCU产品"

为什么选择“星辰”STAR-MC1内核?

灵动之所以选择“星辰”STAR-MC1处理器,是因为STAR-MC1内核作为由安谋科技的本土团队打造的处理器架构系列,在性能上比Cortex-M3/M4提升了很多,其4.02的Coremark的跑分在Arm架构的MCU领域里名列前茅;在系统架构上,通过更高性能的存储器架构(如独立的Cache和TCM),MM32F5系列MCU能提供系统层面的更高的系统级多并发;还有Arm 的软硬件生态是业界公认的,MM32F5基于STAR-MC1内核,也适用于各类现有的编译工具,对于软件开发人员来说,可以非常快速地从一种Arm架构的开发转至STAR-MC1。对于灵动来说,MM32的产品已有成千上万的用户在使用,因此平台化和易用的编译工具也是至关重要的,MM32F5系列可以作为灵动的新老客户在产品升级上的一种选项;最后,在目前的大环境下,保持供应链的独立和安全性也是需要考虑的方面,在这一点上,STAR-MC1也能提供相应的保障。在供应链安全性问题上,除了内核本身,像FAB厂、封装测试厂等,都会保证灵动MM32系列产品生产的安全性。

结合内核性能和存储器架构性能的提升,基于安谋科技“星辰”STAR-MC1内核的MM32F5系列平台,不仅在整体性能上比Cortex-M3/M4产品高出50%左右,芯片的系统层面性能的提升其实更高。

  • 丰富的通信接口:MM32F5系列集成了以太网、USB、 FlexCAN接口和多达14组的串行通信接口,特别适合工业和汽车相关应用。
  • 大容量存储:MM32F提供了从256KB到2MB的Flash选项,并使用了双分区配置,可提高系统运行的稳定性。
  • 在模拟功能上,提升了SAR ADC和定时器的配置。3Msps采样率和256倍过采样设计的12b ADC,及支持8路的互补PWM输出的定时器,让灵动专业的电机控制技术更进一步。
  • 在MM32F5系列上,灵动的研发团队引入了独创的专业功能模块,如MindSwitch,它是一种在任意外设和GPIO之间实现独立互联的机制,结合多路组合逻辑处理单元CLU,完成更多无需CPU干预和处理的互联功能。

MM32F5系列平台布局

在MM32F5系列平台中现有三个系列的规划布局:

  • MM32F52系列,120MHz“星辰”处理器,主流升级
  • MM32F53系列,150MHz“星辰”处理器,产能扩充
  • MM32F55系列,200MHz“星辰”处理器,应用拓展

这三个系列构成了灵动在今后高性能平台上的主线,面向日益智能化的嵌入式系统需要。

“灵动微电子发布高性能MM32F5系列MCU产品"

灵动将会在本季度双首发两款MM32F52系列产品,分别是MM32F5270和MM32F5280,其主要差别是存储容量及部分外设配置,对于内核、高级通信接口等功能两款产品是一致的。

“灵动微电子发布高性能MM32F5系列MCU产品"

MM32F5系列配套软硬件平台

作为灵动的一款全新的高性能MCU系列,灵动同步发布配套的新的软硬件平台。在开放评估板上,灵动推出了面向MM32F系列的Plus Board,为用户提供更全面的评估开发体验。主要的接口功能都能在一块开发板上进行评估,如以太网、USB、FlexCAN、SD卡、选配的LCD彩屏显示、舵机接口、传感器模块等。

“灵动微电子发布高性能MM32F5系列MCU产品"

在软件上,灵动新推出MindSDK开发套件,包含驱动程序、功能组件、样例工程及演示工具等。从整个MindSDK组成来说,除了提供相应的兼容CMSIS-Core和CMSIS-DSP的架构外,还会提供专门的基于HAL或是基于操作系统层面的软件驱动,以及对应的样例工程和丰富的集成化参考设计。在软件的驱动程序案例库里,除了基本的调用,还会针对中断方式或者DMA等方式来提供样例。随着智能化的需求增多,电子系统的设计日益复杂化,软件的功能和复杂程度将会越来越大,灵动新推出的MindSDK开发套件可以解决这些问题,满足高性能系统的开发需求。

“灵动微电子发布高性能MM32F5系列MCU产品"

MM32F5作为一个通用高性能的MCU平台,对于不同的应用场景和项目需要,客户可以从中选择所需的功能接口。同时,灵动也提供不同封装形式如64,100和144pin,以及-40~105℃的扩展工业级产品选项供客户选择。若要了解更多关于灵动MM32F5产品的信息,请登录灵动官网查看:
https://www.mindmotion.com.cn/products/mm32mcu/mm32f/mm32f_performance/

来源:灵动MM32MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 59
订阅 RSS - MM32F5