松果派ONE,基于国产ARM Cortex-M4

松果派 SWM320 评测
xukejing
发布时间: 2019-06-12
阅读: 5008

在儿童编程教育领域,我们过去已经在电子芯吧客社区了解过一款基于STM32F405RGT6芯片的MicroPython开发板。由于MicroPython有大量相对浅显易懂的实例,小朋友们能在实践中快速入门,这使MicroPython成为了近年来开源社区中的一颗新星,并与ArduinoScratch等项目共同组成的儿童编程教育的“三剑客”。

  

MicroPython中文社区的邵老师一直致力于MicroPython的开发和推广,电子芯吧客社区曾经做过一期《MicroPython入门指南》的推广活动,让国内的电子爱好者们更加深入地了解了这个有趣的项目。总所周知,MicroPython可以支持的硬件芯片/平台较多,比如STM32F4STM32L4STM32F7STM32H7ESP8266ESP32;当然更少不了荔枝派社区一枝独秀的Sipeed K210,它的图像识别速度甚至能秒杀STM32H7,提前尝鲜的老哥儿已经乐得要拿玉玺给泽畔砸核桃了。

  

在众多方案中,ST公司的系列MCU芯片在MicroPython硬件项目中占据了很大的份额。然而,最近越来越多的美国芯片公司都开始对华禁售芯片了。如果ST公司的货源被切断,一定程度上还是会影响MicroPython在国内的推广的。因此,MicroPython中文社区的小伙伴们还是很着急的,大家在新型号MicroPython开发板硬件选型时候都很谨慎,要尽量规避美国芯片了。近日,松果社区的小董给我们带来了一个全国产方案的MicroPython开发板,叫松果派ONE;并且解除了我们对ST公司芯片的依赖。接下来,让我们用热烈的掌声有请松果派ONE登场吧。

 松果one-swm320.JPG

  

松果派ONE的主控芯片是与STM32F405同规格的SWM320芯片,同样是ARM Cortex-M4核心,主频也相同,并且引脚可以通过交叉映射兼容。开发板的LDO是国产AMS1117 3.3,然后USB转串口芯片是我们国内玩家最喜闻乐见的CH330系列。松果派ONE的软硬件都使用GPL协议开源,资料全部共享在Github上,项目名称为PineconePi_ONE

 

  

今天我们收到的这块松果派ONE是全新的,MCU还没有烧写固件。所以在试用前,我们要把MicroPython固件烧写到芯片上。与STM32F405一样,SWM320除了可以通过SWD下载固件,也可以通过拉高BOOT引脚进行ISP启动然后通过串口下载固件。BOOT引脚见原理图,当它被拉低时,从内部FLASH启动;当它被拉高时,从ISP启动。

 boot引脚.JPG

  

我们先打开SYNWIT ISP串口下载软件,并读取MicroPython固件文件。如果你事先已经git clonePineconePi_ONE项目,这个固件文件应该可以在MicroPython文件夹下的firmware文件夹下找到,如下图所示:

 刷micropython.JPG

  

我们先让SWM320ISP模式启动,打开串口,然后握手。这里我们可以使用一下握手后自动下载的功能,一旦识别到SWM320芯片并且握手成功就会自动完成下载,如下图所示。

 下载micropython.JPG

  

上面那一步会把MicroPython固件烧写到SWM320FLASH。固件下载完毕后,取消BOOT脚的外部上拉。由于PCB上本身就有下拉电路,所以它默认就是被拉低的;如果重新上电启动,就会从FLASH启动。

下面,我们打开串口调试软件来使用MicroPython吧(这里用的串口软件是Putty)。串口波特率是115200。这里特别要注意FlowControl流量控制的设置值,当与MicroPython通信时不能用Xon/XoffDTR等模式,而是需要设置为None。串口设置可以参考下图。

 5串口设置.JPG

  

打开串口后就可以正常操作MicroPython了。入门玩家学习基础操作前可以先看看邵老师的《MicroPython入门指南》。对于有一定的Python使用经验的玩家,也可以跟着网上的教程自学。对于老司机,那就直接上手玩吧。先导入machine库,我们可以看一下MCU的频率。我们可以发现主频120MHz,具体命令和返回如下图所示。

 7machinepin方法.JPG

  

大多数人上手开发板会从helloworld和点灯开始。由于pythonhelloworld实在是太简单了(就一句print函数),所以我们直接跳过helloworld,直奔点灯吧。

硬件上,先把一个LED串联上100欧电阻接到PA0引脚和GND引脚。在这个实验里,我们只要把PA0引脚的电平拉高,就可以把LED点亮。

Pin函数库含在machine库里,我们可以通过machine.Pin的方式使用它,举例如下

 7machinepin方法.JPG

或通过from machine import Pin的方式使用它,举例如下

 8from.JPG

以上两个方法是等效的,都能把对应的PA0引脚电平拉高,实验效果如下图所示,一颗红色LED被点亮。

 9点亮.JPG

  

在上面的这个实验里,灯只有亮灭两种状态,亮度不可调节。为了调节亮度,需要使用PWM点灯。所以,我们继续尝试一下PWM做呼吸灯(亮度连续变化)。

依然使用PA0引脚。PWM的时钟为15MHz,每15000个时钟周期就是1毫秒,于是可以形成1kHzPWM信号。其中PWMpwm.duty()的输入值(值域015000)可以控制LED亮度,这里我们使用01000来控制呼吸灯。测试代码及其在命令行里的运行过程如下图所示,注意代码缩进:

 10PWM呼吸灯.JPG

  

呼吸灯效果如下图GIF图片所示:

 1559918350163.gif

  

最后,还是大家都想看的跑分测试啦。

我们输入三个函数,如下图

 11速度测试代码.JPG

  

上图中,men函数用于内存释放,int add test函数测试一百万次整型加法,int mul test函数测试一百万次整数乘法。

以上三个函数都来自邵老师的github地址: https://github.com/shaoziyang/micropython_benchmarks

  

下面是松果派ONE的成绩。我们用int_add_test()int_mul_test()分别测试整数加法和乘法的运算速度。每一百万次整数加法耗时8090毫秒,也就是8.09秒;每一百万次整数乘法耗时9388毫秒,也就是9.388秒。

 12测试成绩.JPG

  

下图是邵老师提供的目前的MicroPython系列开发板的跑分表,其中的时间单位是秒。通过对比可以发现,在跑MicroPython平台的加法与乘法时,松果派ONE的速度与STM32F405相比还是慢了一倍多。

跑分表.JPG

通过比较可以发现,松果派ONE(SWM320,主频120MHz),跑MicroPython的性能大约与80MHzSTM32L476相当

 


原创作品,未经权利人授权禁止转载。详情见转载须知 举报文章

点赞 (2)
xukejing 擅长:其他应用
评论(0)

登录后可评论,请 登录注册

相关文章推荐
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回

我要举报该内容理由

×
请输入您举报的理由(50字以内)