简 介: 对于截止到(2021-11-08 21:13:44)来自灵动的MicroPython在MM32F3277上的一致的基本功能进行测试。并给除了MicroPython的相关模块的の基本测试调用版本。

关键词MM32F3277MicroPython

#mermaid-svg-9AnpZ3iNHu3JMfBx .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .label text{fill:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .node rect,#mermaid-svg-9AnpZ3iNHu3JMfBx .node circle,#mermaid-svg-9AnpZ3iNHu3JMfBx .node ellipse,#mermaid-svg-9AnpZ3iNHu3JMfBx .node polygon,#mermaid-svg-9AnpZ3iNHu3JMfBx .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-9AnpZ3iNHu3JMfBx .node .label{text-align:center;fill:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .node.clickable{cursor:pointer}#mermaid-svg-9AnpZ3iNHu3JMfBx .arrowheadPath{fill:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-9AnpZ3iNHu3JMfBx .flowchart-link{stroke:#333;fill:none}#mermaid-svg-9AnpZ3iNHu3JMfBx .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-9AnpZ3iNHu3JMfBx .edgeLabel rect{opacity:0.9}#mermaid-svg-9AnpZ3iNHu3JMfBx .edgeLabel span{color:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-9AnpZ3iNHu3JMfBx .cluster text{fill:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-9AnpZ3iNHu3JMfBx .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-9AnpZ3iNHu3JMfBx text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-9AnpZ3iNHu3JMfBx .actor-line{stroke:grey}#mermaid-svg-9AnpZ3iNHu3JMfBx .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .sequenceNumber{fill:#fff}#mermaid-svg-9AnpZ3iNHu3JMfBx #sequencenumber{fill:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx #crosshead path{fill:#333;stroke:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .messageText{fill:#333;stroke:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-9AnpZ3iNHu3JMfBx .labelText,#mermaid-svg-9AnpZ3iNHu3JMfBx .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-9AnpZ3iNHu3JMfBx .loopText,#mermaid-svg-9AnpZ3iNHu3JMfBx .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-9AnpZ3iNHu3JMfBx .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-9AnpZ3iNHu3JMfBx .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-9AnpZ3iNHu3JMfBx .noteText,#mermaid-svg-9AnpZ3iNHu3JMfBx .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-9AnpZ3iNHu3JMfBx .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-9AnpZ3iNHu3JMfBx .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-9AnpZ3iNHu3JMfBx .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-9AnpZ3iNHu3JMfBx .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-9AnpZ3iNHu3JMfBx .section{stroke:none;opacity:0.2}#mermaid-svg-9AnpZ3iNHu3JMfBx .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-9AnpZ3iNHu3JMfBx .section2{fill:#fff400}#mermaid-svg-9AnpZ3iNHu3JMfBx .section1,#mermaid-svg-9AnpZ3iNHu3JMfBx .section3{fill:#fff;opacity:0.2}#mermaid-svg-9AnpZ3iNHu3JMfBx .sectionTitle0{fill:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .sectionTitle1{fill:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .sectionTitle2{fill:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .sectionTitle3{fill:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-9AnpZ3iNHu3JMfBx .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-9AnpZ3iNHu3JMfBx .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-9AnpZ3iNHu3JMfBx .grid path{stroke-width:0}#mermaid-svg-9AnpZ3iNHu3JMfBx .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-9AnpZ3iNHu3JMfBx .task{stroke-width:2}#mermaid-svg-9AnpZ3iNHu3JMfBx .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-9AnpZ3iNHu3JMfBx .taskText:not([font-size]){font-size:11px}#mermaid-svg-9AnpZ3iNHu3JMfBx .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-9AnpZ3iNHu3JMfBx .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-9AnpZ3iNHu3JMfBx .task.clickable{cursor:pointer}#mermaid-svg-9AnpZ3iNHu3JMfBx .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-9AnpZ3iNHu3JMfBx .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-9AnpZ3iNHu3JMfBx .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-9AnpZ3iNHu3JMfBx .taskText0,#mermaid-svg-9AnpZ3iNHu3JMfBx .taskText1,#mermaid-svg-9AnpZ3iNHu3JMfBx .taskText2,#mermaid-svg-9AnpZ3iNHu3JMfBx .taskText3{fill:#fff}#mermaid-svg-9AnpZ3iNHu3JMfBx .task0,#mermaid-svg-9AnpZ3iNHu3JMfBx .task1,#mermaid-svg-9AnpZ3iNHu3JMfBx .task2,#mermaid-svg-9AnpZ3iNHu3JMfBx .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-9AnpZ3iNHu3JMfBx .taskTextOutside0,#mermaid-svg-9AnpZ3iNHu3JMfBx .taskTextOutside2{fill:#000}#mermaid-svg-9AnpZ3iNHu3JMfBx .taskTextOutside1,#mermaid-svg-9AnpZ3iNHu3JMfBx .taskTextOutside3{fill:#000}#mermaid-svg-9AnpZ3iNHu3JMfBx .active0,#mermaid-svg-9AnpZ3iNHu3JMfBx .active1,#mermaid-svg-9AnpZ3iNHu3JMfBx .active2,#mermaid-svg-9AnpZ3iNHu3JMfBx .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-9AnpZ3iNHu3JMfBx .activeText0,#mermaid-svg-9AnpZ3iNHu3JMfBx .activeText1,#mermaid-svg-9AnpZ3iNHu3JMfBx .activeText2,#mermaid-svg-9AnpZ3iNHu3JMfBx .activeText3{fill:#000 !important}#mermaid-svg-9AnpZ3iNHu3JMfBx .done0,#mermaid-svg-9AnpZ3iNHu3JMfBx .done1,#mermaid-svg-9AnpZ3iNHu3JMfBx .done2,#mermaid-svg-9AnpZ3iNHu3JMfBx .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-9AnpZ3iNHu3JMfBx .doneText0,#mermaid-svg-9AnpZ3iNHu3JMfBx .doneText1,#mermaid-svg-9AnpZ3iNHu3JMfBx .doneText2,#mermaid-svg-9AnpZ3iNHu3JMfBx .doneText3{fill:#000 !important}#mermaid-svg-9AnpZ3iNHu3JMfBx .crit0,#mermaid-svg-9AnpZ3iNHu3JMfBx .crit1,#mermaid-svg-9AnpZ3iNHu3JMfBx .crit2,#mermaid-svg-9AnpZ3iNHu3JMfBx .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-9AnpZ3iNHu3JMfBx .activeCrit0,#mermaid-svg-9AnpZ3iNHu3JMfBx .activeCrit1,#mermaid-svg-9AnpZ3iNHu3JMfBx .activeCrit2,#mermaid-svg-9AnpZ3iNHu3JMfBx .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-9AnpZ3iNHu3JMfBx .doneCrit0,#mermaid-svg-9AnpZ3iNHu3JMfBx .doneCrit1,#mermaid-svg-9AnpZ3iNHu3JMfBx .doneCrit2,#mermaid-svg-9AnpZ3iNHu3JMfBx .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-9AnpZ3iNHu3JMfBx .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-9AnpZ3iNHu3JMfBx .milestoneText{font-style:italic}#mermaid-svg-9AnpZ3iNHu3JMfBx .doneCritText0,#mermaid-svg-9AnpZ3iNHu3JMfBx .doneCritText1,#mermaid-svg-9AnpZ3iNHu3JMfBx .doneCritText2,#mermaid-svg-9AnpZ3iNHu3JMfBx .doneCritText3{fill:#000 !important}#mermaid-svg-9AnpZ3iNHu3JMfBx .activeCritText0,#mermaid-svg-9AnpZ3iNHu3JMfBx .activeCritText1,#mermaid-svg-9AnpZ3iNHu3JMfBx .activeCritText2,#mermaid-svg-9AnpZ3iNHu3JMfBx .activeCritText3{fill:#000 !important}#mermaid-svg-9AnpZ3iNHu3JMfBx .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-9AnpZ3iNHu3JMfBx g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-9AnpZ3iNHu3JMfBx g.classGroup text .title{font-weight:bolder}#mermaid-svg-9AnpZ3iNHu3JMfBx g.clickable{cursor:pointer}#mermaid-svg-9AnpZ3iNHu3JMfBx g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-9AnpZ3iNHu3JMfBx g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-9AnpZ3iNHu3JMfBx .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-9AnpZ3iNHu3JMfBx .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-9AnpZ3iNHu3JMfBx .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-9AnpZ3iNHu3JMfBx .dashed-line{stroke-dasharray:3}#mermaid-svg-9AnpZ3iNHu3JMfBx #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-9AnpZ3iNHu3JMfBx #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-9AnpZ3iNHu3JMfBx #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-9AnpZ3iNHu3JMfBx #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-9AnpZ3iNHu3JMfBx #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-9AnpZ3iNHu3JMfBx #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-9AnpZ3iNHu3JMfBx #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-9AnpZ3iNHu3JMfBx #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-9AnpZ3iNHu3JMfBx .commit-id,#mermaid-svg-9AnpZ3iNHu3JMfBx .commit-msg,#mermaid-svg-9AnpZ3iNHu3JMfBx .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-9AnpZ3iNHu3JMfBx .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-9AnpZ3iNHu3JMfBx .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-9AnpZ3iNHu3JMfBx g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-9AnpZ3iNHu3JMfBx g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-9AnpZ3iNHu3JMfBx g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-9AnpZ3iNHu3JMfBx g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-9AnpZ3iNHu3JMfBx g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-9AnpZ3iNHu3JMfBx .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-9AnpZ3iNHu3JMfBx .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-9AnpZ3iNHu3JMfBx .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-9AnpZ3iNHu3JMfBx .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-9AnpZ3iNHu3JMfBx .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-9AnpZ3iNHu3JMfBx .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-9AnpZ3iNHu3JMfBx .edgeLabel text{fill:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-9AnpZ3iNHu3JMfBx .node circle.state-start{fill:black;stroke:black}#mermaid-svg-9AnpZ3iNHu3JMfBx .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-9AnpZ3iNHu3JMfBx #statediagram-barbEnd{fill:#9370db}#mermaid-svg-9AnpZ3iNHu3JMfBx .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-9AnpZ3iNHu3JMfBx .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-9AnpZ3iNHu3JMfBx .statediagram-state .divider{stroke:#9370db}#mermaid-svg-9AnpZ3iNHu3JMfBx .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-9AnpZ3iNHu3JMfBx .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-9AnpZ3iNHu3JMfBx .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-9AnpZ3iNHu3JMfBx .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-9AnpZ3iNHu3JMfBx .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-9AnpZ3iNHu3JMfBx .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-9AnpZ3iNHu3JMfBx .note-edge{stroke-dasharray:5}#mermaid-svg-9AnpZ3iNHu3JMfBx .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-9AnpZ3iNHu3JMfBx .error-icon{fill:#522}#mermaid-svg-9AnpZ3iNHu3JMfBx .error-text{fill:#522;stroke:#522}#mermaid-svg-9AnpZ3iNHu3JMfBx .edge-thickness-normal{stroke-width:2px}#mermaid-svg-9AnpZ3iNHu3JMfBx .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-9AnpZ3iNHu3JMfBx .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-9AnpZ3iNHu3JMfBx .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-9AnpZ3iNHu3JMfBx .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-9AnpZ3iNHu3JMfBx .marker{fill:#333}#mermaid-svg-9AnpZ3iNHu3JMfBx .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-9AnpZ3iNHu3JMfBx {color: rgba(0, 0, 0, 0.75);font: ;}

