简 介: 对于从逐飞寄送的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-型器
■ 相关文献链接:
● 相关图表链接:
|