PDF de programación - MikroElektronika - Reproductor MP3

MikroElektronika - Reproductor MP3gráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 21 de Febrero del 2018)
363 visualizaciones desde el 21 de Febrero del 2018
1,5 MB
2 paginas
Creado hace 15a (13/03/2009)
ANUNCIO





















OK.OK.

Ahora necesita un ...
Ahora necesita un ...
Reproductor MP3
Reproductor MP3

modulo Smart MP3 y el sistema
se desarollo BIGAVR2

Por Milan Rajic
MikroElektronika – Departamento de Software
La adopción del formato MP3, provocó una revolución en la tecnología de compresión del audio digital, permitiendo que los fi cheros de
audio llegasen a ser mucho más pequeños. Si deseamos que mensajes de audio o de música formen parte de nuestros proyectos, pode-
mos conseguirlo fácilmente. Tan solo necesitamos una memoria estándar MMC o SD, unos pocos componentes y un poco de tiempo…

Antes de comenzar, es necesario formatear la
tarjeta MMC y salvar el fi chero sound1.mp3
en ella (la tarjeta debe estar formateada en
FAT16, es decir, formato FAT).
La calidad del sonido codifi cado en formato
MP3 depende de la velocidad de muestreo y
la velocidad de datos. Al igual que en un CD
de audio, la mayoría de los fi cheros MP3 son
muestreados a 44,1 kHz. La velocidad de da-
tos del fi chero MP3 indica la calidad del audio
comprimido comparado con el audio original
no comprimido, es decir, su fi delidad. Una
velocidad de datos de 64 kbit/s es sufi ciente
para la voz hablada, mientras que para la re-
producción de música, esta velocidad debe
ser, como mínimo, de 128 kbit/s. En este ejem-
plo se ha usado un fi chero de música con una
velocidad de datos de 128 kbit/s.

El Circuito
El sonido contenido en este fi chero está codifi -
cado en formato MP3, por lo que se necesita un
descodifi cador MP3 para su descodifi cación.
En nuestro ejemplo hemos usado el circuito in-
tegrado VS1011E para este propósito. Este cir-
cuito integrado descodifi ca grabaciones MP3
y realiza la conversión Analógico/Digital de la
señal para producir una señal que puede ser
llevada a un altavoz, a través de un pequeño

amplifi cador de audio.
Considerando que las tarjetas MMC/SD usan
secciones de 512 bytes de tamaño, se nece-
sita un microcontrolador con 512 byte de
memoria RAM o más para poder controlar
el proceso de descodifi cación MP3. Hemos
elegido el microcontrolador Atmega128 con
1536 byte de memoria RAM.

El Programa
El programa que controla las operaciones
de este dispositivo está dividido en cinco
fases o pasos:

Paso 1:


Inicialización del modulo SPI del
microcontrolador.

Figura 1. Diagrama de bloques del módulo
Smart MP3 conectado a un Atmega128.



Paso 2:





Inicialización de la librería
Mmc_FAT16 del compilador, que
permite que los fi cheros MP3 pu-
edan ser leídos desde las tarjetas
MMC o SD.

Paso 3: Lectura de una parte del fi chero.

Paso 4: Envío de los datos al “buff er” del


descodifi cador MP3.

Paso 5: Si no se ha alcanzado aún el fi nal


del fi chero, volver al paso 3.

Pruebas
Se recomienda comenzar las pruebas del
dispositivo con una velocidad de datos baja
e incrementarla de forma gradual. El “bu-
ff er” del descodifi cador MP3 tiene un tama-
ño de 2048 bytes. Si el buff er se carga con
parte del fi chero MP3 a una velocidad de
128 kbit/s, contendrá dos veces el número
de muestras de sonido que cuando ha sido
cargado con una parte de un fi chero con
una velocidad de datos de 256 kbit/s. De
acuerdo con esto, si la velocidad de datos
del fi chero es inferior, tardará el doble en
codifi car el contenido del buff er. Si sobre-
pasamos la velocidad de datos del fi chero

Artículo Anuncio de MikroElektronika www.mikroe.com
mikroC PRO® es marca registrada de MikroElektronica. Reservados todos los derechos.

MP3 Spanish_C_AVR.indd 74
MP3 Spanish C AVR indd 74

3/13/2009 9:03:41 AM
3/13/2009 9:03:41 AM

... making it simple

SOFTWARE AND HARDWARE SOLUTIONS FOR EMBEDDED WORLD www.mikroe.com





Esquema Eléctrico 1. Conexión de un modulo Smart MP3 al Atmega128

puede suceder que el contenido del buff er sea codifi cado antes que el micro-
controlador pueda gestionar la lectura de la siguiente parte del fi chero desde
la tarjeta de memoria y escribirla en el buff er, lo que provocaría que el sonido
se oyese de modo discontinuo. Si sucede esto, podemos reducir la velocidad
de datos del fi chero MP3 o usar un cristal de cuarzo de 8 MHz o superior. Ver el
esquema eléctrico 1.
En cualquier caso, no tendremos que preocuparnos de esto ya que nuestro
programa ha sido verifi cado sobre varias familias de microcontroladores con
diferentes valores de cristal y fue capaz de descodifi car fi cheros MP3 de cali-
dad media y alta. Por otro lado, una velocidad de datos baja signifi ca que el
buff er del codifi cador es rellenado con datos de sonido de mayor duración.
Podría suceder que el descodifi cador no descodifi que el contenido del buff er
antes de que se intente su recarga. Para evitar esto, es necesario que estemos
seguros que el descodifi cador está listo para recibir nuevos datos antes de que
éstos sean enviados. En otras palabras, es necesario esperar hasta que la señal
de petición de datos del descodifi cador (DREQ) esté a nivel lógico uno (1).

