简 介: 对于从逐飞寄送的MicroPython开发板进行初步测试,建立了基于REPL进行交互式开发的环境。

关键词MicroPythonMM32Thonny

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

开发板信息
文章目录
基本信息
上电测试
问题解决
STM32交互界面
STM32
Bootloader 改造
改造
runpython_shift
测试工具链
测试总结

§01 开发板信息


  今天(2021-10-27)收到逐飞公司发送过来的移植有MicroPython开发板。

一、基本信息

1、电路板

  开发板的正面图片与反面见封面图片以及下面图片。

▲ 图1.1.1 电路板的背面

2、示例程序

(1)下载地址

  • 下载地址: MM32F3277 MicroPython 示例程序
  • MM32F3277主板带SD卡原理图

(2)示例程序文件

  • CCD.py
  • ENCODER.py
  • GPIO.py
  • LCD180.py
  • main.py
  • MicroPython驱动层接口定义.xlsx
  • PWM.py
  • SERVO.py
  • TIMER.py
  • UART.py
  • ADC.py

3、MicroPython驱动层接口定义

  本版本所有模块都归纳在seekfree模块下,需要先import seekfree才能通过seekfree.的方式调用,或者使用 from seekfree import 。且本版本并不作为最终版本发布 最终版本与灵动方协商推出 可能最终接口名与形式并不与本版本兼容。

  本演示固件仅实现读取SD卡中main.py文件执行功能,暂不支持自动或代码打开其他文件。本演示固件并不与最终支持大赛固件接口相同,仅为演示功能完整性与可实施性。本演示固件暂有许多局限性,受限于时间烦请查看附带的演示例程,其中各个模块可通过 .help() 查看说明。

  可通过核心板下载接口的串口进行的REPL调试,使用循环时请务必设置退出条件,否则将无法执行新的Python语句,需要重启单片机。使用舵机时请务必使用电源T头供电,红色正极,黑色负极,供电电压推荐8V。可用接口为舵机接口、ADC、电机接口PWM、编码器接口、CCD接口、屏幕TFT1.8、主板右下方(有来标识)串口、按键等。

▲ 图1.1.2 芯片外设模块接口

二、上电测试

1、电源接口

  在地板一段具有电源接入引线,可以施加2C,3C锂电池。通过开关可以控制电源通断。开关旁边有 SPX2940 5V稳压电源。 SPX2940为低压差(0.28V@1A输出电流)稳压电源。

  在SPX2940前有一个肖特基防止反接二极管。

电源部分:
接入电压:7V
SPX2940输入:6.68V
SPX2940输出:5.025V

▲ 图1.2.1 在电源线引入电源

  测量输入电压与SPX2940输出电压曲线,如下图所示。可以看到如果输入电压超过5.4V,电路便可以正常工作了。

▲ 图1.2.2 输入电压与SPX2940输出电压

from headm import *
from tsmodule.tsvisa        import *
from tsmodule.tsstm32       import *inv = linspace(0, 7, 50)
outv = []
for v in inv:dh1766volt(v)time.sleep(1.5)meter = meterval()outv.append(meter[1])printff(v, meter[1])tspsave('power', inv=inv, outv=outv)plt.plot(inv, outv)
plt.xlabel("Input(V)")
plt.ylabel("Output(V)")
plt.grid(True)
plt.tight_layout()
plt.show()

2、测量TX输出

  测量电路板上面的下载程序口TX在上电后的输出波形。这个信息应该是MicroPython REPL在上电后的输出信号。

▲ 图1.2.3 测量下载板上的TX输出波形

  可以看到在TX 上电后输出脉冲波形。

▲ 图1.2.4 测量TX在上电后输出波形

  展开输出波形可以大体看到输出波形的波特率在115200。

▲ 图1.2.5 展开输出波形可以大体看到输出波形的波特率在115200

3、制作Thonny调试接口

  在 ESP32-S模块转接板设计与实现 定义了ESP32调试接口定义。 可以看到其中对应的 GND-RXD0,TXD0的顺序与MM32调试接口的TXD,RXD的顺序相反。需要通过一个转接头,对TXD-RXD进行交替。

▲ 图1.2.6 ESP32调试接口定义

  如下是制作的由ESP32调试接口道MM32核心板3PIN连接线。它将RX-TX对调。

▲ 图1.2.7 制作专用调试接口

4、Thonny调试

  设置Thonny中Option的Interpreter选项,设置为CH340对应的调试接口。

▲ 图1.2.8 Thonny 的Option中的Interpreter的选项设置

  上电后,可以看到Thonny接收到 MM32发送出的信息。

Found and execute /sd/main.py!Set callback function success.

▲ 图1.2.9 Thonny调试界面

  但是直接在Thonny内部输入命令,MM32并没有回应。

  通过示波器直接查看串口调试接口的波形,可以看到它的输出幅值只有2V左右。与正常的串口通信幅值相差很大。

▲ 图1.2.10 编程接口RX波形

  解决方法: 在MM32的开发板上使用1k欧姆连接RX至 3.3V。

▲ 图1.2.11 在RX,3.3V之间焊接1kΩ上拉电阻

  焊接上拉电阻之后,可以看到在Thonny输入回车之后,发送的RX信号变得正常了。

▲ 图1.2.12 改善后的RX波形

  但是仍然MM32没有REPL回应。

  现在存在的问题:MM32没有能够进行REPL响应。

5、去除SD卡中的程序

  根据 TX返回的信息,看到上电后的主板应该是执行了SD卡中的 main.py程序。需要将该程序去除,让MicroPython 返回到REPL状态。

▲ 图1.2.13 使用SD卡读写器去除SD卡中的程序

(1)SD卡中的文件

  可以看到 SD卡中的文件

▲ 图1.2.14 SD卡中的文件

(2)说明文件内容

  MM32F3270系列单片机MicroPython固件使用说明

  1、本演示固件仅实现读取SD卡中main.py文件执行功能,暂不支持自动或代码打开其他文件;

  2、本演示固件并不与最终支持大赛固件接口相同,仅为演示功能完整性与可实施性;

  3、本演示固件暂有许多局限性,受限于时间烦请查看附带的演示例程,其中各个模块可通过 .help() 查看说明

  4、可通过核心板下载接口的串口进行的REPL调试,使用循环时请务必设置退出条件,否则将无法执行新的Python语句,需要重启单片机

  5、使用舵机时请务必使用电源T头供电,红色正极,黑色负极,供电电压推荐8V

  6、可用接口为舵机接口、ADC、电机接口PWM、编码器接口、CCD接口、屏幕TFT1.8、主板右下方(有来标识)串口、按键等

(3)移除SD卡之后

  将SD卡移除,或者将其中的main.py删除之后,重新上电。Thonny平台出现以下问题:

▲ 图1.2.15 连接Thonny之后出现的问题

  利用STM32BL打开 COM8进行调试,可以看到在上电之后,MM32 MicroPython 给出:

▲ 图1.2.16 STM32BL 接收到MM32发送的信息

  ※ 错误:现在无法确定,MM32现在的MicroPython是否能够支持REPL!

三、问题解决

1、使用STM32进行交互

  重新编写 STM32BL ,使其在ECHO设置为:Return情况下,可以发送CTRL+B信息,这样便可以在上面的MicroPython粘贴状态下返回REPL交互模式。

▲ 图1.3.1 可以实现简单的交互开发

  上面的交互开发模式仍然无法使用Thonny环境完成程序交互式开发。

§02 STM32交互界面


  根据前面测试,可以看到使用 Thonny 直接连接 开发板会出现错误,下面通过自行编写的 STM32程序 ,使得它能够通过REPL界面完成MicroPython软件的下载。

一、STM32 Bootloader 改造

1、增加UDP命令

  在STM32中增加UDP命令:MPDLD,它可以吧剪切板中的程序通过MicroPython的REPL命令下载到开发板。REPL关于粘贴软件参见 The MicroPython Interactive Interpreter Mode (aka REPL)

  通过输入CTRL-E(0x5),使得REPL进入粘贴模式,然后发送程序ASCII内容。通过CTRL-D(0x4)退出并执行。

