STM32 用 MicroPython 讀寫 MicroSD 卡的正確姿式

2021-02-24 MultiMCU EDU

背景介紹:
Sugar 曾發過一篇《怎樣讓自己的 stm32 開發板支持 micropython》,按照推文中的方法做大家都會有屬於自己的 pyboard。
近期有讀者向 Sugar 反饋用 pyboard 向 MicroSD 卡寫文件怎麼都寫不進去,本篇 Sugar 就來給出用 MicroPython 讀寫 MicroSD 卡的正確方法。

SDIO 接口 MicroSD 卡

看原理圖確認 MicroSD 卡槽是 SDIO 方式。

1、編譯時指明「有 SD 卡」,方法是:在 mpconfigboard.h 中加入:

#define MICROPY_HW_ENABLE_SDCARD    (1)

列如:

#define MICROPY_HW_BOARD_NAME       "SUGAR-PYB"#define MICROPY_HW_MCU_NAME         "STM32F407"
#define MICROPY_HW_HAS_SWITCH (1)#define MICROPY_HW_ENABLE_SDCARD (1)#define MICROPY_HW_HAS_FLASH (1)#define MICROPY_HW_ENABLE_RNG (1)#define MICROPY_HW_ENABLE_RTC (1)#define MICROPY_HW_ENABLE_DAC (1)#define MICROPY_HW_ENABLE_USB (1)

2、用 cd 命令進入 stm32 文 件夾,用以下命令重新編譯:

3、進入 build 出的文件夾,讓開發板進入 dfu 模式,用以下命令燒寫固件:

dfu-util -d 0483:df11 -a 0 -D firmware.dfu

SDIO 接口 MicroSD 卡的使用方法

一、先在 Linux 下用讀卡器格式化 MicroSD 卡

sudo sufdisk -u -lumount /dev/sdd1mkfs.fat /dev/sdd1

二、3 種使用方式

1、默認方式:插卡從 SD 卡啟動,不插卡從內部 Flash 啟動

2、無論如何都從內部 Flash 啟動:先不插卡,在 Flash 內建一個名為 SKIPSD 的空文件即可。

3、從內部 Flash 啟動後向 MicroSD 卡寫文件

先掛載、再寫入。

import os, pybsd = pyb.SDCard()os.mount(sd, '/sd')f = open("/sd/hello.txt", "w")f.write("Hello World from Micro Python to SUGAR-PYB")f.close()

提醒:在當前的 MicroPython 版本下,當插入 MicroSD 卡時可以分別向 MicroSD 卡和內部 Flash 寫文件。向 MicroSD 卡寫文件時用 f = open("/sd/hello.txt", "w"),向內部 Flash 寫文件時用 f = open("/flash/hello.txt", "w")

注意:通過 MicroPython 寫入的文件要重新將 pyboard 拔插一次才能看到新文件內容。

SPI 接口 MicroSD 卡

SPI 接口的 MicroSD 卡在 micropython 源碼的 /drivers/sdcard/ 路徑下有驅動 sdcard.py。使用時將其拷貝到 Pyboard 裡並重啟 Pyboard 就可以使用了,使用 RT-Thread IoT 開發板(既正點原子潘多拉開發板)測試的例程如下:

import pyb, sdcard, os  sd = sdcard.SDCard(pyb.SPI(1), pyb.Pin('C3'))pyb.mount(sd, '/sd')print(os.listdir('/sd'))

SPI 接口 MicroSD 卡的使用方法

一、先在 Linux 下用讀卡器格式化 MicroSD 卡

sudo sufdisk -u -lumount /dev/sdd1mkfs.fat /dev/sdd1

二、2 種使用方式

1、從內部 Flash 啟動後向 SD 卡裡寫文件

先掛載、再寫入。

import pyb, sdcard, os  sd = sdcard.SDCard(pyb.SPI(1), pyb.Pin('C3'))pyb.mount(sd, '/sd')print(os.listdir('/sd'))f = open("/sd/hello.c", "w")f.write("Hello World from Micro Python to SPI-SDCard")f.close()

2、運行 MicroSD 卡裡的 python 程序

先建一個測試程序,命名為 blink.py 放到 MicroSD 卡中,程序內容如下:

import pyb
led = pyb.LED(1)
while(True): led.on() pyb.delay(500) led.off() pyb.delay(500)

將 MicroSD 卡插到開發板上,然後運行下面的程序:

import pyb, sdcard, os  sd = sdcard.SDCard(pyb.SPI(1), pyb.Pin('C3'))pyb.mount(sd, '/sd')print(os.listdir('/sd'))
import sys sys.path.append("/sd/")import blink

