你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 1967|回复: 9

ARM®mbed OS 提高 之 SD卡 2 记录文本到SD卡

[复制链接]

61

主题

1071

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2016-11-1 11:34:44 | 显示全部楼层 |阅读模式




ARM®mbed OS 提高 之 SD卡 2
mbed SD卡教程
mbed这个特殊的开发平台!潜力巨大什么可以用这个东西来实现。
现在唯一的缺陷就是例程文档。虽然mbed网站很好,

其中微控制器执行最常见的任务是从仪表记录数据,目前最好的办法是使用SD卡。
数据将被存储SD卡内的ASCII文本文件。
若用逗号分隔值....它可以很容易地导入到所选择的电子表格或制图软件。

本实验需要以下条件:
mbed和USB线
SD卡 - 分区和格式化
SD卡接口板 - Adafruit的或Sparkfun的都可以!
一些面包线
耐心!

Adafruit的的MicroSD接口板
254-05.jpg
Sparkfun SD接口板
12941-01.jpg
这里是是如何工作的说明演示代码....
http://mbed.org/search/?type=&q=SD+card+tutorial  
需要找的其实在这里:
http://mbed.org/cookbook/SD-Card-File-System
mbed cookbook是有用的,但有点难
它包含大量的编程信息 - 库和使用,但没有图片和图表讲述如何连接!
SPI接口的SD卡通常通过SPI协议的主机微控制器通信。
nucleo有多个SPI端口 - PIN D11,D12和D13 - 即MOSI,MISO和SCK。
这三个引脚,但它们是不可互换。本测试用11,12和13!

下面是连接的图片

mbed SD card.png

834151796257800255.jpg

连接+ 5V至Vdd,因为我的SD板有逻辑电平转换为5V转换到3.3V。
如果使用只是一个无降压芯片的SD卡板则需连3.3v
下面是库文件
http://mbed.org/cookbook/SD-Card-File-System
确保接线正确。使用D11,12和13 MOSI,MISO和SCK。
D10连接cs
程序如下:
//平台nucleo+mbed+SD卡模块
//读写实验
#include "mbed.h"
#include "SDFileSystem.h"
//mbed SD Card tutorial
SDFileSystem sd(D11, D12, D13, D10, "sd"); // the pinout on the mbed Cool Components workshop board
//原平台LPC1768 (p11, p12, p13, p8, "sd");
//              mosi,miso,sck,cs,
//  nucleo       D11,D12,D13,D10  
int main() {
    printf("SD card test!\r\n");   

    mkdir("/sd/mydir", 0777);

    FILE *fp = fopen("/sd/mydir/sdtest.txt", "w");
    if(fp == NULL) {
        error("Could not open file for write\r\n");
    }
    fprintf(fp, "Hello fun SD Card World!\r\n");
    fclose(fp);
    printf("File successfully written and closed!\r\n");
}

EB72.tm.png
尝试解释代码如下:
第一行告诉编译器包含那些头文件。
第三行  SDFileSystem SD(D11,D12,D13,D10,“SD”);  告诉编译器SD卡被连接到D11,12,13和D10。
-- 针脚D10被称为CS或SS,印刷电路板上的丝印有显示
代码其余的部分打印一条消息到mbed com口,设置SD卡上的目录,然后创建一个名为sdtest.txt的文本文件。
如果该文件不能创建或 显示在串行终端上的消息错误;
该程序然后完成。如果文件被创建并打开成功的消息将在文本文件中写入,然后测试文件被关闭。
新消息被发送到串行终端来记录项目的成功。
本人使用虚拟串口软件AccessPort.exe
原作者使用PuTTy,符合Telnet或SSH要求的一个免费的终端程序。
可以从这里下载:
http://www.chiark.greenend.org.uk/~sgtatham/putty/

连接nucleo到PC,编译.bin文件复制到你的mbed并按下复位按钮。
如果一切顺利的绿色电源/编程LED指示灯将闪烁,然后该程序将退出。没有其它LED灯应点亮。  
COMXX -  9600,N,8,1,XX你可以查看你的虚拟mbed COM端口号:

如果拔下的SD卡,并查看SD卡目录会出现MDIR一个新文件夹,
该文件夹中会出现sdtest.txt。打开它,并验证它是否正确。
若实验失败下面的消息将在PuTTy显示:
LED闪烁SD卡失败...
如果看到这个消息,检查检查线路连接
这样我只需要一个USB电缆连接到mbed(而不是编程电缆),可以浏览SD卡中的数据!

回复

使用道具 举报

61

主题

1071

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
 楼主| 发表于 2016-11-1 11:39:31 | 显示全部楼层
回复 支持 反对

使用道具 举报

61

主题

1071

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
 楼主| 发表于 2016-11-1 11:44:54 | 显示全部楼层
微信截图_20161101114327.png

SD卡生成的文本记录
回复 支持 反对

使用道具 举报

1

主题

54

回帖

0

蝴蝶豆

初级会员

最后登录
2020-6-28
发表于 2016-11-4 21:55:54 | 显示全部楼层
在什么IDE编译的?
回复 支持 反对

使用道具 举报

11

主题

1139

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-7-10
发表于 2016-11-6 00:25:05 | 显示全部楼层
很有启发的帖子
回复 支持 反对

使用道具 举报

0

主题

159

回帖

0

蝴蝶豆

高级会员

最后登录
2017-3-9
发表于 2016-11-11 21:02:13 | 显示全部楼层
不错的教程
回复 支持 反对

使用道具 举报

4

主题

484

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-8-12
发表于 2016-11-18 07:12:34 来自手机 | 显示全部楼层
谢楼主分享
回复 支持 反对

使用道具 举报

27

主题

353

回帖

8

蝴蝶豆

论坛元老

最后登录
2020-12-7
发表于 2016-12-7 11:00:44 | 显示全部楼层
试了一下,没成功!
出现以下信息
Hello World!
No disk, or could not put SD card in to SPI idle state
Fail to initialize card
No disk, or could not put SD card in to SPI idle state
Fail to initialize card
Could not open file for write
回复 支持 反对

使用道具 举报

0

主题

79

回帖

0

蝴蝶豆

初级会员

最后登录
2019-8-14
发表于 2016-12-7 12:16:19 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

14

回帖

0

蝴蝶豆

高级会员

最后登录
2020-7-10
发表于 2017-4-4 11:09:30 | 显示全部楼层
在NucleoF103RB上试验失败。
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版