社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

从裸片到MicroPython

21ic电子网 • 3 年前 • 488 次点击  

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

01 计背景

一、MM32F3277 MicroPython

  利用MicroPython开发嵌入式,是在牺牲一定的性能的基础上增加了开发的灵活性。MicroPython的解释执行代码,可以将嵌入式底层的硬件差异性进行屏蔽。

  在 制作测试MM32F3277-MicroPython最小电路板[1] 设计了基于MM32F3277的MicroPython的实验板。来自于灵动(MindMotion)的MM32F3277具有丰富的资源。经过测试一下两款不同的MicroPython的移植版本,都可以很好地运行。

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

  • 来自灵动的MM32F3277 MicroPython 实验板设计和软件测试[3]

二、SD卡接口

1、SD卡插座

  根据  pyBoard v1.1-CN STM32F405RG单片机开发板 MicroPython编程[4] 板上的配置,它使用了 MICRO SD卡座 迷你短体TF卡座 带侦测脚内存卡槽 8P 高H2.6/3.0MM[5] 。这款SD卡组具有三种尺寸:

  • 短体H2.6MM 不带有侦测脚;
  • 短体H3.0MM 带有侦测脚;
  • 短体H3.75MM 带有侦测脚;
▲ 图1.2.1 短体H2.6MM卡座尺寸

2、SD卡接口

  根据OneOS(来自于SeekFree)的评估板上的SD卡接口设计,来设计基于MM32F3277的SD卡的接口。

  由于这款主板上的SD卡已经在 前面两个版本的MicroPython中得到的验证。

▲ 图1.2.2 SD 卡接口定义

  根据上面卡槽的定义,可以知道SD卡的管脚定义顺序如下图所示:

▲ 图1.2.3 SD 卡以及卡槽的管脚顺序定义

  根据  MM32F3277用户手册[6] 中关于管脚的定义,可以看到,SD卡的接口使用了MCU的 SDIO(安全数字输入输出接口),兼容 SD/SDIO/MMC的设备控制器, 作为控制外部的SD/SDIO/MMC 卡通信接口。

▲ 图1.2.4 MM32F3277 端口功能定义

三、建立AD元器件库

  根据前面给出的SD卡槽的数据,在AltumDesign中检查对应的元器件库。根据  MICRO SD卡座[8] 网页上给出的基本几何参数,设计AD中的元器件库。对于两旁的金属外壳固定焊盘的尺寸不详,通过图片测量到各部分的具体尺寸。

1、器件尺寸

▲ 图1.3.1 在图形上测量几何位置

2、器件封装

  PCB封装名称 :SD-H26MM

▲ 图1.3.2 元器件封装

3、器件原理图

  原理图器件名称 :MINI-SD

▲ 图1.3.3 原理图器件定义

02 计测试

一、设计电路板

  在MM32F3277 MicroPython 实验板设计和软件测试[4]基础上,增加SD卡座电路,设计测试电路。

1、原理图

▲ 图2.1.1 电路原理图

2、快速制版PCB

  为了适合一分钟制版,如下设计了适应单面板制作的PCB。

▲ 图2.1.2 设计快速制版PCB

3、焊接电路板

  下面是经过一分钟制版,焊接形成测试电路板。

▲ 图2.1.3 经过一分钟制板,焊接形成测试电路板

二、测试电路板

1、上电测试

  施加+5V工作点,测量电路板上的3.3V稳压输出3.3V。静态耗电量大约:6mA左右。

2、下载MicroPython

  使用 MM32-LINK[7]  将来自于灵动的MicroPython(2021-11-5版本)下载到MM32F3277中。

▲ 图2.2.1  下载MicroPython过程

3、测试MicroPython是否工作

(1)测试晶体信号

  来自于灵动的MicroPython使用到外部的晶体时钟,所以应该能够测量在外部晶体上的8MHz晶体振荡信号。

▲ 图2.2.2 外部晶体上的振荡信号

(2)测量REPL上电串口信号

  因为MicroPython在启动后,会在REPL端口输出版本信息,因此应该能够在UART1的TX测量输出信号。