设计要求
文章目录
资源设置
设计电路板
焊接与调试
测试MicroPython
基本信息测试
测试utime
测试Pin
测试DAC
测试ADC
测试UART
综合测试
测试DAC输出曲线
测试DAC,ADC
测试总结

§01 设计要求


  在 制作测试MM32F3277-MicroPython最小电路板 测试了基于MM32F3277的MicroPython测试板。也可以看到它的时钟是不需要。下面设计一个适应于面包板进行测试实验的MicroPython测试板。

一、资源设置

1、MicroPython支持模块

  下面使用灵动苏勇提供的模块支持类别:

▲ 图1.1.1 MM32F3277中的模块

▲ 图1.1.2 MM32F3277七个UART对应的管脚

二、设计电路板

1、原理图

▲ 图1.2.1 原理图

2、PCB

▲ 图1.2.2 快速制版单面PCB设计图

3、修正版本

  在上面设计中,对于模拟电源部分(VDDA,VSSA)没有能够单独供电,这将会影响ADC,DAC信号的性能。在下面版本中,将VDDA,VSSA单独进行供电。

AD\MM32\TestMM32\TestMM32MicroPythonPIN.SchDoc

▲ 图1.2.3 将VDDA,VSSA采用0Ω电阻进行单独供电部分

▲ 图1.2.4 设计的单面快速制版PCB图

  存在的问题:
  在上面设计中,依然存在的问题:就是没有将VSSDA引出,在外部信号输入的时候,没有信号底线。