if(strncmp(szString, "MPDLD", 5) == 0) {   // MicroPython Dlownloadchar szString[0x8000];ClearInfor();strcpy(szString, "");Clipboard()->GetTextBuf(szString, sizeof(szString) - 1);MessageBeep(0);SendChar(0x5, PORT1);       // Send CTRL+Aint nLength = strlen(szString);int i;for(i = 0; i < nLength; i ++)SendChar(szString[i], PORT1);SendChar(0x4, PORT1);      // Send CTRL+Breturn;
}

2、设置RETURN

▲ 图2.1.1 设置RETURN,使得STM32的信息框成为交互窗口

二、改造runpython_shift

  对于TEASOFT软件的副主程序 runpython_shift.py中增加关于STM32下载的检测。

title = tspgetwindowtitle()
for t in title:if t.find('Thonny') == 0:ThonnyExec()exit()if t.find('Ô¶³Ì×ÀÃæ') >= 0:ThonnyExec(1)exit()if t.find("STM32 BOOTLOADER") >= 0:tspcopyclipboard()pastestr = clipboard.paste().replace('\r', '')clipboard.copy(pastestr)stm32cmd("MPDLD")tspfocuswindow("TEASOFT:1")exit()

注意,需要在下载MicroPython的过程中,将其中的 '\r’都过滤掉。

三、测试工具链

1、测试代码

a = 1
b = 2
print(a+b)for _ in range(10):print(a)

2、下载执行结果

▲ 图2.3.1 下载执行结果

※ 测试总结 ※


  对于来自于逐飞的改造的MM32开发板,如果将其后面的SD卡拔掉,便可以直接进入REPL交互开发状态。

  利用开发板上的串口,与STM32相连,形成程序下载,结果显示的界面。

  很可惜,现在为止直接使用Thonny软件还无法对MM32 MicroPython进行REPL交互式开发。具体原因尚不清楚。一种可以的查询故障的方法,就是通过UART T-型通道对Thonny环境与REPL模块之间的交互信息进行截取对比,可以找到问题所在。

▲ 图3.1 UART T-型器


■ 相关文献链接:

  • MM32F3277 MicroPython 示例程序
  • MM32F3277主板带SD卡原理图
  • SPX2940
  • ESP32-S模块转接板设计与实现
  • SD卡中的文件
  • STM32BL
  • 安装 Thonny 软件环境开发PI Pico
  • The MicroPython Interactive Interpreter Mode (aka REPL)

● 相关图表链接:

  • 图1.1.1 电路板的背面
  • 图1.1.2 芯片外设模块接口
  • 图1.2.1 在电源线引入电源
  • 图1.2.2 输入电压与SPX2940输出电压
  • 图1.2.3 测量下载板上的TX输出波形
  • 图1.2.4 测量TX在上电后输出波形
  • 图1.2.5 展开输出波形可以大体看到输出波形的波特率在115200
  • 图1.2.6 ESP32调试接口定义
  • 图1.2.7 制作专用调试接口
  • 图1.2.8 Thonny 的Option中的Interpreter的选项设置
  • 图1.2.9 Thonny调试界面
  • 图1.2.10 编程接口RX波形
  • 图1.2.11 在RX,3.3V之间焊接1kΩ上拉电阻
  • 图1.2.12 改善后的RX波形
  • 图1.2.13 使用SD卡读写器去除SD卡中的程序
  • 图1.2.14 SD卡中的文件
  • 图1.2.15 连接Thonny之后出现的问题
  • 图1.2.16 STM32BL 接收到MM32发送的信息
  • 图1.3.1 可以实现简单的交互开发
  • 图2.1.1 设置RETURN,使得STM32的信息框成为交互窗口
  • 图2.3.1 下载执行结果
  • 图3.1 UART T-型器

