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

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调试来自于逐飞的MM32F3277移植有MicroPython开发板相关的知识,希望对你有一定的参考价值。

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

关键词 MicroPythonMM32Thonny

 

§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 MicroPython开发板的基本功能

制作测试MM32F3277-MicroPython最小电路板

MM32F3277 MicroPython移植过程中对应的接口文件

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

利用SeekFree的核心板调试MM32F3277的ISP功能

MindMotion MM32F3277 SoftI2C功能测试