▲ 图2.2.3 上电后在UART1的TX测量到的输出信号

(3)测量REPL

  使用 STM32-Bootloader[8] 连接到REPL端口,测试REPL相互的操作。

▲ 图2.2.4 在STM32-BOOLOADER接收到的REPL的提示符

三、测试SD卡

1、存储与读取文件

  在SD卡中预先存储 “test1.py” 文本文件。然后在 MicroPython进行读取。

  如下是灵动苏勇演示对于文件的读取和写入的示例过程。

▲ 图2.3.1 苏勇给出的演示示例程序

(1)测试程序

from machine                import Pin
import utime

with open('test.txt''w'as f:
    f.write('Hello SD file.')

with open('test.txt''r'as f:
    print(f.read())

(2)测试结果

  程序下载与执行过程,REPL界面显示如下:

Reset MicroPython...
Wait for MicroPython come back...
Download MicroPython : 24 lines/576 characters.
Begin to download program...

14
Hello SD file.
>>> 

  上面显示了写入SD file:14个字节,对应的 test.txt长度为14。紧接着读取其中的内容并显示。

(3)在Windows下读取SD卡

  使用SD读写器,可以看到SD中存在着刚才有MicroPython写入的文件。

▲ 图2.3.2 Windows下查看SD卡内部的内容

2、测试其它SD卡

  使用另外一款只有512MB的SD卡,测试在MicroPython下是否能够读取该卡中的内容。

▲ 图2.3.3 测试一个512M的SD卡

  使用相同的程序,MicroPython显示如下信息:

Reset MicroPython...
Wait for MicroPython come back...
Download MicroPython : 24 lines/576 characters.
Begin to download program...

Traceback (most recent call last):
  File "", line 13in 
OSError: 19
>>> 

3、写入main.py

  在SD存储 main.py,MicroPython上电后首先执行 main.py程序。

  下面是main.py的测试内容:

from machine                import Pin
import utime

for _ in range(10):
    print(_)
    utime.sleep_ms(100)

  写入SD卡那中。将SD卡插入测试 MicroPython小板:

▲ 图2.3.4 在SD卡中存储main.py

  上电后,程序输出:

[Y] sdcard ready.

[Y] file system on sdcard ready.

[Y] run the main.py on disk ...

0
1
2
3
4
5
6
7
8
9
[Y] done. 1

MicroPython v1.16 on 2021-11-05; MB_F3270 with MM32F3277G7P
>>> 

试总结 ※

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

参考资料

[1]

制作测试MM32F3277-MicroPython最小电路板: https://zhuoqing.blog.csdn.net/article/details/121131867

[2]

调试来自于逐飞的MM32F3277移植有MicroPython开发板: https://zhuoqing.blog.csdn.net/article/details/120997254

[3]

MM32F3277 MicroPython 实验板设计和软件测试: https://zhuoqing.blog.csdn.net/article/details/121146277

[4]

pyBoard v1.1-CN STM32F405RG单片机开发板 MicroPython编程: https://item.taobao.com/item.htm?spm=a1z09.2.0.0.69092e8dBgj4Qc&id=624223471577&_u=6nvskcd0517

[5]

MICRO SD卡座 迷你短体TF卡座 带侦测脚内存卡槽 8P 高H2.6/3.0MM: https://detail.tmall.com/item.htm?id=606944990541&spm=a1z09.2.0.0.69092e8dBgj4Qc&_u=6nvskcd69a1

[6]

MM32F3277用户手册: https://www.mindmotion.com.cn/download/products/DS_MM32F3270_SC.pdf

[7]

MM32-LINK: https://zhuoqing.blog.csdn.net/article/details/121131071

[8]

STM32-Bootloader: https://gitee.com/tsinghuajoking/programming-technology/tree/master/C/STM32%20Bootloader



作者:卓晴
来源:TsinghuaJoking

版权归原作者所有,如有侵权,请联系删除。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/123063
 
488 次点击