本文測(cè)試了基于MM32F3277下的MicroPython電路板設(shè)計(jì)。其中包含有SD卡接口,常用外設(shè)接口等。驗(yàn)證了現(xiàn)在的移植的MicroPython的對(duì)文件的基本操作功能。
01 設(shè)計(jì)背景
一、MM32F3277 MicroPython
利用MicroPython開發(fā)嵌入式,是在犧牲一定的性能的基礎(chǔ)上增加了開發(fā)的靈活性。MicroPython的解釋執(zhí)行代碼,可以將嵌入式底層的硬件差異性進(jìn)行屏蔽。
在 制作測(cè)試MM32F3277-MicroPython最小電路板[1] 設(shè)計(jì)了基于MM32F3277的MicroPython的實(shí)驗(yàn)板。來自于靈動(dòng)(MindMotion)的MM32F3277具有豐富的資源。經(jīng)過測(cè)試一下兩款不同的MicroPython的移植版本,都可以很好地運(yùn)行。
調(diào)試來自于逐飛的MM32F3277移植有MicroPython開發(fā)板[2]
來自靈動(dòng)的MM32F3277 MicroPython 實(shí)驗(yàn)板設(shè)計(jì)和軟件測(cè)試[3]
二、SD卡接口
1、SD卡插座
根據(jù) pyBoard v1.1-CN STM32F405RG單片機(jī)開發(fā)板 MicroPython編程[4] 板上的配置,它使用了 MICRO SD卡座 迷你短體TF卡座 帶偵測(cè)腳內(nèi)存卡槽 8P 高H2.6/3.0MM[5] 。這款SD卡組具有三種尺寸:
- 短體H2.6MM 不帶有偵測(cè)腳;短體H3.0MM 帶有偵測(cè)腳;短體H3.75MM 帶有偵測(cè)腳;
▲ 圖1.2.1 短體H2.6MM卡座尺寸
2、SD卡接口
根據(jù)OneOS(來自于SeekFree)的評(píng)估板上的SD卡接口設(shè)計(jì),來設(shè)計(jì)基于MM32F3277的SD卡的接口。由于這款主板上的SD卡已經(jīng)在 前面兩個(gè)版本的MicroPython中得到的驗(yàn)證。
▲ 圖1.2.2 SD 卡接口定義
根據(jù)上面卡槽的定義,可以知道SD卡的管腳定義順序如下圖所示:
▲ 圖1.2.3 SD 卡以及卡槽的管腳順序定義
根據(jù) MM32F3277用戶手冊(cè)[6] 中關(guān)于管腳的定義,可以看到,SD卡的接口使用了MCU的 SDIO(安全數(shù)字輸入輸出接口),兼容 SD/SDIO/MMC的設(shè)備控制器, 作為控制外部的SD/SDIO/MMC 卡通信接口。
▲ 圖1.2.4 MM32F3277 端口功能定義
三、建立AD元器件庫
根據(jù)前面給出的SD卡槽的數(shù)據(jù),在AltumDesign中檢查對(duì)應(yīng)的元器件庫。根據(jù) MICRO SD卡座[8] 網(wǎng)頁上給出的基本幾何參數(shù),設(shè)計(jì)AD中的元器件庫。對(duì)于兩旁的金屬外殼固定焊盤的尺寸不詳,通過圖片測(cè)量到各部分的具體尺寸。
1、器件尺寸
▲ 圖1.3.1 在圖形上測(cè)量幾何位置
2、器件封裝
▲ 圖1.3.2 元器件封裝
3、器件原理圖
原理圖器件名稱 :MINI-SD
▲ 圖1.3.3 原理圖器件定義
02 設(shè)計(jì)測(cè)試
一、設(shè)計(jì)電路板
在MM32F3277 MicroPython 實(shí)驗(yàn)板設(shè)計(jì)和軟件測(cè)試[4]基礎(chǔ)上,增加SD卡座電路,設(shè)計(jì)測(cè)試電路。
1、原理圖
▲ 圖2.1.1 電路原理圖
2、快速制版PCB
為了適合一分鐘制版,如下設(shè)計(jì)了適應(yīng)單面板制作的PCB。
▲ 圖2.1.2 設(shè)計(jì)快速制版PCB
3、焊接電路板
下面是經(jīng)過一分鐘制版,焊接形成測(cè)試電路板。
▲ 圖2.1.3 經(jīng)過一分鐘制板,焊接形成測(cè)試電路板
二、測(cè)試電路板
1、上電測(cè)試
施加+5V工作點(diǎn),測(cè)量電路板上的3.3V穩(wěn)壓輸出3.3V。靜態(tài)耗電量大約:6mA左右。
2、下載MicroPython
使用 MM32-LINK[7] 將來自于靈動(dòng)的MicroPython(2021-11-5版本)下載到MM32F3277中。
▲ 圖2.2.1 下載MicroPython過程
3、測(cè)試MicroPython是否工作
(1)測(cè)試晶體信號(hào)
來自于靈動(dòng)的MicroPython使用到外部的晶體時(shí)鐘,所以應(yīng)該能夠測(cè)量在外部晶體上的8MHz晶體振蕩信號(hào)。
▲ 圖2.2.2 外部晶體上的振蕩信號(hào)
(2)測(cè)量REPL上電串口信號(hào)
因?yàn)镸icroPython在啟動(dòng)后,會(huì)在REPL端口輸出版本信息,因此應(yīng)該能夠在UART1的TX測(cè)量輸出信號(hào)。
▲ 圖2.2.3 上電后在UART1的TX測(cè)量到的輸出信號(hào)
(3)測(cè)量REPL
使用 STM32-Bootloader[8] 連接到REPL端口,測(cè)試REPL相互的操作。
▲ 圖2.2.4 在STM32-BOOLOADER接收到的REPL的提示符
三、測(cè)試SD卡
1、存儲(chǔ)與讀取文件
在SD卡中預(yù)先存儲(chǔ) “test1.py” 文本文件。然后在 MicroPython進(jìn)行讀取。如下是靈動(dòng)蘇勇演示對(duì)于文件的讀取和寫入的示例過程。
▲ 圖2.3.1 蘇勇給出的演示示例程序
(1)測(cè)試程序
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)測(cè)試結(jié)果
程序下載與執(zhí)行過程,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個(gè)字節(jié),對(duì)應(yīng)的 test.txt長度為14。緊接著讀取其中的內(nèi)容并顯示。
(3)在Windows下讀取SD卡
使用SD讀寫器,可以看到SD中存在著剛才有MicroPython寫入的文件。
▲ 圖2.3.2 Windows下查看SD卡內(nèi)部的內(nèi)容
2、測(cè)試其它SD卡
使用另外一款只有512MB的SD卡,測(cè)試在MicroPython下是否能夠讀取該卡中的內(nèi)容。
▲ 圖2.3.3 測(cè)試一個(gè)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 "<stdin>", line 13, in <module>
OSError: 19
>>>
3、寫入main.py
在SD存儲(chǔ) main.py,MicroPython上電后首先執(zhí)行 main.py程序。
下面是main.py的測(cè)試內(nèi)容:
from machine import Pin
import utime
for _ in range(10):
print(_)
utime.sleep_ms(100)
寫入SD卡那中。將SD卡插入測(cè)試 MicroPython小板:
▲ 圖2.3.4 在SD卡中存儲(chǔ)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
>>>
※ 測(cè)試總結(jié) ※
本文測(cè)試了基于MM32F3277下的MicroPython電路板設(shè)計(jì)。其中包含有SD卡接口,常用外設(shè)接口等。驗(yàn)證了現(xiàn)在的移植的MicroPython的對(duì)文件的基本操作功能。
參考資料
[1]制作測(cè)試MM32F3277-MicroPython最小電路板: https://zhuoqing.blog.csdn.net/article/details/121131867
[2]調(diào)試來自于逐飛的MM32F3277移植有MicroPython開發(fā)板: https://zhuoqing.blog.csdn.net/article/details/120997254
[3]MM32F3277 MicroPython 實(shí)驗(yàn)板設(shè)計(jì)和軟件測(cè)試: https://zhuoqing.blog.csdn.net/article/details/121146277
[4]pyBoard v1.1-CN STM32F405RG單片機(jī)開發(fā)板 MicroPython編程: https://item.taobao.com/item.htm?spm=a1z09.2.0.0.69092e8dBgj4Qc&id=624223471577&_u=6nvskcd0517
[5]MICRO SD卡座 迷你短體TF卡座 帶偵測(cè)腳內(nèi)存卡槽 8P 高H2.6/3.0MM: https://detail.tmall.com/item.htm?id=606944990541&spm=a1z09.2.0.0.69092e8dBgj4Qc&_u=6nvskcd69a1
[6]MM32F3277用戶手冊(cè): 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