调试来自于逐飞的MM32F3277移植有MicroPython开发板相关推荐

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

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

  2. ks8851网卡驱动在omap4460上的移植,发现开发板能发送数据,但是接受不到数据

    开发板是omap4460,内核我用的是3.0.80 版本的 ,网卡是ks8851,内核自带的网卡驱动,由于我移植上内核后,在命令行中ping,开发板和主机不同,于是我在主机上用抓包软件抓取数据包,发现 ...

  3. 移植tslib到开发板及部分问题解决

    qt的tslib的具体移植步骤和过程就不多讲了,我说说我按照手册移植好tslib后在开发板运行提示的错误以及我的解决方法,当然每个人的提示可能一样,解决方法就不一样,我也是个初学者,所以方法仅供大家参 ...

  4. Openssl移植到ARM开发板

    Openssl移植到ARM开发板 openssl源码下载 源码编译配置 使用生成的库文件 openssl源码下载 openssl源码可以在官网下载:https://www.openssl.org/so ...

  5. 移植wxX11到开发板上

    最近几天由于工作安排,要将wxX11程序移植到arm开发板上.一连工作了好几天,终于可以在板子上显示出一个"X"号,并且可以运行wxWidgets里面的程序,算是成功了.现就一些步 ...

  6. apache arm 交叉编译_Apache 2移植到Arm开发板的过程整理——如何交叉编译Apache 2

    话说要在arm开发板的linux系统中运行apache服务器,需要在pc linux系统中交叉编译Apache源码,在网上参考了很多资料都是1.3版本的,最后终于找到apache 2移植到arm开发板 ...

  7. RV1109开发板ssh服务器移植到arm开发板

    RV1109开发板ssh服务器移植到arm开发板 ssh功能移植到RV1109开发板的,由于RV1109的SDK中,没有telnet功能,有时候adb功能在量产中需要关闭,避免造成设备留有漏洞,造成安 ...

  8. I.MX6ULL开发板基于阿里云项目实战 3 :阿里云iot-SDK 移植到arm开发板

    上一篇博客讲的是创建产品和设备,本讲,我们将阿里云iot-SDK 移植到arm开发板. 参考资料: https://code.aliyun.com/edward.yangx/public-docs/w ...

  9. Qt5.14.2移植到SOM-RK3399开发板

    Qt5.14.2移植到SOM-RK3399开发板 1. 主机开发环境 2. 安装aarch64-linux-gnu-g++交叉编译工具 3. 移植Qt 3.1 修改Qt源码中的Makefile说明文档 ...

最新文章

  1. android 英文帮助文档地址,使用android SDk帮助文档(英文) 下载中文SDK帮助文档(中文)...
  2. mysql id自动递增两个_浅析Mysql索引数据结构演变,让你一看就懂
  3. git 本地分支与远程分支关联的一种方法
  4. 中国速度之二神山建设(3):有力的技术保障,基建世界里的云原生缩影 | IDCF DevOps案例研究...
  5. 【VB.NET】实验 编写个人信息管理系统
  6. 2017.3.14 游戏(scoi2009) 失败总结
  7. BZOJ1101 洛谷3455:[POI2007]ZAP——题解
  8. 2019 牛客多校第三场 H Magic Line
  9. linux产生大量随机数据,linux产生随机数与随机字符
  10. Java实验报告(基础练习、选择循环、数组、字符串及类和对象)
  11. Enviropro EP100D-08测定仪
  12. 如何使用ArcGIS将Excel数据转换为shp格式
  13. 李德毅院士:大数据认知
  14. 给定一字符串,按顺时针顺序输出为一个正方形
  15. PMP证书到期,有必要续证吗?
  16. 基于springboot+mybatis+mysql+layui员工工资管理系统
  17. 看看各省地图都像什么,笑趴了!
  18. android linux终端,为Android安装Linux终端仿真与环境APP
  19. ubuntu18.04解决因没有集成显卡驱动进不去界面问题
  20. HDU 4966:GGS-DDU

热门文章

  1. Oracle新一代数据库机 助所有规模企业迈向云端
  2. (MYSQL学习笔记4)事务的开启、提交、回滚
  3. DevExpress.GridControl.gridView的一些注意
  4. Python3内置模块之Pickle和cPickle数据持久化方法小结
  5. [国际A类会议] 2018最最最顶级的人工智能国际峰会汇总!CCF推荐!
  6. 页面刷新vuex数据消失问题解决方案
  7. Java-Maven(四):Eclipse集成Maven环境配置
  8. php性能分析工具 - xhprof的安装使用
  9. WinAPI: CopyFileEx
  10. S3C2440 SDRAM内存驱动 .