王伟强课程作品设计说明Word格式.docx
《王伟强课程作品设计说明Word格式.docx》由会员分享,可在线阅读,更多相关《王伟强课程作品设计说明Word格式.docx(7页珍藏版)》请在冰豆网上搜索。
一共六个通道,编号从A0~A5。
黑色部分为外部供电输入,外部7V~12VDC输入。
当USB的500ma电流不够使用的时候可以接上使用。
一般是用不上的啦。
5.深绿色部分是指示灯。
USB和POWER分别指示的是使用外部供电还是USB供电。
L是给用户使用的指示灯,连接到逻辑输出的13号脚。
图
图一arduino模板
SD卡读写模块(如图二),SD卡是一种低电压的flash闪存产品,有标准的MMC/SPI两种操作模块(如图三)。
对于MMC操作模式,读写速度快,控制信号线多,操作复杂,对于SPI操作模块,速度慢,线少,操作相对简单。
SD卡读写模块内置文件系统、可直接进行文件读写的SD卡模块,适用于单片机系统实现大容量存储方案。
单片机使用模块,可直接进行目录遍历、目录创建、目录删除、文件创建、文件删除、文件修改、卡格式化等标准文件系统操作,无需了解SD卡内部存储结构及文件系统实现细节。
特别是随着SD卡在生活中的普及,嵌入式系统把读写SD卡功能集成到系统,成为一种趋势。
图二、SD卡读写模块
图三、SD卡模块各部分功能
SD卡模块技术规格(如图四、五)
1、支持标准FAT文件系统,模块操作的SD卡可直接插入电脑读写。
2、模块内置MicroSD卡插槽,用户也可以自己扩展其它存储卡插槽,支持各有类SD、MMC卡。
3、模块作为SPI从机与单片机通讯,SPI总线的最高速率可达4Mbps。
读SD卡文件的速度最高达128K字节/秒,写SD卡文件的速度最高达64K字节/秒。
4、模块支持的SD卡容量为2GBytes,超过2G的SD卡,则作为2G使用。
5、尺寸50mm*20mm,2.54mm间距通用排针,方便集成。
1.3各个模块连接图
图四、电路连接原理图
图五、实物连接图
第2章软件设计部分
2.1软件执行流程、读写思想
读写思想:
分别用杜邦线在4、11、12、13、D3.3v接口与SD卡读写模块进行连接,利用BillGreiman开发的SdFat.h和SdFatUtil.h头文件和库文件就可实现读写。
2.2软件源代码
附程序代码:
#include
<
SimpleSDAudio.h>
//
Callback
target,
prints
output
to
serial
void
DirCallback(char
*buf)
{
Serial.println(buf);
}
char
AudioFileName[16];
Create
static
buffer
#define
BIGBUFSIZE
(2*512)
bigger
than
2*512
is
often
only
possible
on
Arduino
megas!
uint8_t
bigbuf[BIGBUFSIZE];
helper
function
determine
free
ram
at
runtime
int
freeRam
()
{
extern
__heap_start,
*__brkval;
v;
return
(int)
&
v
-
(__brkval
==
0
?
__heap_start
:
__brkval);
setup()
Open
serial
communications
and
wait
for
port
open:
Serial.begin(9600);
while
(!
Serial)
;
connect.
Needed
Leonardo
only
Serial.print(F("
Free
Ram:
"
));
Serial.println(freeRam());
Setting
the
manually
more
flexibility
SdPlay.setWorkBuffer(bigbuf,
BIGBUFSIZE);
\nInitializing
SimpleSDAudio
V"
SSDA_VERSIONSTRING
..."
If
your
SD
card
CS-Pin
not
Pin
4,
enable
adapt
following
line:
//SdPlay.setSDCSPin(10);
Select
between
SSDA_MODE_FULLRATE
or
SSDA_MODE_HALFRATE
(62.5kHz
31.25kHz)
modes
SSDA_MODE_MONO_BRIDGE,
SSDA_MODE_MONO
SSDA_MODE_STEREO
if
SdPlay.init(SSDA_MODE_FULLRATE
|
SSDA_MODE_MONO))
Serial.println(F("
initialization
failed.
Things
check:
*
a
inserted?
Is
wiring
correct?
maybe
you
need
change
chipSelect
pin
match
shield
module?
Error
code:
Serial.println(SdPlay.getLastError());
while
(1);
}
else
Wiring
correct
present."
loop(void)
count=0,
c,
flag;
Files
card:
SdPlay.dir(&
DirCallback);
ReEnter:
count
=
0;
\r\nEnter
filename
(send
newline
after
input):
do
while(!
Serial.available())
c
Serial.read();
if(c
>
'
)
AudioFileName[count++]
c;
while((c
!
0x0d)
(c
0x0a)
(count
14));
Looking
file...
if(!
SdPlay.setFile(AudioFileName))
found
card!
goto
ReEnter;
found."
Press
s
stop,
p
play,
h
pause,
f
select
new
file,
d
deinit,
view
status."
flag
1;
while(flag)
SdPlay.worker();
if(Serial.available())
switch(c)
case
s'
SdPlay.stop();
Stopped."
break;
p'
SdPlay.play();
Play."
h'
SdPlay.pause();
Pause."
d'
SdPlay.deInit();
SdPlay
deinitialized.
You
can
now
safely
remove
card.
System
halted."
while
(1)
f'
case
v'
Status:
isStopped="
Serial.print(SdPlay.isStopped());
isPlaying="
Serial.print(SdPlay.isPlaying());
isPaused="
Serial.print(SdPlay.isPaused());
isUnderrunOccured="
Serial.print(SdPlay.isUnderrunOccured());
getLastError="
RAM:
}}}