با سلام .
من یک ماژول VS1003 خریدم .
اونو به مگا 32 با این شماتیک وصل کردم . پایه های TX , RX را به جایی وصل نکردم .

http://www.up2.98ia.com/images/05845720100353587717.jpg
بقیه پایه هم عینا نام پایه هایی که روی ماژول نوشته .
فایل LISTA.TXT تو MMC یخته میشه ولی هیچی توش نیست .
MP3 هم پخش نمیشه حتی اگه اسم فایلو مستقیم ارسال کنم .
اینم سورسم ؟؟
من یک ماژول VS1003 خریدم .
اونو به مگا 32 با این شماتیک وصل کردم . پایه های TX , RX را به جایی وصل نکردم .

http://www.up2.98ia.com/images/05845720100353587717.jpg
بقیه پایه هم عینا نام پایه هایی که روی ماژول نوشته .
فایل LISTA.TXT تو MMC یخته میشه ولی هیچی توش نیست .
MP3 هم پخش نمیشه حتی اگه اسم فایلو مستقیم ارسال کنم .
اینم سورسم ؟؟
کد:
'///////////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////////////////////////////////////////
'
' MP_3_PLAYER with VS1001k FOR MP3.FILES FORMAT Name 8.3 FAT16 AVR-DOS 5.5
' data 14-06-2007 versione BASCOM 1.8.11.3 AVR-DOS 5.5
' written by GIOVANNI DE LUCA
' HTTP://delucagiovanni.interfree.it robot applications and others
' HTTP://WWW.LNS.INFN.IT nuclear phisics applications
' HTTP://www.youtube.com/tubincolo my video mobile-robots
' deluca@lns.infn.it my e-mail
' to control it's used serial port com1 and pul "UP" to change songs
' to make test I used 64Mb MMC with 20 songs in the MMC
' but I thing that it's possible read bigger MMC memory without problem
'
'///////////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////////////////////////////////////////
$prog &HFF , &H4F , &HC5 , &HFF 'FUSE BITS generated
$regfile = "M32def.dat " 'IT'S POSSIBLE USE DIFFERENT AVR-CHIPS
$crystal = 8000000
Config Porta = Output
Porta = 0
Set Porta.0
Wait 3
Reset Porta.0
'BUT this NOT TESTED
'-------------------------------------------------------------------------------
Config Timer1 = Timer , Prescale = 64
Config Clock = Soft
Enable Interrupts
Enable Timer1
On Timer1 Timer_1
Config Date = Dmy , Separator = .
'-------------------------------------------------------------------------------
Vs_clock Alias Portd.6
Vs_mosi Alias Portd.5
Vs_miso Alias Pind.4
Xcs Alias Portd.3
Bsync Alias Portd.2
Dreq Alias Pind.1
Xreset Alias Portd.0
Led Alias Portb.5
Avanti Alias Pinb.6
'-------------------------------------------------------------------------------
Config Avanti = Input 'pulsante avanti
Config Led = Output 'led
Config Vs_miso = Input 'serial input vs-1001
Config Vs_mosi = Output 'serial out vs-1001
Config Vs_clock = Output 'serial clock vs-1001
Config Xcs = Output 'VS Chip Select
Config Xreset = Output 'VS Reset
Config Dreq = Input 'VS Data Request
Config Bsync = Output 'VS Stream Request
'-------------------------------------------------------------------------------
Declare Sub Vs_init()
Declare Sub Soft_reset()
Declare Sub Vs_write(byval Vs_address As Byte , Byval Data1 As Byte , Byval Data2 As Byte)
Declare Function Vs_read(byval Vs_address As Byte) As Word
Declare Sub Send_mp3(byval Filename As String)
'-------------------------------------------------------------------------------
Const Vs_rd = &B0000_0011 'Write command vs1001
Const Vs_wr = &B0000_0010 'Read command vs1001
Const Vs_mode = 0
Const Vs_status = 1
Const Vs_clockf = 3
Const Vs_decode_time = 4
Const Vs_audata = 5
Const Vs_volume = 11
'-------------------------------------------------------------------------------
Dim B As Byte
Dim I As Integer
Dim J As Long
Dim Curbyte As Long
Dim S As String * 20
Dim Sample_rate As Word
Dim Bit_rate As Word
Dim Is_stereo As Word
Dim Audata As Word
Dim Filename As String * 11
Dim Mmc_data(512) As Byte '512 byte
Dim Tempo_new As Word
Dim Tempo_old As Word
Dim Flag_read As Bit
Dim Flag_play As Bit
Dim Comando As String * 10
Dim Mode_low As Byte
Dim Mode_hig As Byte
Dim Volume As Word
Dim Volume_low As Byte
Dim Volume_hig As Byte
'-------------------------------------------------------------------------------
$include "Config_AVR-DOS.BAS"
$include "Config_MMC.bas"
Wait 3
B = Drivereset()
If Drivecheck() <> 0 Then
Set Porta.0
Wait 2
Reset Porta.0
End If
If Driveinit() <> 0 Then
Set Porta.1
Wait 2
Reset Porta.1
End If
If Initfilesystem(1) <> 0 Then
Set Porta.2
Wait 2
Reset Porta.2
End If
'-------------------------------------------------------------------------------
Bsync = 0
Xreset = 0
Xcs = 1
Portb.6 = 1 'res pull up
Flag_play = 0 'sta suonando ?
Flag_read = 1
'-------------------------------------------------------------------------------
Open "Lista.txt" For Output As #9
Print #9 , "Ali - SOHEIL" 'create file.list in MMC
S = Dir( "*.mp3")
While Len(s) > 0
' Print S ; " " ; Filedate() ; " " ; Filetime() ; " " ; Filelen()
Print #9 , S 'memorizza la lista
S = Dir()
Wend
Close #9
End 'gia letto ?
'-------------------------------------------------------------------------------
'-------------------------- PROGRAM START -------------------------------------
'-------------------------------------------------------------------------------
Set Porta.4
Vs_init
Wait 3 'reset hardware e inizializza
Reset Porta.4
Wait 1
'-------------------------------------------------------------------------------
'--------------------------- MAIN PROGRAMM -------------------------------------
'-------------------------------------------------------------------------------
S = "azan.mp3"
Set Porta.4 'READ filename Mp3
Call Send_mp3(s)
Set Porta.3 'play mp3
End
'(
Do
Open "Lista.txt" For Input As #9 'OPEN LA LISTA
While Eof(#9) = 0
Line Input #9 , S 'READ filename Mp3
Call Send_mp3(s) 'play mp3
Wend
Close #9
Loop
End
')
'-------------------------------------------------------------------------------
'---------------------------- TIMER 1 ------------------------------------------
'-------------------------------------------------------------------------------
Timer_1:
If Bsync = 0 And Flag_play = 1 And Flag_read = 1 Then 'per leggere inforamzioni
Flag_read = 0
Audata = Vs_read(vs_audata)
Sample_rate = Audata And &H1E00
Rotate Sample_rate , Right , 9
Bit_rate = Audata And &H1FF
Is_stereo = Audata And &H8000
Rotate Is_stereo , Right , 15
' Print Sample_rate ; "," ; Bit_rate ; " Kbs," ; Is_stereo 'print informations
End If
If Bsync = 0 And Flag_play = 1 And Flag_read = 0 Then
Tempo_new = Vs_read(vs_decode_time)
' If Tempo_new <> Tempo_old Then Print Tempo_new ; " Sec"
Tempo_old = Tempo_new
End If
Return
'-------------------------------------------------------------------------------
'------------------------------ MP3 SUBROUTINES --------------------------------
'-------------------------------------------------------------------------------
Function Vs_read(byval Vs_address As Byte) As Word
Xcs = 0 'Xcs low
B = Vs_rd
Shiftout Vs_mosi , Vs_clock , B , 1
Shiftout Vs_mosi , Vs_clock , Vs_address , 1
B = 0
Shiftin Vs_miso , Vs_clock , B , 1
Vs_read = B
Shift Vs_read , Left , 8
B = 0
Shiftin Vs_miso , Vs_clock , B , 1
Vs_read = Vs_read + B
Xcs = 1 'Xcs high
End Function
'-------------------------------------------------------------------------------
'-------------------------------- WRITE ROUTINE --------------------------------
'-------------------------------------------------------------------------------
Sub Vs_write(byval Vs_address As Byte , Byval Data1 As Byte , Byval Data2 As Byte)
Xcs = 0
B = Vs_wr
Shiftout Vs_mosi , Vs_clock , B , 1
Shiftout Vs_mosi , Vs_clock , Vs_address , 1
Shiftout Vs_mosi , Vs_clock , Data1 , 1
Shiftout Vs_mosi , Vs_clock , Data2 , 1
Xcs = 1
End Sub
'-------------------------------------------------------------------------------
'------------------------------- RESETTA E INIZILIZZA --------------------------
'-------------------------------------------------------------------------------
Sub Vs_init()
Xreset = 0
Waitms 5
Xreset = 1
Waitms 10
Do : Led = Dreq : Loop Until Dreq = 1
Vs_write Vs_mode , &H0 , &H4 'reset
Do : Led = Dreq : Loop Until Dreq = 1
Vs_write Vs_mode , &H0 , &H0
Do : Led = Dreq : Loop Until Dreq = 1
Mode_low.7 = 0 'set to zero
Vs_write Vs_mode , &H4 , Mode_low 'bass
Do : Led = Dreq : Loop Until Dreq = 1
Vs_write Vs_mode , &H4 , &H40
Do : Led = Dreq : Loop Until Dreq = 1
Vs_write Vs_clockf , &H9B , &HE8 'clockf 12.288 MHz VS1003
Do : Led = Dreq : Loop Until Dreq = 1
Vs_write Vs_volume , &H0E , &H0E 'volume =0 massimo
End Sub
'-------------------------------------------------------------------------------
'--------------------------- SOFT RESET VS1001 ---------------------------------
'-------------------------------------------------------------------------------
Sub Soft_reset
Do : Led = Dreq : Loop Until Dreq = 1 'wait Dreq
Vs_write Vs_mode , &H0 , &H4 'reset
End Sub
'-------------------------------------------------------------------------------
'---------------------------- SEND FILE MP3 ------------------------------------
'-------------------------------------------------------------------------------
Sub Send_mp3(byval Filename As String)
Soft_reset 'resetta vs1001
Flag_read = 1 'per leggere una volta sample rate etc
Flag_play = 0 'inizia a leggere dopo che è stato letto il primo pacchetto
Open Filename For Binary As #10 'apri il file mp3 e play song
Do : Led = Dreq : Loop Until Dreq = 1 'wait Dreq
While Eof(#10) = 0
Get #10 , Mmc_data(1) , , 512 'preleva 512 byte
Do : Led = Dreq : Loop Until Dreq = 1 'wait Dreq
For I = 1 To 16
For J = 1 To 32
Bsync = 1
Shiftout Vs_mosi , Vs_clock , Mmc_data(curbyte) , 1
Bsync = 0
Incr Curbyte
Next J
Do : Led = Dreq : Loop Until Dreq = 1 'wait Dreq
Next I 'first 32
Curbyte = 1 'after 16 16x32=512 byte
If Avanti = 0 Then Goto Esci 'pulsante up
Flag_play = 1 'playing primo pacchetto
Wend
Esci:
Flag_play = 0 'stop play
Close #10
For I = 1 To 2048 'send 2048 zeros to clear buffer
B = 0
Shiftout Vs_mosi , Vs_clock , B , 1 'send 2048 byte
Next I
Waitms 100 'aspetta 100
End Sub
'-------------------------------------------------------------------------------




دیدگاه