三、焊接与调试

  使用 一分钟制版法 ,在五分钟之后制作完电路板,进行焊接和调试。

1、焊接电路板

  焊接测试电路板,如下图所示:

▲ 图1.3.1 焊接之后的测试电路板

2、测试电路板

(1)上电测试

  施加+5V工作电压。测量板内3.3V的电源电压符合要求。

(2)下载MicroPython

  下来来自于苏勇的MicroPython。这个版本需要外部晶体。

▲ 图1.3.2 使用MM32-LINK下载MicroPython

▲ 图1.3.3 下载MicroPython之后在晶体上测量到时钟信号

(3)测试RX1

  MicroPython写入之后,在上电之后会发送出MicroPython的版本信息。可以在TX1上测量到该波形。

▲ 图1.3.4 上电后测量TX1上的波形

(4)测试REPL

  连接测试版上的REPL接口(UART1)到计算机的串口终端,可以在电路板上电之后读取到版本信息。

▲ 图1.3.5 REPL 提示符号

§02 测试MicroPython


  根据苏勇反馈的信息,现在这个版本MicroPython已经支持一下模块:Pin、ADC、UART、SDCard、utime。模块的使用遵循着 MicroPython官网 给出的协议。下面对于现在的版本进行测试。

一、基本信息测试

1、测试代码

from machine import Pin,ADC,UART,freq
import machine
import utimedir(machine)
dir(utime)freq()

2、测试结果

Reset MicroPython...
Wait for MicroPython comeback...
Download MicroPython : 9 lines/109 characters.
Begin to download programm...
-------------------------------------------------------------------------['__name__', 'ADC', 'Pin', 'SDCard', 'UART', 'freq', 'mem16', 'mem32', 'mem8']
['__name__', 'sleep', 'sleep_ms', 'sleep_us', 'ticks_add', 'ticks_cpu', 'ticks_diff', 'ticks_ms', 'ticks_us']
96000000
>>>

  从上面可以看到,内部的OSC的频率为96MHz。

二、测试utime

1、测试代码