Mejoras
Este ejemplo puede también ser ampliado una vez que ha sido verifi cado. La
señal DREQ puede ser comprobada de forma periódica. En el programa tam-
bién se puede incorporar una rutina para el control de volumen o para mejorar
el control interno de Bajos/Agudos etc. La librería MMC nos permite seleccio-
nar un fi chero con un nombre diferente. También es posible crear un conjunto
de mensajes, sonidos o canciones MP3 que pueden ser usados en otras aplica-
ciones y enviar los fi cheros MP3 adecuados para el codifi cador, dependiendo
de las necesidades.
Más abajo está la lista de las funciones listas para usar, contenidas en la librería
Mmc_FAT16. Esta librería está integrada en el compilador mikroC PRO for AVR.

Borra fi chero

Escribe al fi nal del fi chero

Obtiene tamaño del fi chero

Mmc_Fat_Append()
Mmc_Fat_Assign()* Asigna el fi chero para operaciones con la FAT
Mmc_Fat_Delete()
Mmc_Fat_Get_File_Date() Obtiene fecha y hora del fi chero
Mmc_Fat_Get_File_Size()
Mmc_Fat_Get_Swap_File() Crea un fi chero de intercambio
Mmc_Fat_Init()* Inicializa la tarjeta para operaciones FAT
Mmc_Fat_QuickFormat()
Lee datos desde el fi chero
Mmc_Fat_Read()*
Abre el fi chero para lectura
Mmc_Fat_Reset()*
Mmc_Fat_Rewrite()
Abre el fi chero para escritura
Mmc_Fat_Set_File_Date() Establece fecha y hora del fi chero
Mmc_Fat_Write()

Escribe datos en el fi chero

* Funciones Mmc_FAT16 usadas en el programa
Otras funciones del compilador mikroC
PRO for AVR usadas en el programa:

Spi_Init_Advanced()




Inicializa el módulo SPI
del microcontrolador

Tanto el código para este ejemplo, que ha sido escrito en C, Basic y Pascal para
microcontroladores AVR® C, como los programas escritos para microcontroladores dsPIC® y
PIC®, pueden ser localizados en nuestra página web: www.mikroe.com/en/article/

GO TO

Programa para demostrar el funcionamiento del módulo Smart MP3.
char fi lename[14] = “sound1.mp3”; // Set File name
unsigned long i, fi le_size;
const BUFFER_SIZE = 512;
char data_buff er_32[32], Buff erLarge[BUFFER_SIZE];
// Smart MP3 board connections
sbit Mmc_Chip_Select at PORTB.B0;
sbit MP3_CS at PORTB.B4;
sbit MP3_RST at PORTB.B5;
sbit DREQ at PINC.B0;
sbit BSYNC at PORTC.B1;
sbit DCLK at PORTC.B2;
sbit SDATA at PORTC.B3;
sbit Mmc_Chip_Select_Direction at DDRB.B0;
sbit MP3_CS_Direction at DDRB.B4;
sbit MP3_RST_Direction at DDRB.B5;
sbit DREQ_Direction at DDRC.B0;
sbit BSYNC_Direction at DDRC.B1;
sbit DCLK_Direction at DDRC.B2;
sbit SDATA_Direction at DDRC.B3;
// Writes one byte to MP3 SDI
void SW_SPI_Write(char data_) {
BSYNC = 1; // Set BSYNC before sending the fi rst bit
DCLK = 0; SDATA = data_; DCLK = 1; data_ >>= 1; // Send data_ LSB, data_.0
DCLK = 0; SDATA = data_; DCLK = 1; data_ >>= 1; // Send data_.1
BSYNC = 0; // Clear BSYNC after sending the second bit
DCLK = 0; SDATA = data_; DCLK = 1; data_ >>= 1; // Send data_.2
DCLK = 0; SDATA = data_; DCLK = 1; data_ >>= 1; // Send data_.3
DCLK = 0; SDATA = data_; DCLK = 1; data_ >>= 1; // Send data_.4
DCLK = 0; SDATA = data_; DCLK = 1; data_ >>= 1; // Send data_.5
DCLK = 0; SDATA = data_; DCLK = 1; data_ >>= 1; // Send data_.6
DCLK = 0; SDATA = data_; DCLK = 1; data_ >>= 1; // Send data_.7
DCLK = 0;
}
// Writes one word to MP3 SCI
void MP3_SCI_Write(char address, unsigned int data_in) {
MP3_CS = 0; // select MP3 SCI
SPI1_Write(0x02); // send WRITE command
SPI1_Write(address);
SPI1_Write(data_in >> 8); // Send High byte
SPI1_Write(data_in); // Send Low byte
MP3_CS = 1; // deselect MP3 SCI
while (DREQ == 0); // wait until DREQ becomes 1
}
// Reads words_count words from MP3 SCI
void MP3_SCI_Read(char start_address, char words_count, unsigned int *data_buff er) {
unsigned int temp;
MP3_CS = 0; // select MP3 SCI
SPI1_Write(0x03); // send READ command
SPI1_Write(start_address);
while (words_count--) { // read words_count words byte per byte
temp = SPI1_Read(0);
temp <<= 8;
temp += SPI1_Read(0);
*(data_buff er++) = temp;
}
MP3_CS = 1; // deselect MP3 SCI
while (DREQ == 0); // wait until DREQ becomes 1
}
// Write one byte to MP3 SDI
void MP3_SDI_
  • Links de descarga
http://lwp-l.com/pdf8932

Comentarios de: MikroElektronika - Reproductor MP3 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad