4030|0

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32F407VG挂载SD卡sdcard [复制链接]

 
本帖最后由 ddd啊发 于 2019-8-31 00:55 编辑




此内容由EEWORLD论坛网友钞调侠原创,如需转载或用于商业用途需征得作者同意并注明出处
首先原理图和连接示意图([FatFs 学习] SD卡总结-SPI模式, https://www.cnblogs.com/mr-bike/p/3546228.html)

以下是做好的实验记录:

#(sysname='pyboard', nodename='pyboard', release='1.11.0', version='v1.11-254-g1fe1ff935 on 2019-08-30', machine='F4DIY with STM32F407')
# 硬件示意图,https://www.cnblogs.com/mr-bike/p/3546228.html
# 闪迪8G, 红色, 曾经用来nanoPi Duo(运行ubuntu用的, A7核,由于认为直接拔电可能会损坏sd卡, 需要先关机的缘故,就凉那了)
from machine import SPI, Pin
from sdcard import SDCard
import os
import pyb
spi = SPI(-1, sck=Pin("PC12"), miso=Pin("PC8"), mosi=Pin("PD2"))
sdcard = SDCard(spi, cs=Pin("PC11"))
# 首先我们可以用os.mount挂载到除了“”以外的任意不存在目录
os.mount(sdcard, '/sd')
os.chdir("/sd") # 这样,当前路径就会变到/sd目录下
os.listdir("") # 可以看到有['flash', 'sd']
os.umount("/flash") # 这样可以卸载原来的flash目录
os.umount("/sd") # 同时也可以卸载当前所在的目录,
os.listdir("") # [] 什么都没有了
os.mount(sdcard, "/sd") # 重新挂载上去即可
os.mount(pyb.Flash, "/flash") # 原来的flash目录对象在pyb里面有,没的话得在源码编译里面加#define MICROPY_HW_HAS_FLASH        (1)
# 调用os.chdir("/sd")后,open("xxx.xxx", 'w')就是直接在sdcard里创建了
f = os.open("/sd/xxx.xxx", 'w')
f.write("write test\n")
f.close()
os.open("/sd/xxx.xxx", 'r').read() # 对于
# 研究micropython的时候, 挂来挂去,最后可能就挂不上了,在卸载的情况下可以尝试调用下面两句
# 对了,尽量不要这种情况下拔卡。。。否则可能需要重新格式化卡
vfs = os.VfsFat(sdcard)
vfs.mkfs(sdcard)    # 需要稍等一下, 如果是还挂载着,就会报错,大概是这样的错误
# OSError:
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
#   File "sdcard.py", line 262, in writeblocks
#   File "sdcard.py", line 203, in write
# 对于中途拔出的情况,再次插入的时候会需要重新初始化,否则读写会报以下错误
# open("/sd/test.txt", 'w')
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
#   File "sdcard.py", line 234, in readblocks
# OSError: [Errno 5] EIO
# 调用一下sd卡的初始化函数就好了
sdcard.init_card()


源码的话是在github上找的,自己进行了适配板子的修改,摸索了两天没有能在固件上实现sd卡挂载,暂时先这样的方式吧,放boot文件里下载就好, sdcard模块在源码micropython/drivers/scard/sdcard.py,里面还有test文件

闲话一下, 源码micropython/examples下有asm嵌入式汇编的例程,另外我自己用asm实现了启动STM32的硬件外部计数器模式, ULN2003步进电机, NEC软件正交编码器计数, matboard矩阵键盘, PID等,稍微移植了下MPU9250,没能成功移植DMP,不过都挺简单的,几行代码的事,就没有发出来,或者找个时间统一分享一下。

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表