from machine import Pin,ADC,UART,freq
import utimewhile True:print('A')utime.sleep_ms(100)

2、测试结果

  REPL接口输出’A’,每隔100ms输出一个数字。

三、测试Pin

  测试GPIO的输入输出功能。

1、测试输出

  根据苏勇反馈的信息:

from machine import Pinpin0 = Pin('PB2', mode=Pin.OUT_PUSHPULL)
pin0(1)
pin0.low()

  测试GPIO对应的输出功能。

(1)测试代码

from machine import Pin,ADC,UART,freq
import utimeled = Pin('PB2', Pin.OUT_PUSHPULL)while True:led(1)utime.sleep_ms(100)led(0)utime.sleep_ms(100)

(2)测试结果

▲ 图2.3.1 闪烁PB2对应的LED

2、测试IO操作最短时间

  通过测试两次IO的高低电平的变化,来测试在MicroPython下对于IO口的最短操作时间。

(1)测试代码

from machine import Pin,ADC,UART,freq
import utimeled = Pin('PB2', Pin.OUT_PUSHPULL)while True:led(1)led(0)

(2)测试结果

  通过测量LED端口的变化波形来看,执行初次GPIO操作所需要的时间大约为:17μs\mu sμs。

▲ 图2.3.2 相邻GPIO高低电平操作

3、测试输入功能

(1)测试代码

from machine                import Pin
import utimeled = Pin('PB2', Pin.OUT_PUSHPULL)
btn = Pin('PB7', Pin.IN_PULLUP)print("Test Pin input and output.")while True:if btn.value() > 0:led.high()else: led.low()

(2)测试结果

  使用杜邦线将 PB7 接地,可以观察到LED(PB2) 熄灭。

▲ 图2.3.3 将PB7接地可以观察到PB2(LED)熄灭

四、测试DAC

▲ 图2.3.4 测试DAC示例程序

1、设置输出

DAC端口:
DAC0:PA4
DAC1:PA5

(1)测试代码

from machine                import Pin,ADC,DACdac0 = DAC(0)
dac1 = DAC(1)
print('Test DAC ...')dac0.write_u16(0x800)
dac1.write_u16(0x400)

(2)测试结果

  使用数字万用表测量:

DAC输出电压:
DAC0(PA4):1.649V
DAC1(PA5): 0.825V

2、输出电压曲线

(1)测试代码

from machine                import Pin,ADC,DAC
from math                   import *dac0 = DAC(0)
dac1 = DAC(1)
print('Test DAC ...')angle = [int((sin(i * pi * 2 / 100)+1.0)/2*0x600+0x200) for i in range(100)]
print(angle)while True:for a in angle:dac0.write_u16(a)dac1.write_u16(0xa00 - a)

(2)测试结果

  使用示波器测量 DAC0,DAC1的波形。

▲ 图2.4.1 DAC0,DAC1的输出波形

五、测试ADC

1、测试ADC0

from machine                import Pin,ADC,DAC
import utimeadc0 = ADC(0, init=True)while True:print(adc0.read_u16())utime.sleep_ms(200)

  在PA0,输入直流电压,可以测试到输出0x0 ~ 0xffff数值。输出数据是右靠齐。

  注意:第一个ADC初始化的时候,需要将init=True参数代入。

2、ADC对应的端口

  ADC总共有16个通道,对应的外部端口分别是:

ADC端口:
CH0~7:PA0~PA7
CH8,CH9:PB0,PB1
CH10~CH13:PC0~PC3
CH14,CH15:NULL

六、测试UART

1、UART端口

UART端口(RX,TX):
UART1:PA10, PA9
UART2:PA3,PA2
UART3:PB11,PB10
UART4:PC11,PC10
UART5:PD2,PC12
UART6:PC7,.PC6
UART7:PE7,PE8
UART8:PD1,PD0

2、测试UART2

(1)测试发送

from machine                import Pin,UART
import utimeuart2 = UART(1, 115200)print('Test UART.')while True:_ = uart2.write(b'U')utime.sleep_ms(10)

  在PA2(TX2)测量输出波形。

▲ 图2.6.1 PA2(TX2)测量得到波形

(2)测试接收

  使用短路子将 RXD3与RXD1连接在一起,也就是将REPL的接收端口RXD1连接在UART3的接收端口。

 Ⅰ.测试代码
from machine                import Pin,UART
import utimeuart2 = UART(2, 115200)print('Test UART.')
buf = bytes(0)while True:if uart2.any():buf = buf + uart2.read(uart2.any())if buf[-1] == 13:print(int(buf))buf = bytes(0)utime.sleep_ms(10)
 Ⅱ.测试结果
>> Reset MicroPython...
>> Wait for MicroPython coming back...
>> Download MicroPython : 33 lines/707 characters.
>> -------------------------------------------------------------------------Test UART.
333
3333
123
Traceback (most recent call last):File "<stdin>", line 22, in <module>
ValueError: invalid syntax for integer
>>>

§03 综合测试


一、测试DAC输出曲线

  通过UART3送入DAC转换数字,使用数字万用表测量DAC0输出的电压,并绘制输出曲线。