這種修改 sys.path 的方法也適用於 SDIO 接口的 MicroSD 卡,只不過 SDIO 接口的卡要從卡裡運行的話直接從 MicroSD 卡啟動就行了,不用這麼麻煩。

PS

MicroPython 工程在 github 上有 500MB 多一點,從 github 上 clone 慢的讀者可以在公眾號後臺回復 code得到 Sugar 用天翼雲盤的共享連結,速度比 github 快不少。

關注作者

歡迎掃碼關注我的公眾號MultiMCU EDU。

提示:在公眾號「關於我」頁面可加作者微信好友。喜歡本文求點讚,有打賞我會更有動力。

相關焦點

  • MicroPython:STM32 上的 Python 開發
    Python的配置環境也不複雜,mac和linux都內置了python。Python的這一特點也讓國內不少高校開始選擇它作為程序設計課程來教授。 MicroPython:跑在微控制器上的Python MicroPython顧名思義就是可以跑在微處理器上面的python。
  • 乾貨| 教你在Win10的ubuntu子系統下編譯micropython
    git 同步下載 micropython 源碼。我們先在用戶目錄中創建一個projects目錄,將micropython下載到projects目錄中:cdmkdir projectscd projectsgit clone https://github.com/micropython/micropython因為文件比較多,github在國內訪問速度也不快,下載速度與網絡有很大關係。
  • 分析microsd卡怎麼用【圖解】
    而一般情況下,很多人都習慣使用一種特殊的小部件來擴充行動裝置的存儲容量,這個小部件就是大家熟悉的microsd卡。   什麼是microsd 卡?它的分類?  microsd卡就是俗稱的存儲卡,它是用來針對移動電子設備進行存儲容量擴展的小型部件設備。一般情況下,我們會使用它來對 平板電腦 、手機等電子設備進行存儲容量擴充。但是一直堅持機身一體化的iPhone和其他一些手機是沒有提供存儲卡的安裝卡槽的,因此它們也就沒有辦法使用存儲卡進行容量擴充。但是目前大部分安卓手機都支持存儲卡擴充。
  • Molex發布 microSD/micro-SIM 組合式連接器外形更薄,尺寸更小
    這種採取正常安裝方式的推拉式組合連接器高度為 2.28mm,帶有探測開關,將兩種卡的功能合二為一,從而節省空間。這樣無需再使用額外的次級印刷電路板設計。該連接器可容納以相同方向堆疊的卡,更加便於操作,具有更優的印刷電路板布局。這樣,這一組合式連接器具有市場上最小的高度以及最為緊湊的設計。
  • 在NUCLEO_H743上玩MicroPython
    隨著micropython 1.9.4版本的發布,micropython開始正式支持STM32H7微控制器。STM32H7作為目前STM32 Cotex-M系列控制器中性能最高的系列,micropython在它上面的表現如何呢?和其它型號相比,有什麼優勢?下面我們就在NUCELO_H743開發板上,看看MicroPython的表現。
  • STM32上使用USB Host讀寫U盤
    USB Function 能夠通過總線傳輸或接收數據或控制信息的設備,在 USB2.0 標準中,別稱為 Class本文主要是基於正點原子 stm32f767-atk-apollo 開發板,給出了 USB Host 讀寫 U 盤的配置和使用示例。
  • 分享 | STM32MP157A-DK1開發板評測
    要使用STM32CubeProgrammer.配置好從SD卡啟動後,插上電源即可啟動.3.TF卡槽, DK1/DK2板子上沒有NandFlash/NorFlash/eMMC,這是唯一的NV存儲. 如果要用其他卡做起動盤, 建議最少16G.4.帶麥的音頻接口. 基本上任何耳機都可以.5.STLink V2-1接口. 除了STLink 還有一個虛擬串口.6.HDMI接口, 基本上任何帶HDMI的顯示器都可以.
  • 如何正確的打開python寫代碼
    上一篇文章講到了python的安裝,接下來要說一下python 安裝好後的程序應用!首先在開始菜單找到你安裝的python.如上圖所示,我用的是python2.7的版本的,出現5個下拉菜單。好奇寶寶可以嘗試挨個點開看看。
  • 原來是用錯了讀卡器,雷克沙lexar 1667X 真實讀寫性能測試
    128G雷克沙1667x的這個讀寫性能雖然略低於同規格下的SONY SF-M128存儲卡,但差異不算太大,同時在價格上遠遠低於SONY SF-M128存儲卡,差價幾乎還可以買上兩張128G雷克沙1667x,這也是自己雖然用著SONY A6100拍4K短片,但是沒有購買原廠SD卡的原因。
  • STM32讀保護功能和清除讀保護功能設置
    一旦設置了Flash的讀保護,內置的Flash存儲區只能通過程序的正常執行才能讀出,而不能通過下述任何一種方式讀出:通過調試器(JTAG或SWD);從RAM中啟動並執行的程序;2)、防寫是以四頁(1KB/頁) Flash存儲區為單位提供防寫,對被保護的頁實施編程或擦除操作將不被執行,同時產生操作錯誤標誌。
  • STM32 上使用 USB Host 讀寫 U 盤
    USB Function 能夠通過總線傳輸或接收數據或控制信息的設備,在 USB2.0 標準中,別稱為 Class本文主要是基於正點原子 stm32f767-atk-apollo 開發板,給出了 USB Host 讀寫 U 盤的配置和使用示例。
  • 颶風資訊 | SanDisk發布世界第一個1TB MicroSD Card
    這張1T的MicroSD Card通過西數專有的快閃記憶體技術,可使數據的傳輸速度達到160MB/s(讀)和90MB/s(寫)(通常在影視製作中,要求存儲卡的最低寫入速度為30MB/s)。這樣就可以裝在手機,無人機之類的設備上進行長時間拍攝而不用換卡。即使有些手機軟體不支持直接錄進SD卡內,也可以將手機的文件轉移到卡中再繼續用手機錄製素材。
  • 宇瞻推出最快64GB microSDXC卡
    今天,宇瞻率先推出世界上最快的高容量超高速microSDXC 64GB記憶卡。這款產品採用最新UHS - 1接口和SDA 3.01記憶卡標準,為智慧型手機,平板電腦,數據記錄器等設備,提供高達30MB/s的UHS超高傳輸速率。
  • 基於STM32的Mifare IC卡讀寫卡器設計
    系統以STM32F103C8T6為主控晶片,讀寫卡晶片採用MFRC522晶片(支持14443A協議,其頻率為13.56MHz),採用SPI通訊方式實現與Mifare IC卡的通訊;利用雙線並繞的方式設計PCB天線,大幅提高了讀寫卡器的天線信號強度和生產成品率。上位機軟體基於VC6.0底層代碼編寫,方便地實現了對Mifare IC卡的讀寫。
  • siliconpower的1tbmicrosd卡
    單憑使擁有1TB存儲產品的前景更接近大眾在推出Sandisk Extreme 1TB和Micron C200 1TB存儲卡之後,Silicon Power推出了其首款1TB microSDXC存儲卡,領先於諸如Kingston或Samsung之類的大公司。該存儲產品是該公司高級品牌的一部分,僅是市場上這種容量的第六張存儲卡。
  • STM32MP157開發板入門使用教程
    >2. 1 100ask_stm32mp157 全功能開發板硬體資源簡介開發板圖片如下,各個標號對應的硬體在板子背後都寫有名字:上面開發板圖片中,各標號的硬體含義如下圖:1、4G狀態指示燈21、AP6236WIFI藍牙晶片2、LED用戶燈22、RGB888接口3、LED用戶燈23、eMMC4、TYPE C 串24
  • TE提供超薄防刮1.18毫米插拔式micro-SIM卡連接器
    近日 - 全球連接領域的領導者TE Connectivity(TE)今日推出超薄防刮插拔式micro-SIM卡連接器,是業界同類連接器中高度最低的産品之一,為其 micro-SIM卡(3FF)系列産品再添一套連接器解決方案,適用於更輕薄的移動電話和智慧型手機。
  • Micropython 玩轉硬體系列1:環境搭建
    學Python幹什麼用呢?我這本身是做嵌入式的,聽說有個叫MicroPython的,能直接運行在單片機上,這讓我很感興趣。查了下,MicroPython是 Python 3 語言的精簡高效實現 ,包括Python標準庫的一小部分,經過優化可在微控制器和受限環境中運行。
  • 世界上第一款512GB的microSD內存卡,你會買嗎?
    而這款內存卡對於手機和平板等電子設備是非常友好的,理論上用戶設備只要支持microSDXC就可以使用。不同的寫入速度和視頻標準所支持拍攝的視頻格式 ©SD Association 除了為智慧型手機、無人機和運動相機提供巨大的存儲容量外,該卡還可以在更大的相機中通過microsd-SD卡適配器轉換為標準
  • nano-sim卡和micro sim卡有什麼區別【詳解】
    Micro sim卡是第一次真正意義上對傳統意義上的SIM卡進行修改,它的體積比傳統的SIM卡要更小。蘋果公司從iPhone 4開始使用卡託這種裝置,確保micro sim卡能夠正確安裝到iph手機之中。Micro sim又被人們稱為中卡,傳統的SIM卡則被人們稱為大卡。