VS1003 & atmega128
VS1003 & atmega128
dear mr.panu
have nice day.i want to work with VS1003 that connect to ATmega128 & SD card.i attache my project (write withe code vision) .
mr.panu how do i set spi_clockf with crystal 16 MHZ(the crystal 16 MHZ use External oscllator for ATMEGA 128).
i attach pic of circuit .
-i run this program that i attach but i do not hear any voice from VS1003.
-i think problem between spi clock and clock of vs1003 .
-if you see my code and see problem please inform me.
-we use VS1003.c and vs1003.h
thanks
have nice day.i want to work with VS1003 that connect to ATmega128 & SD card.i attache my project (write withe code vision) .
mr.panu how do i set spi_clockf with crystal 16 MHZ(the crystal 16 MHZ use External oscllator for ATMEGA 128).
i attach pic of circuit .
-i run this program that i attach but i do not hear any voice from VS1003.
-i think problem between spi clock and clock of vs1003 .
-if you see my code and see problem please inform me.
-we use VS1003.c and vs1003.h
thanks
Re: VS1003 & atmega128
Hi!
Sorry for the late reply, I'm in and out of holiday.
If you don't hear any sound from vs, then it's not a SCI_CLOCKF problem. With wrong SCI_CLOCKF value, you will hear sound but it's choppy and/or at the wrong frequency.
First you should read the MCU Howto link below. Start with 1 MHz SPI clock speed. And I suggest that your first project is to run the "Audible Hello" from this forum.
Hope this helps!
Sorry for the late reply, I'm in and out of holiday.
If you don't hear any sound from vs, then it's not a SCI_CLOCKF problem. With wrong SCI_CLOCKF value, you will hear sound but it's choppy and/or at the wrong frequency.
First you should read the MCU Howto link below. Start with 1 MHz SPI clock speed. And I suggest that your first project is to run the "Audible Hello" from this forum.
Hope this helps!
Info: Line In and Line Out, VS1000 User interface, Overlay howto, Latest VSIDE, MCU Howto, Youtube
Panu-Kristian Poiksalo
Panu-Kristian Poiksalo
Re: VS1003 & atmega128
THANKS FOR REPLYPanu wrote:Hi!
Sorry for the late reply, I'm in and out of holiday.
If you don't hear any sound from vs, then it's not a SCI_CLOCKF problem. With wrong SCI_CLOCKF value, you will hear sound but it's choppy and/or at the wrong frequency.
First you should read the MCU Howto link below. Start with 1 MHz SPI clock speed. And I suggest that your first project is to run the "Audible Hello" from this forum.
Hope this helps!
i DO project and right now i hear a voice from vs1003 and i test Audible hello project and i listen hello from vs like your sample
but my problem is about other bitrate
when i use bitrate 96kb i hear good music
but when i use bitrate 128 kb or more i hear choppy music
when i increase SCI_Clockf lower bitrate 128kb is choppy
right now what shall i do ?
I upload my project and upload 2 sound file that i record from output vs1003
one sound file is 128 kb and play very slowly
and other file is 64 kb and play choppy
-SCI_CLOCKF is 0XB3FE
-how do i set value of SCI_AUDATA ? , right now the value of SCI_AUDATA is 0XAC45 (44100 hz).
-spi clock of Atmega128 is 2*2 Mb .
thanks for helping me ..........
- Attachments
-
- 128kb.mp3
- (371.68 KiB) Downloaded 523 times
-
- 64kb.mp3
- (396.17 KiB) Downloaded 535 times
-
- spi_clock4.zip
- (298.89 KiB) Downloaded 1167 times
Re: VS1003 & atmega128
Ok, great that you hear sound.
- B3FE is the correct CLOCKF value for 12.288 MHz XTAL.
- You don't need to set SCI_AUDATA. VS1003 will set that one for you.
It seems a little like the microcontroller is not feeding data fast enough to the VS1003. What is your SPI bus speed? Where does the data come from? An SD card? How long time does it take to read the data from the SD card?
-Panu
PS. maybe you can browse my old source code documentation at http://www.vlsi.fi/player_vs1011_1002_1 ... larplayer/ to see if you do something similar or different than I at MP3SoftReset etc...
http://www.vlsi.fi/player_vs1011_1002_1 ... 8c.html#a3
- B3FE is the correct CLOCKF value for 12.288 MHz XTAL.
- You don't need to set SCI_AUDATA. VS1003 will set that one for you.
It seems a little like the microcontroller is not feeding data fast enough to the VS1003. What is your SPI bus speed? Where does the data come from? An SD card? How long time does it take to read the data from the SD card?
-Panu
PS. maybe you can browse my old source code documentation at http://www.vlsi.fi/player_vs1011_1002_1 ... larplayer/ to see if you do something similar or different than I at MP3SoftReset etc...
http://www.vlsi.fi/player_vs1011_1002_1 ... 8c.html#a3
Info: Line In and Line Out, VS1000 User interface, Overlay howto, Latest VSIDE, MCU Howto, Youtube
Panu-Kristian Poiksalo
Panu-Kristian Poiksalo
Re: VS1003 & atmega128
Panu wrote:Ok, great that you hear sound.
- B3FE is the correct CLOCKF value for 12.288 MHz XTAL.
- You don't need to set SCI_AUDATA. VS1003 will set that one for you.
It seems a little like the microcontroller is not feeding data fast enough to the VS1003. What is your SPI bus speed? Where does the data come from? An SD card? How long time does it take to read the data from the SD card?
-Panu
PS. maybe you can browse my old source code documentation at http://www.vlsi.fi/player_vs1011_1002_1 ... larplayer/ to see if you do something similar or different than I at MP3SoftReset etc...
http://www.vlsi.fi/player_vs1011_1002_1 ... 8c.html#a3
thanks for reply
Mr Panu i use MicroSd in my Circuit and i use 4 SPi Mode (all of them ) and i use 2*1000 KHZ Spi Clock and 4*1000 Khz spi clock but both of them same sound like previous post
Re: VS1003 & atmega128
Ok, can you find some location in your code where you read from the SD card? Then put some LED on (or IO pin high) when you start the read from SD card, and the LED off when the data is ready from the SD card. Then measure with oscilloscope how often you read from the SD card and how long it takes.
-Panu
-Panu
Info: Line In and Line Out, VS1000 User interface, Overlay howto, Latest VSIDE, MCU Howto, Youtube
Panu-Kristian Poiksalo
Panu-Kristian Poiksalo
Re: VS1003 & atmega128
MR panu thanks for replyingPanu wrote:Ok, can you find some location in your code where you read from the SD card? Then put some LED on (or IO pin high) when you start the read from SD card, and the LED off when the data is ready from the SD card. Then measure with oscilloscope how often you read from the SD card and how long it takes.
-Panu
My question is about all of bitrate ...
as you know i can play music with vs1003 but when i change bitrate
my song is slower or faster
i think when i play the song i read one register from vs
because when i play the song my Code must be Smart to decode all bitrate
and with one condition i must to tell the vs which bitrate is playing
Code: Select all
for(k=0;k<10899;k++)
{
VS1003B_SPI_Low();
res=f_read(&file,buffer,512,&br) ;
if(res==FR_OK)
{
for(count=0;count<16;count++)
{
if(VS1003B_NeedData() !=0)
{
VS1003B_Write32B(&buffer[32*count]);
VS1003_get_audio_info(&info)
}
}
}
}
Code: Select all
void VS1003B_Write32B(unsigned char * buf)
{
unsigned char n = 32;
VS1003B_SPI_High();
VS1003B_XDCS_L();
while(n--)
{
VS1003B_WriteByte(*buf++);
}
VS1003B_XDCS_H();
}
Code: Select all
void VS1003B_SPI_Low(void)
{
SPCR = _BV(SPE)|_BV(MSTR)|_BV(SPR1)|_BV(SPR0);
SPSR &= ~_BV(SPI2X);
}
// High speed, should not exceed 49.512MHz/6
void VS1003B_SPI_High(void)
{
SPCR = _BV(SPE)|_BV(MSTR);
SPSR |= _BV(SPI2X);
}
Code: Select all
unsigned char VS1003B_NeedData(void)
{
if(VS1003B_DREQ_PIN & (1<<VS1003B_DREQ_BIT))return 1;
else return 0;
}
Code: Select all
void VS1003_get_audio_info(struct VS1003_Mp3Info* Mp3Info)
{
unsigned int temp;
unsigned char ID,SR,BR;
VS1003B_SPI_Low();
ID = (unsigned char)((VS1003B_ReadCMD(VS1003_HEDATA1) & 0x0018) >> 3);
temp = VS1003B_ReadCMD(VS1003_HEDATA0);
SR = (char)((temp & 0x0C00) >> 10);
BR = (char)((temp & 0xF000) >> 12);
Mp3Info->mode = (char)((temp & 0xC0) >> 6);
if (ID == 0 || ID == 1)
{
Mp3Info->sample_rate = sample_rate_values1[SR];
}
else if (ID == 2)
{
Mp3Info->sample_rate = sample_rate_values2[SR];
}
else if (ID == 3)
{
Mp3Info->sample_rate = sample_rate_values3[SR];
Mp3Info->bit_rate = bit_rate_values1[BR];
}
else if (ID == 0 || ID == 1 || ID == 2)
{
Mp3Info->bit_rate = bit_rate_values2[BR];
}
}
Re: VS1003 & atmega128
Hi!
No need to tell VS the bitrate. Just feed MP3 data into VS, VS will detect bitrate, sample rate and number of channels and play correctly.
If you change to VS1053, you can feed MP3, WMA, OGG and AAC and there is not even need to tell which format the file is. The VS chip will detect automatically and play correctly.
You should set NEW_MODE to 1, SHARED_MODE to 0 (not shared mode), STREAM_MODE to 0 (not stream mode) and just check when DREQ is 1. When DREQ is 1, send more data. When DREQ is 0, don't send more data. You don't even need to know which format file is playing.
At a glance, your code seems OK to me, but perhaps you read the get_audio_info too often. Can you remove that and see how big bitrates you can play then. Can you check how long time the code is spending in the idle mode (DREQ=0). That will tell you roughly how much time you have left in your MCU.
-Panu
No need to tell VS the bitrate. Just feed MP3 data into VS, VS will detect bitrate, sample rate and number of channels and play correctly.
If you change to VS1053, you can feed MP3, WMA, OGG and AAC and there is not even need to tell which format the file is. The VS chip will detect automatically and play correctly.
You should set NEW_MODE to 1, SHARED_MODE to 0 (not shared mode), STREAM_MODE to 0 (not stream mode) and just check when DREQ is 1. When DREQ is 1, send more data. When DREQ is 0, don't send more data. You don't even need to know which format file is playing.
At a glance, your code seems OK to me, but perhaps you read the get_audio_info too often. Can you remove that and see how big bitrates you can play then. Can you check how long time the code is spending in the idle mode (DREQ=0). That will tell you roughly how much time you have left in your MCU.
-Panu
Info: Line In and Line Out, VS1000 User interface, Overlay howto, Latest VSIDE, MCU Howto, Youtube
Panu-Kristian Poiksalo
Panu-Kristian Poiksalo
Re: VS1003 & atmega128
Hello mr panuPanu wrote:Hi!
No need to tell VS the bitrate. Just feed MP3 data into VS, VS will detect bitrate, sample rate and number of channels and play correctly.
If you change to VS1053, you can feed MP3, WMA, OGG and AAC and there is not even need to tell which format the file is. The VS chip will detect automatically and play correctly.
You should set NEW_MODE to 1, SHARED_MODE to 0 (not shared mode), STREAM_MODE to 0 (not stream mode) and just check when DREQ is 1. When DREQ is 1, send more data. When DREQ is 0, don't send more data. You don't even need to know which format file is playing.
At a glance, your code seems OK to me, but perhaps you read the get_audio_info too often. Can you remove that and see how big bitrates you can play then. Can you check how long time the code is spending in the idle mode (DREQ=0). That will tell you roughly how much time you have left in your MCU.
-Panu
i can play music with 320 kb bitrate
but i have problem
when i play the song i have very little noise or maybe is gaps and this gaps very very little
but this gaps like noise and when i play the song this noise is background of song and song + noise playing together
Mr panu what s your idea about this problem
?
Re: VS1003 & atmega128
Very difficult to say. Do you have D class amplifier in your system?
If you record some example sound, then I can listen.
-Panu
If you record some example sound, then I can listen.
-Panu
Info: Line In and Line Out, VS1000 User interface, Overlay howto, Latest VSIDE, MCU Howto, Youtube
Panu-Kristian Poiksalo
Panu-Kristian Poiksalo