1、测试代码

from headm import *
from tsmodule.tsstm32       import *writedim = list(range(0, 0xfff, 40))vdim = []for w in writedim:stm32cmd('SENDC%03d\r'%w)time.sleep(1.5)meter = meterval()vdim.append(meter[0])plt.plot(writedim, vdim)
plt.xlabel("Number")
plt.ylabel("Voltage(V)")
plt.grid(True)
plt.tight_layout()
plt.show()printf('\a')

2、测试结果

  下面得到了DAC的转换数值与输出电压之间的关系。可以看到他们之间呈现非常良好量e线性关系。

▲ 图3.1.1 DAC转换数值与输出电压

二、测试DAC,ADC

1、测试代码

(1)MicroPython程序

from machine                import DAC,ADC
import utimeadc0 = ADC(0, init=True)
dac0 = DAC(0)vdim = []
outdim = list(range(0, 0xfff, 10))print("Test DAC,ADC...")for o in outdim:dac0.write_u16(o)utime.sleep_ms(2)vdim.append(adc0.read_u16())print(vdim)

(2)绘制结果程序

from headm import *
from tsmodule.tsstm32       import *stm32cmd('COPY')time.sleep(.1)
allstr = clipboard.paste()startid = allstr.find('[')
endid = allstr.find(']')if startid < 0 or endid < 0:printf("No data.\a")exit()datastr = [int(s) for s in allstr[startid + 1 : endid].split(',')]
printf(datastr)plt.plot(datastr)
plt.xlabel("Number")
plt.ylabel("Voltage(V)")
plt.grid(True)
plt.tight_layout()
plt.show()

2、测试结果

▲ 图3.2.1 测试结果

※ 测试总结 ※


  对于截止到(2021-11-08 21:13:44)来自灵动的MicroPython在MM32F3277上的一致的基本功能进行测试。并给除了MicroPython的相关模块的の基本测试调用版本。

