Paso 14: Introducción a la VS1033D
VS1033D página del producto: http://www.vlsi.fi/en/products/vs1033.html
SparkFun breakout Junta: http://www.sparkfun.com/products/8792
Ficha técnica: http://www.vlsi.fi/fileadmin/datasheets/vlsi/vs1033d.pdf
La Junta de arranque de SparkFun ya cuenta con los circuitos externos recomendados para el chip VS1033D desnudo, si no utilizas este breakout Junta, deberá implementar los circuitos externos recomendados, que usted debe averiguar mediante la lectura de la hoja de datos. Pero no le mostrará cómo hacerlo, le mostrará mi esquema usando el tablero de arranque. Si usted toma una mirada en esquemas de SparkFun VS1033D breakout board, puede hacer comparaciones entre los esquemas recomendados dentro de la hoja de datos y la Junta de arranque.
Este chip tiene dos interfaces SPI, uno de comandos y configuración (velocidad de reloj, volumen, etc.) llamado SCI, el otro para la transmisión de datos de audio llamados SDI. Ambos autobuses SPI utilizan el SPI modo 0 (CPOL y CPHA ambos 0, igual a nuestra tarjeta SD, que es bueno), significado el reloj comienza baja y bajo las hojas y los datos se lee en el borde de levantamiento. Existe una activo chip bajo selección para ambas interfaces (CS de SCI y DCS para SDI, el pin DCS es también llamado BSYNC a veces). Con el cristal de 12,288 MHz en el tablero de arranque, su velocidad de reloj SPI no puede ser más de 2 MHz (así que... tenemos que retrasar el reloj SPI antes de enviar datos a la VS1033D y lo volver a 4 MHz, ya que la tarjeta SD usa un reloj de 4 MHz SPI y tenemos la tarjeta SD para ser rápido).
(nota, esto es corte de http://www.frank-zhao.com/cache/mp3_decoder.htm que es mi propia página web)
Todos los comandos, lee / escribe a VS1033D internos registros se realizan a través de la interfaz SCI.
Usted necesita leer la hoja de datos para entender los diferentes comandos y tal, por favor hágalo.
Los únicos datos que se envían a través de la interfaz SDI están el contenido de un archivo de canción. No tenemos que enviar el nombre del archivo, los datos dentro de una canción ya contienen información de identificación por lo que el VS1033D siempre sabe qué formato de archivo que estamos enviando, que es una cosa menos que tendrá que preocuparse. También, envío de datos no válidos hará que la VS1033D simplemente descartar esos datos y pedir más datos, esto significa que si enviamos un archivo mal, la VS1033D no va a flipar o congelar.
Hay un búfer FIFO (primero en primero hacia fuera) de decodificador interno dentro de la VS1033D. El pin "DREQ" es el pin de petición de datos, y si es alta, significa que nos permite enviar más de 32 bytes de datos de la canción.
La hoja de datos a hablar a modo de VS1002 y un modo de compatibilidad VS1001. Esto es porque la VS1002 y sus fichas después de la VS1002 (incluyendo la VS1033) vinieron después el VS1001, pero pueden ser configurado para ser compatible con el VS1001. Esto puede ser configurado con el registro de "Modo", pero nos estamos pegando con el modo más reciente.
También las dos interfaces SPI, SDI y SCI, pueden compartir el mismo chip select. Esta opción puede habilitarse en el registro de "Modo". No podemos utilizar esta característica porque tenemos un chip adicional seleccione la tarjeta MicroSD para cuidar.
Según el shematics de la Junta de arranque de VS1033D de SparkFUn, el cristal utilizado es 12,288 MHz. El "CLOCKF" registro de necesidades se establece en 0x9000 según la hoja de datos. La hoja de datos tiene más detalles sobre esta configuración. En mi código de 0xF800 para apoyar a WMA y AAC descifrar.
Existen varias maneras eficaces de determinar cuánto tiempo una canción y la posición actual en la canción que estamos jugando. Por eficiente, me refiero a que no tenemos que leer el contenido de la canción. La hoja de datos dice "SCI_DECODE_TIME" almacena el tiempo que se ha reproducido en segundos, bastante simples. La hoja de datos también detalles "SCI_HDAT0" y "SCI_HDAT1", que contendrá el tipo de archivo actual y tasa de bits, y si conocemos el tamaño de archivo total y tasa de bits (lo que hacemos, nos dice FatFs), entonces simplemente podemos calcular el tamaño total de una canción.
Volumen se controla mediante el registro de "SCI_VOL". Más signi? cativo bytes del registro de volumen controla el volumen del canal izquierdo, la parte inferior controla el volumen del canal derecho. Por lo general, volumen es un valor logarítmico (un aumento lineal de la amplitud de la onda no equivale a un aumento lineal del volumen producido) y no queremos hacer cálculos logarítmicos en un microcontrolador pequeño, pero el VS1033D se encarga de esto para nosotros. El volumen del canal establece la atenuación del nivel de volumen máximo en pasos de 0,5 dB. Puesto que el cambio es en pasos de decibelios, significa que el VS1033D tomó el cuidado de las matemáticas para nosotros. El volumen máximo es 0 x 0000 y el silencio total es 0xFEFE, ya que "atenuar" significa "inferior".
La secuencia de inicialización general para el VS1033D es como esto:
1. reset
2. establecer registro de "Modo" para que no estamos usando modo de compatibilidad VS1001 y no estamos compartiendo chip select entre SDI y SCI
3. Ajuste la velocidad de reloj correcta usando registro "CLOCKF"
4. Ajuste el volumen, esto es opcional, pero nos gustaría recordar la configuración del usuario anterior
El cableado para la demostración de este ejemplo es más complicado, y necesita también conectar la tarjeta SD. Compilación-subir-funcione el ejemplo que he proporcionado. Deben jugar todos los archivos en la tarjeta SD a máximo volumen. Por favor lea el código fuente para entender la API que he creado y lo que está sucediendo. El puerto serie de depuración mostrará mensajes simples así.
Yo he también proporcionó la lógica analizador archivos, que muestra cuándo enviar los datos donde. Tipo de importante. Usted puede emparejar encima de los comandos que envía a la VS1033D a los comandos en la hoja de datos y encontrar donde te los mando en mi código.
Yo no puedo adjuntar el archivo de sesión lógica cruda analizador onda esta vez porque es demasiado grande. Está contenida en el. ZIP en lugar de otro paquete
Esta demo juega simplemente todos los archivos en el directorio raíz de la SD a volumen máximo.