SDIO - 在SD card编辑档案
材料准备
- Ameba x 1
- SD card or MicroSD card x 1
- SD sniffer x 1 (optional)
范例说明
Ameba提供SD Host的功能,可以处理接上SD device的应用。读写SD Card是常见的应用,让Ameba可以在SD Card上面读取或纪录资料。
资料的格式使用常见的FAT,所以当Ameba读写完SD Card之后,可以在电脑上经由读卡机存取。
因为使用SD介面,所以可以直接接线到SD Card,不需要额外购买经由SPI介面的SD模组。底下是常见的SD Card的接脚:
这些接脚可以直接焊线接上Ameba:
注意:D1和D0分别对应WP和CD,需要分别接地,SD host控制器会根据这两根引脚判断SD card状态。
WP与CD状态说明:
Low: GND
High: Vcc
如果不想焊线在SD Card上面,市面上也有一些转接板:
SD Sniffer:
https://www.sparkfun.com/products/11468
SD Breakout:
https://www.sparkfun.com/products/12941
但不论焊线或是使用转接板,不可以将连接的线拉的过长,线的长短会影响传输品质。范例里使用的线材是20公分的杜邦线。
底下是SD转接板的接线,其中多了WP与CD的接线,这两根是卡槽的功能,所以没有出现在SD Card上:
另外,MicroSD的接法也是类似,可以直接接线、使用转接板、或是使用SD转接卡。底下是一般MicroSD的pin脚:
接线之后,打开范例 “File” -> “Examples” -> “AmebaSdFatFs” -> “file_read_write”
这个范例里,会新增文字档案 “test.txt”,内容是 “hello world!”,编辑完成之后关闭档案。然后再打开它,读出内容,并且印在Serial Monitor上。
接着将SD Card放入读卡机,在电脑上确认一下是否成功
WP | CD | 说明 |
High | High | 没有插入SD card |
HIGH | LOW | 插入SD card,写保护 |
LOW | LOW | 插入SD card,无写保护 |
程式码说明
程式码宣告了SdFatFs类别的物件来管理SD Card上面的Fat File System
SdFatFs fs;接着呼叫begin()来对Fat FS初始化,包括对SD Host初始化,以及挂载档案系统
fs.begin()接着打开档案,呼叫open()函数,参数里填的路径是绝对路径,回传值是SdFatFile类别的物件,用来操作这个被打开的档案。
SdFatFile file = fs.open(absolute_filename);SdFatFile这个类别继承了Stream类别,所以可以直接使用println对档案做写入
file.println(write_content);寫完之後關閉檔案
file.close()读的方式也是使用Stream的函数,所以我们再将档案打开,做读的动作:
file.read(buf, sizeof(buf));将读出来的资料印在Serial Monitor上面之后,最后将Fat File System关闭
fs.end();
Copyrights ©瑞晟微电子(苏州)有限公司 2021. All rights reserved. 使用条款