#mermaid-svg-iRIhawHQda4mDDrW .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-iRIhawHQda4mDDrW .label text{fill:#333}#mermaid-svg-iRIhawHQda4mDDrW .node rect,#mermaid-svg-iRIhawHQda4mDDrW .node circle,#mermaid-svg-iRIhawHQda4mDDrW .node ellipse,#mermaid-svg-iRIhawHQda4mDDrW .node polygon,#mermaid-svg-iRIhawHQda4mDDrW .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-iRIhawHQda4mDDrW .node .label{text-align:center;fill:#333}#mermaid-svg-iRIhawHQda4mDDrW .node.clickable{cursor:pointer}#mermaid-svg-iRIhawHQda4mDDrW .arrowheadPath{fill:#333}#mermaid-svg-iRIhawHQda4mDDrW .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-iRIhawHQda4mDDrW .flowchart-link{stroke:#333;fill:none}#mermaid-svg-iRIhawHQda4mDDrW .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-iRIhawHQda4mDDrW .edgeLabel rect{opacity:0.9}#mermaid-svg-iRIhawHQda4mDDrW .edgeLabel span{color:#333}#mermaid-svg-iRIhawHQda4mDDrW .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-iRIhawHQda4mDDrW .cluster text{fill:#333}#mermaid-svg-iRIhawHQda4mDDrW div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-iRIhawHQda4mDDrW .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-iRIhawHQda4mDDrW text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-iRIhawHQda4mDDrW .actor-line{stroke:grey}#mermaid-svg-iRIhawHQda4mDDrW .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-iRIhawHQda4mDDrW .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-iRIhawHQda4mDDrW #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-iRIhawHQda4mDDrW .sequenceNumber{fill:#fff}#mermaid-svg-iRIhawHQda4mDDrW #sequencenumber{fill:#333}#mermaid-svg-iRIhawHQda4mDDrW #crosshead path{fill:#333;stroke:#333}#mermaid-svg-iRIhawHQda4mDDrW .messageText{fill:#333;stroke:#333}#mermaid-svg-iRIhawHQda4mDDrW .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-iRIhawHQda4mDDrW .labelText,#mermaid-svg-iRIhawHQda4mDDrW .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-iRIhawHQda4mDDrW .loopText,#mermaid-svg-iRIhawHQda4mDDrW .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-iRIhawHQda4mDDrW .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-iRIhawHQda4mDDrW .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-iRIhawHQda4mDDrW .noteText,#mermaid-svg-iRIhawHQda4mDDrW .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-iRIhawHQda4mDDrW .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-iRIhawHQda4mDDrW .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-iRIhawHQda4mDDrW .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-iRIhawHQda4mDDrW .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-iRIhawHQda4mDDrW .section{stroke:none;opacity:0.2}#mermaid-svg-iRIhawHQda4mDDrW .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-iRIhawHQda4mDDrW .section2{fill:#fff400}#mermaid-svg-iRIhawHQda4mDDrW .section1,#mermaid-svg-iRIhawHQda4mDDrW .section3{fill:#fff;opacity:0.2}#mermaid-svg-iRIhawHQda4mDDrW .sectionTitle0{fill:#333}#mermaid-svg-iRIhawHQda4mDDrW .sectionTitle1{fill:#333}#mermaid-svg-iRIhawHQda4mDDrW .sectionTitle2{fill:#333}#mermaid-svg-iRIhawHQda4mDDrW .sectionTitle3{fill:#333}#mermaid-svg-iRIhawHQda4mDDrW .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-iRIhawHQda4mDDrW .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-iRIhawHQda4mDDrW .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-iRIhawHQda4mDDrW .grid path{stroke-width:0}#mermaid-svg-iRIhawHQda4mDDrW .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-iRIhawHQda4mDDrW .task{stroke-width:2}#mermaid-svg-iRIhawHQda4mDDrW .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-iRIhawHQda4mDDrW .taskText:not([font-size]){font-size:11px}#mermaid-svg-iRIhawHQda4mDDrW .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-iRIhawHQda4mDDrW .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-iRIhawHQda4mDDrW .task.clickable{cursor:pointer}#mermaid-svg-iRIhawHQda4mDDrW .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-iRIhawHQda4mDDrW .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-iRIhawHQda4mDDrW .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-iRIhawHQda4mDDrW .taskText0,#mermaid-svg-iRIhawHQda4mDDrW .taskText1,#mermaid-svg-iRIhawHQda4mDDrW .taskText2,#mermaid-svg-iRIhawHQda4mDDrW .taskText3{fill:#fff}#mermaid-svg-iRIhawHQda4mDDrW .task0,#mermaid-svg-iRIhawHQda4mDDrW .task1,#mermaid-svg-iRIhawHQda4mDDrW .task2,#mermaid-svg-iRIhawHQda4mDDrW .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-iRIhawHQda4mDDrW .taskTextOutside0,#mermaid-svg-iRIhawHQda4mDDrW .taskTextOutside2{fill:#000}#mermaid-svg-iRIhawHQda4mDDrW .taskTextOutside1,#mermaid-svg-iRIhawHQda4mDDrW .taskTextOutside3{fill:#000}#mermaid-svg-iRIhawHQda4mDDrW .active0,#mermaid-svg-iRIhawHQda4mDDrW .active1,#mermaid-svg-iRIhawHQda4mDDrW .active2,#mermaid-svg-iRIhawHQda4mDDrW .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-iRIhawHQda4mDDrW .activeText0,#mermaid-svg-iRIhawHQda4mDDrW .activeText1,#mermaid-svg-iRIhawHQda4mDDrW .activeText2,#mermaid-svg-iRIhawHQda4mDDrW .activeText3{fill:#000 !important}#mermaid-svg-iRIhawHQda4mDDrW .done0,#mermaid-svg-iRIhawHQda4mDDrW .done1,#mermaid-svg-iRIhawHQda4mDDrW .done2,#mermaid-svg-iRIhawHQda4mDDrW .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-iRIhawHQda4mDDrW .doneText0,#mermaid-svg-iRIhawHQda4mDDrW .doneText1,#mermaid-svg-iRIhawHQda4mDDrW .doneText2,#mermaid-svg-iRIhawHQda4mDDrW .doneText3{fill:#000 !important}#mermaid-svg-iRIhawHQda4mDDrW .crit0,#mermaid-svg-iRIhawHQda4mDDrW .crit1,#mermaid-svg-iRIhawHQda4mDDrW .crit2,#mermaid-svg-iRIhawHQda4mDDrW .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-iRIhawHQda4mDDrW .activeCrit0,#mermaid-svg-iRIhawHQda4mDDrW .activeCrit1,#mermaid-svg-iRIhawHQda4mDDrW .activeCrit2,#mermaid-svg-iRIhawHQda4mDDrW .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-iRIhawHQda4mDDrW .doneCrit0,#mermaid-svg-iRIhawHQda4mDDrW .doneCrit1,#mermaid-svg-iRIhawHQda4mDDrW .doneCrit2,#mermaid-svg-iRIhawHQda4mDDrW .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-iRIhawHQda4mDDrW .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-iRIhawHQda4mDDrW .milestoneText{font-style:italic}#mermaid-svg-iRIhawHQda4mDDrW .doneCritText0,#mermaid-svg-iRIhawHQda4mDDrW .doneCritText1,#mermaid-svg-iRIhawHQda4mDDrW .doneCritText2,#mermaid-svg-iRIhawHQda4mDDrW .doneCritText3{fill:#000 !important}#mermaid-svg-iRIhawHQda4mDDrW .activeCritText0,#mermaid-svg-iRIhawHQda4mDDrW .activeCritText1,#mermaid-svg-iRIhawHQda4mDDrW .activeCritText2,#mermaid-svg-iRIhawHQda4mDDrW .activeCritText3{fill:#000 !important}#mermaid-svg-iRIhawHQda4mDDrW .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-iRIhawHQda4mDDrW g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-iRIhawHQda4mDDrW g.classGroup text .title{font-weight:bolder}#mermaid-svg-iRIhawHQda4mDDrW g.clickable{cursor:pointer}#mermaid-svg-iRIhawHQda4mDDrW g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-iRIhawHQda4mDDrW g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-iRIhawHQda4mDDrW .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-iRIhawHQda4mDDrW .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-iRIhawHQda4mDDrW .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-iRIhawHQda4mDDrW .dashed-line{stroke-dasharray:3}#mermaid-svg-iRIhawHQda4mDDrW #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-iRIhawHQda4mDDrW #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-iRIhawHQda4mDDrW #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-iRIhawHQda4mDDrW #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-iRIhawHQda4mDDrW #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-iRIhawHQda4mDDrW #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-iRIhawHQda4mDDrW #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-iRIhawHQda4mDDrW #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-iRIhawHQda4mDDrW .commit-id,#mermaid-svg-iRIhawHQda4mDDrW .commit-msg,#mermaid-svg-iRIhawHQda4mDDrW .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-iRIhawHQda4mDDrW .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-iRIhawHQda4mDDrW .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-iRIhawHQda4mDDrW g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-iRIhawHQda4mDDrW g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-iRIhawHQda4mDDrW g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-iRIhawHQda4mDDrW g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-iRIhawHQda4mDDrW g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-iRIhawHQda4mDDrW g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-iRIhawHQda4mDDrW .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-iRIhawHQda4mDDrW .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-iRIhawHQda4mDDrW .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-iRIhawHQda4mDDrW .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-iRIhawHQda4mDDrW .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-iRIhawHQda4mDDrW .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-iRIhawHQda4mDDrW .edgeLabel text{fill:#333}#mermaid-svg-iRIhawHQda4mDDrW .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-iRIhawHQda4mDDrW .node circle.state-start{fill:black;stroke:black}#mermaid-svg-iRIhawHQda4mDDrW .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-iRIhawHQda4mDDrW #statediagram-barbEnd{fill:#9370db}#mermaid-svg-iRIhawHQda4mDDrW .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-iRIhawHQda4mDDrW .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-iRIhawHQda4mDDrW .statediagram-state .divider{stroke:#9370db}#mermaid-svg-iRIhawHQda4mDDrW .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-iRIhawHQda4mDDrW .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-iRIhawHQda4mDDrW .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-iRIhawHQda4mDDrW .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-iRIhawHQda4mDDrW .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-iRIhawHQda4mDDrW .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-iRIhawHQda4mDDrW .note-edge{stroke-dasharray:5}#mermaid-svg-iRIhawHQda4mDDrW .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-iRIhawHQda4mDDrW .error-icon{fill:#522}#mermaid-svg-iRIhawHQda4mDDrW .error-text{fill:#522;stroke:#522}#mermaid-svg-iRIhawHQda4mDDrW .edge-thickness-normal{stroke-width:2px}#mermaid-svg-iRIhawHQda4mDDrW .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-iRIhawHQda4mDDrW .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-iRIhawHQda4mDDrW .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-iRIhawHQda4mDDrW .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-iRIhawHQda4mDDrW .marker{fill:#333}#mermaid-svg-iRIhawHQda4mDDrW .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-iRIhawHQda4mDDrW {color: rgba(0, 0, 0, 0.75);font: ;}

文章目录
设计要求
资源设置
MicroPython支持模块
设计电路板
原理图
PCB
修正版本
焊接与调试
焊接电路板
测试电路板
上电测试
下载MicroPython
测试RX1
测试REPL
02 测试MicroPython
基本信息测试
测试代码
测试结果
测试utime
测试代码
测试结果
测试Pin
测试输出
测试代码
测试结果
测试IO操作最短时间
测试代码
测试结果
测试输入功能
测试代码
测试结果
测试DAC
设置输出
测试代码
测试结果
输出电压曲线
测试代码
测试结果
测试ADC
测试ADC0
ADC对应的端口
测试UART
UART端口
测试UART2
测试发送
测试接收
测试代码
测试结果
综合测试
测试DAC输出曲线
测试代码
测试结果
测试DAC,ADC
测试代码
MicroPython程序
绘制结果程序
测试结果
测试总结

■ 相关文献链接:

  • 制作测试MM32F3277-MicroPython最小电路板
  • 一分钟制版法
  • MicroPython官网

● 相关图表链接:

  • 图1.1.1 MM32F3277中的模块
  • 图1.1.2 MM32F3277七个UART对应的管脚
  • 图1.2.1 原理图
  • 图1.2.2 快速制版单面PCB设计图
  • 图1.2.3 将VDDA,VSSA采用0Ω电阻进行单独供电部分
  • 图1.2.4 设计的单面快速制版PCB图
  • 图1.3.1 焊接之后的测试电路板
  • 图1.3.2 使用MM32-LINK下载MicroPython
  • 图1.3.3 下载MicroPython之后在晶体上测量到时钟信号
  • 图1.3.4 上电后测量TX1上的波形
  • 图1.3.5 REPL 提示符号
  • 图2.3.1 闪烁PB2对应的LED
  • 图2.3.2 相邻GPIO高低电平操作
  • 图2.3.3 将PB7接地可以观察到PB2(LED)熄灭
  • 图2.3.4 测试DAC示例程序
  • 图2.4.1 DAC0,DAC1的输出波形
  • 图2.6.1 PA2(TX2)测量得到波形
  • 图3.1.1 DAC转换数值与输出电压
  • 图3.2.1 测试结果

