调试来自于逐飞的MM32F3277移植有MicroPython开发板
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调试来自于逐飞的MM32F3277移植有MicroPython开发板相关的知识,希望对你有一定的参考价值。
简 介: 对于从逐飞寄送的MicroPython开发板进行初步测试,建立了基于REPL进行交互式开发的环境。
关键词
: MicroPython,MM32,Thonny
§01 开发板信息
今天(2021-10-27)收到逐飞公司发送过来的移植有MicroPython开发板。
一、基本信息
1、电路板
开发板的正面图片与反面见封面图片以及下面图片。
▲ 图1.1.1 电路板的背面
2、示例程序
(1)下载地址
(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 Dlownload
char szString[0x8000];
ClearInfor();
strcpy(szString, "");
Clipboard()->GetTextBuf(szString, sizeof(szString) - 1);
MessageBeep(0);
SendChar(0x5, PORT1); // Send CTRL+A
int nLength = strlen(szString);
int i;
for(i = 0; i < nLength; i ++)
SendChar(szString[i], PORT1);
SendChar(0x4, PORT1); // Send CTRL+B
return;
}
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()
stm32cmd("MPDLD")
exit()
三、测试工具链
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开发板的主要内容,如果未能解决你的问题,请参考以下文章
测试逐飞的MM32F3277 MicroPython开发板的基本功能
制作测试MM32F3277-MicroPython最小电路板
MM32F3277 MicroPython移植过程中对应的接口文件
设计带有SD卡的 MM32F3277 MicroPython 实验板