MM32F3277 MicroPython 实验板设计和软件测试相关推荐

  1. 设计带有SD卡的 MM32F3277 MicroPython 实验板

    简 介: 本文测试了基于MM32F3277下的MicroPython电路板设计.其中包含有SD卡接口,常用外设接口等.验证了现在的移植的MicroPython的对文件的基本操作功能.通过测试发现现在的 ...

  2. 测试逐飞的MM32F3277 MicroPython开发板的基本功能

    简 介: 对于给定的MicroPython移植版本进行了初步的测试.对比之下,MCU中还有很多的模块尚未支持.这些工作需要近期尽快补充测试完毕. 关键词: MM32,MicroPython #merm ...

  3. 测试MindMotion MM32F3277 MicroPython -2021-11-20新增PWM版本

    简 介: 对于初步实现的MicroPython的版本进行了测试.可以看到这个版本在MCU的硬件层面还存在BUG,在实际管脚上尚无法输出对应的PWM波形. 关键词: MM32,MicroPython,P ...

  4. 调试来自于逐飞的MM32F3277移植有MicroPython开发板

    简 介: 对于从逐飞寄送的MicroPython开发板进行初步测试,建立了基于REPL进行交互式开发的环境. 关键词: MicroPython,MM32,Thonny #mermaid-svg-BUT ...

  5. 软件测试中用正交实验法设计测试用例

    软件测试中用正交实验法设计测试用例 正交实验法的由来 一.正交表的由来 拉丁方名称的由来 古希腊是一个多民族的国家,国王在检阅臣民时要求每个方队中每行有一个民族代表,每列也要有一个民族的代表. 数学家 ...

  6. 计算机控制接口板设计,计算机控制实验报告(过程接口板设计)

    实验一:<过程接口板设计>上机报告 1. 设计内容 设计一个32路的数据采集系统 2. 设计要求 1.输入信号为正负5V:用查询法读取A/D的转换数: 2.用Protel软件画出该数据采集 ...

  7. 利用STM32F405RG制作pyBoard实验板

    ▌01 pyBoard实验板 1.pyBoard pyBoard是可以通过 MicroPython 进行编程的实验板.由于它板子不太适合在面包板上实验,主要原因是它太宽了,无法做到向 RaspBerr ...

  8. 乐鑫esp8266模块MicroPython开发板MQTT物联网人工智能最小系统

    简 介: ※对于购买自网络的基于ESP8266的实验模块进行了初步的测试,它其中的一些示例进行了练习.特别是对于基于ESP8266的特殊的一些外设的测试. 关键词: ESP8266,MicroPyth ...

  9. asp.net gridview 模板列 弹出窗口编辑_连云港各种新型铝模板设计软件,哪家强_威尔达建材...

    首页 > 新闻列表 > 正文 发布时间:2020-11-01 21:43:33 浏览: 30 导读:连云港各种新型铝模板设计软件, 而绝缘材料更是千差万别,材料的选用是电热管优劣基础.因此 ...

最新文章

  1. c detail of macro
  2. 可伸缩搜索框 旋转实现loading
  3. 自动化与网络工程之间的关系
  4. [MATLAB调试笔记]时变循环诊断——[Vx(x)],[Vx(t),Vy(t),Vz(t)],[Ex(x)],[波];[Eng(t)],[Ex(k)],[Ex(x,t)],[logEx(x.t)]
  5. Linux/Unix下tar命令详解
  6. react native windows create bundle folder
  7. Derby与mysql的关系_Derby数据库简单介绍和使用方法 | 学步园
  8. 黄章钦点的魅族大将,为什么会引发群嘲?
  9. jQuery-ui源代码重点难点分析
  10. 为企业选择最合适的SSL证书
  11. 鸿蒙系统u盘制作,WINDOWS系列 篇二:【保姆级】Windows 10安装版原版系统U盘制作及系统安装教程...
  12. C# winform 如何让TextBox文本内容垂直居中?
  13. swfobject简单封装
  14. 自编超爽的对战游戏 非常有趣
  15. http client的英文文档 牛逼
  16. 6.1 Python图像处理之图像编码技术和标准-DPCM编码
  17. 建设工程法规专科【5】
  18. HCIA-第八节0615
  19. vue中ref的使用
  20. common.reg

热门文章

  1. 10、Mapreduce的一些场景
  2. eclipse svn提交忽略文件及文件夹,ignore设置无效..
  3. 参数化之利用CSV Data Set Config从文件读取参数并关联变量
  4. oracle goldengate技术架构-简单试验(全)
  5. Android中dip、dp、sp、pt和px的区别
  6. 实现Excel数据导入到SQL2005中的方法(回顾)
  7. IIS的应用程序池优化方法
  8. dubbo相关的知识点总结
  9. 2 关于数据仓库维度数据处理的方法探究系列——无变化维度处理
  10. new一个新对象的时候,各属性方法的操行顺序