reproductor de mp3 con almacenamiento en...

180
Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través de USB David Martín de Vidales Mañez Tutor del proyecto: José Antonio Boluda Grau © David Martín de Vidales Mañez, 1 Julio 2008

Upload: lethien

Post on 14-Mar-2018

220 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Reproductor de MP3 con almacenamientoen Multimedia Card y comunicación

a través de USB

David Martín de Vidales Mañez

Tutor del proyecto: José Antonio Boluda Grau

© David Martín de Vidales Mañez, 1 Julio 2008

Page 2: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través
Page 3: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Agradecimientos

A mis padres, por su apoyo, ánimo y paciencia, y por haber soportado estoicamente el desorden de mi habitación todos estos meses.

A Paola, por apoyarme en todo momento, estar conmigo y soportar esos largos meses sin apenas salir.

A mis compañeras de trabajo y todos los amigos que insistieron, casi a diario, en que fuese constante, siento no haberos hecho más caso.

Muy especialmente a mis abuelos, que no han podido ver este proyecto concluido.

Page 4: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través
Page 5: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Índice de contenido1.Introducción......................................................................................................................15

1.1 Presentación..............................................................................................................151.2 Objetivos...................................................................................................................161.3 Contenidos................................................................................................................17

2. Estado de la tecnología....................................................................................................182.1 Contenido..................................................................................................................182.2 Reproductores de MP3.............................................................................................18

2.2.1 Los primeros decodificadores...........................................................................182.2.1 Los primeros reproductores..............................................................................192.2.2 Clasificación de los reproductores....................................................................212.2.3 Reproductores no comerciales..........................................................................24

2.3 Formato MP3............................................................................................................252.3.1 Orígenes del MP3.............................................................................................252.3.2 Principios psicoacústicos..................................................................................262.3.3 Introducción a la compresión de audio MPEG ................................................292.3.4 Algoritmo de codificación MPEG-1 Layer 3....................................................302.3.5 Algoritmo de decodificación MPEG-1 Layer 3................................................33

2.4 Tarjetas de memoria no volátil..................................................................................362.4.1 Memorias Flash.................................................................................................362.4.2 Tipos de tarjetas................................................................................................38

2.5 El interfaz de comunicación USB.............................................................................422.5.1 Orígenes del USB.............................................................................................432.5.2 Características del USB....................................................................................432.5.3 Topología...........................................................................................................462.5.5 Nivel físico........................................................................................................462.5.6 Protocolo...........................................................................................................472.5.7 Tipos de transferencias en USB 2.0..................................................................48

2.6 Microcontroladores...................................................................................................502.6.1 Definición y características...............................................................................502.6.2 Selección del microcontrolador........................................................................512.6.3 Aplicaciones......................................................................................................51

3. Diseño y desarrollo del hardware....................................................................................523.1 Introducción..............................................................................................................523.2 Selección de componentes........................................................................................52

3.2.1 El microcontrolador..........................................................................................533.2.2 El módulo USB.................................................................................................553.2.3 La tarjeta de memoria.......................................................................................573.2.4 El chip decodificador de MP3...........................................................................583.2.5 La pantalla LCD................................................................................................58

3.3 Programa, herramientas y metodología utilizada.....................................................603.3.1 Diseño...............................................................................................................603.3.2 Fabricación........................................................................................................613.3.3 Testeo................................................................................................................62

3.4 Diseño de la PCB......................................................................................................633.4.1 Alimentación.....................................................................................................633.4.2 Microcontrolador..............................................................................................703.4.3 Módulo USB.....................................................................................................723.4.4 Decodificador VS1001k....................................................................................78

5

Page 6: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

3.4.5 Tarjeta Multimedia Card...................................................................................823.4.6 Pantalla LCD.....................................................................................................833.4.7 Botonera............................................................................................................853.4.8 Otros elementos................................................................................................85

4. Diseño y desarrollo del firmware....................................................................................874.1 Introducción..............................................................................................................874.2 Herramientas de desarrollo utilizadas.......................................................................874.3 Librerías desarrolladas..............................................................................................89

4.3.1 Introducción......................................................................................................894.3.2 Librería VS1001K.............................................................................................894.3.3 Librería Multimedia Card.................................................................................964.3.4 Librería FAT16................................................................................................1034.3.5 Librería de la pantalla LCD............................................................................1094.3.6 Librería USB...................................................................................................1144.3.7 Lectura de ID3v1 y ID3v2.............................................................................1154.3.8 Funciones de visualización de datos y menú..................................................117

4.4 Protocolo de comunicación Reproductor-PC..........................................................1184.4.1 Introducción....................................................................................................1184.4.2 Sistema de mensajes........................................................................................1194.4.3 Inicialización de la comunicación...................................................................1214.4.4 Comandos de navegación...............................................................................1224.4.5 Comandos de control......................................................................................1244.4.6 Comandos de reproducción.............................................................................1254.4.7 Comandos para el decodificador.....................................................................1264.4.7 Errores.............................................................................................................127

4.5 Programa principal..................................................................................................1274.5.1 Introducción....................................................................................................1274.5.2 Función principal............................................................................................1274.5.3 Función temporizada.......................................................................................1284.5.4 Otras funciones...............................................................................................131

5. Diseño y desarrollo de la aplicación..............................................................................1325.1 Introducción............................................................................................................1325.2 Herramientas de desarrollo utilizadas.....................................................................1325.3 Librería del módulo USB........................................................................................1335.4 Librería de control del reproductor.........................................................................1345.5 Modos de reproducción..........................................................................................136

5.5.1 Introducción....................................................................................................1365.5.1 Reproducción remota de archivos en el reproductor......................................1365.5.2 Reproducción remota de archivos en el ordenador.........................................1375.5.3 Reproducción local de archivos en el reproductor..........................................1375.5.4 Reproducción remota de streams de internet..................................................138

5.6 Podcasting y streaming a través de internet............................................................1395.6.1 Introducción....................................................................................................1395.6.2 Obtención e identificación del tipo de recurso................................................1395.6.3 Streaming........................................................................................................1405.6.4 Podcasting.......................................................................................................1425.6.5 Emisoras favoritas...........................................................................................144

6. Presupuesto y planificación...........................................................................................1456.1 Introducción............................................................................................................1456.2 Coste del software...................................................................................................1456.3 Coste de las herramientas.......................................................................................146

6

Page 7: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

6.4 Coste de los componentes y PCB...........................................................................1476.5 Planificación y mano de obra.................................................................................148

7. Conclusiones y trabajo futuro........................................................................................1517.1 Conclusiones...........................................................................................................1517.2 Trabajo futuro.........................................................................................................152

APÉNDICE I Manual de usuario......................................................................................1541. Introducción..............................................................................................................1542. Especificaciones técnicas..........................................................................................1543. Requisitos del sistema...............................................................................................1554. Reproductor..............................................................................................................155

4.1 Vista general y controles....................................................................................1554.2 Alimentación y recarga de pilas.........................................................................1574.3 Pantalla LCD......................................................................................................1574.4 Utilización..........................................................................................................159

5 Aplicación..................................................................................................................1615.1 Instalación..........................................................................................................1615.2 Ventana principal................................................................................................1645.3 Contenido de la tarjeta de memoria...................................................................1655.4 Reproducción de archivos en la tarjeta de memoria..........................................1655.5 Reproducción en la aplicación de archivos de la memoria................................1665.6 Reproducción de archivos almacenados en el PC..............................................1675.7 Streaming...........................................................................................................168

APÉNDICE II Estructura de FAT16..................................................................................171II.1 Introducción...........................................................................................................171II.2 Estructura de FAT16...............................................................................................171

II.2.1 Master Boot Record.......................................................................................171II.2.2 Sector de arranque de la partición..................................................................172II.2.3 Tabla de asignación de archivos (FAT)..........................................................174II.2.4 Directorio raíz................................................................................................175II.2.5 Área de datos..................................................................................................176

Bibliografía........................................................................................................................177

7

Page 8: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

8

Page 9: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Índice de imágenesImagen 2.1 Primer chip decodificador de MP3 de Micronas (1994)..................................18Imagen 2.2 Primer prototipo de un reproductor de MP3 sin partes móviles (1994)...........19Imagen 2.3 Reproductor MPMan F10.................................................................................19Imagen 2.4 Interior del reproductor MPMan F10...............................................................19Imagen 2.5 Reproductor Diamon Rio PMP300..................................................................20Imagen 2.6 Interior del reproductor Diamon Rio PMP300.................................................20Imagen 2.7 Reproductor con disco duro PJB-100 (1999)...................................................20Imagen 2.8 Reproductor MP3 de CDs Mambo-X...............................................................20Imagen 2.9 Nevera Centrlpark de Whirpool, con reproductor de DVD y MP3..................21Imagen 2.10 Umbrales de sensibilidad y auditivo [Hacker00]...........................................27Imagen 2.11. Bandas críticas aproximadas [Pan93]............................................................27Imagen 2.12 . Umbral en silencio y umbral de enmascaramiento ......................................28Imagen 2.13 Umbrales de enmascaramiento temporal [Hung]...........................................28Imagen 2.14 Estructura de codificación MP3[Lagerstöm01].............................................30Imagen 2.15 Representación del filtro................................................................................30Imagen 2.16 Anchos de banda del filtro MPEG/Audio vs ancho de las bandas críticas[Pan95].....................................................................................................................31Imagen 2.17 Ecuación de la transformación MDCT [Hung]..............................................31Imagen 2.18 Formato del marco MP3.................................................................................32Imagen 2.19 Ejemplo de bit reservoir.................................................................................33Imagen 2.20 Diagrama de bloques del decodificador MPEG-1 Layer 3 ...........................33Imagen 2.21 Diagrama de bloques de la decodificación del flujo de datos........................33Imagen 2.22 Ecuación del calculo de desescalado de las líneas de frecuencia...................34Imagen 2.23 Diagrama de bloques del Mapeo de la frecuencia al tiempo..........................35Imagen 2.24 Expresión analítica del MDCT inverso..........................................................35Imagen 2.24 Evolución prevista de la memoria NAND flash según la capacidad y tipo de aplicación [Samsung]..........................................................................................................37Imagen 2.25 Evolución prevista de la memoria NAND flashsegún la capacidad, el tamaño y la velocidad [Samsung]....................................................................................................38Imagen 2.26 Tarjeta CompactFlash.....................................................................................38Imagen 2.27 Tarjeta SmartMedia........................................................................................39Imagen 2.28 Tarjeta Memory Stick Pro Duo MagicGate....................................................40Imagen 2.29 Tarjeta xD-Picture...........................................................................................41Imagen 2.30 Tarjeta Multimedia Card.................................................................................41Imagen 2.31 Tarjetas SD, MiniSD y MicroSD....................................................................42Imagen 2.32 Terminales MicroUSB A y MicroUSB B.......................................................43Imagen 2.33 Topología USB [Axelson05]..........................................................................46Imagen 2.34 Cable para low speed[Anderson01]...............................................................47Imagen 2.35 Cable para full y high speed[Anderson01].....................................................47Imagen 3.3 Módulo DLP-USB245M-G..............................................................................57Imagen 3.6 Pantalla LCD con controlador Philips PCD8544.............................................59Imagen 3.7 Materiales para realizar el hardware.................................................................60Imagen 3.8 Procesos para el diseño del circuito.................................................................61Imagen 3.9 Diseño modular del circuito.............................................................................63Imagen 3.10 Control de alimentación USB.........................................................................65Imagen 3.11 Circuito de carga.............................................................................................66Imagen 3.12 Funcionamiento del diodo Zener como regulador..........................................67Imagen 3.13 Regulador de tensión TC115..........................................................................68

9

Page 10: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.14 Esquemático del regulador TC115 ................................................................68Imagen 3.15 Regulador MAX1675.....................................................................................69Imagen 3.16 Esquemático del regulador MAX1675...........................................................69Imagen 3.17 Esquemático del módulo de alimentación......................................................70Imagen 3.18 Microcontrolador 18LF452............................................................................71Imagen 3.19 Configuración del cristal del microcontrolador..............................................72Imagen 3.20 Diagrama de bloques del funcionamiento del FT245BM..............................73Imagen 3.21 Esquemático del módulo DLP-USB245M.....................................................74Imagen 3.22 Configuración de la alimentación del USB....................................................76Imagen 3.23 Control de alimentación según especificaciones............................................76Imagen 3.24 Conexión del módulo USB con el microcontrolador.....................................77Imagen 3.25 Cronograma del ciclo de lectura USB............................................................77Imagen 3.26 Cronograma del ciclo de escritura USB.........................................................78Imagen 3.27 Funcionamiento del decodificador VS1001k.................................................79Imagen 3.31 Circuito recomendado del VS1001k..............................................................80Imagen 3.32 Circuito implementado del VS1001k.............................................................80Imagen 3.28 Cronograma del interfaz SDI.........................................................................81Imagen 3.29 Ciclo de lectura SCI.......................................................................................82Imagen 3.30 Ciclo de escritura SCI.....................................................................................82Imagen 3.31 Conexión de la tarjeta MMC..........................................................................83Imagen 3.32 Pinout de la pantalla LCD..............................................................................84Imagen 3.33 Circuito usado con la pantalla LCD...............................................................84Imagen 3.34 Cronograma de comunicación con la pantalla................................................85Imagen 3.35 Circuito de la botonera...................................................................................85Imagen 3.36 Esquemático de los interfaces ICSP y UART................................................86Imagen 4.1 Esquemático usado con el MAX3232..............................................................88Imagen 4.2 Programador de PICs........................................................................................88Imagen 4.3 Esquema de librerías........................................................................................89Imagen 4.4 Pinout de la tarjeta MMC.................................................................................97Imagen 4.5 Diagramas de los protocolos MMC y SPI........................................................98Imagen 4.6 Estructura de las respuestas R1 y R2..............................................................100Imagen 4.7 Diagrama de inicialización.............................................................................101Imagen 4.10 Mapeo de la memoria DDRAM en la pantalla. Extraído de las especificaciones del controlador PCD8544.......................................................................110Imagen 4.11 Diagrama de tiempos del envío de un byte...................................................112Imagen 4.12 Estructura del mensaje..................................................................................119Imagen 4.13 Diagrama de inicialización de la comunicación...........................................121Imagen 4.14 Diagrama de funcionamiento del comando USB_DIR_LIST......................122Imagen 4.15 Diagrama del funcionamiento del comando USB_DIR_GET.....................123Imagen 4.16 Diagrama de flujo de la función principal....................................................128Imagen 4.17 Diagrama de flujo de la función temporizada..............................................129Imagen 4.18 Diagrama de flujo de la comprobación de la botonera.................................131Imagen 5.1 Arquitectura del uso del driver USB D2XX..................................................133Imagen 5.2 Estructura interna de la librería de comunicación..........................................135Imagen 5.3 Reproducción remota de archivos en el reproductor......................................136Imagen 5.4 Reproducción remota de archivos en el PC....................................................137Imagen 5.5 Reproducción local de archivos remotos........................................................138Imagen 5.6 Reproducción de audio de Shoutcast..............................................................141Imagen 5.6 Podcast cargado en el navegador de la aplicación..........................................142Imagen 5.7 Listado de Podcast favoritos...........................................................................144Imagen 6.1 Diagrama de Gantt..........................................................................................149

10

Page 11: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen I.1 Visión general del reproductor........................................................................155Imagen I.2 Detalles de la botonera....................................................................................156Imagen I.3 Pantalla LCD con el reproductor en espera.....................................................158Imagen I.4 Pantalla del listado de archivos.......................................................................158Imagen I.5 Pantalla del listado de opciones......................................................................158Imagen I.6 Descripción de la información en pantalla......................................................159Imagen I.7 Ventana de instalación del driver de USB.......................................................162Imagen I.8 Asistente de instalación de la aplicación 1......................................................162Imagen I.9 Asistente de instalación de la aplicación 2......................................................163Imagen I.10 Asistente de instalación de la aplicación 3....................................................163Imagen I.11 Asistente de instalación de la aplicación 4....................................................163Imagen I.12 Iniciación de comunicación..........................................................................164Imagen I.13 Regiones principales de la aplicación...........................................................164Imagen I.14 Contenido de la tarjeta de memoria..............................................................165Imagen I.15 Ventana de copia de un archivo.....................................................................165Imagen I.16 Opción Reproducción remota.......................................................................166Imagen I.17 Reproducción remota de archivos en la tarjeta.............................................166Imagen I.18 Opción Reproducción local...........................................................................166Imagen I.19 Reproductor local de audio...........................................................................167Imagen I.20 Lista de reproducción....................................................................................167Imagen I.21 Añadiendo archivos al listado de reproducción............................................168Imagen I.22 Detalle de los iconos del estado del archivo.................................................168Imagen I.23 Podcast Favoritos..........................................................................................169Imagen I.24 Contenido de un Podcast...............................................................................169Imagen I.25 Página web de SHOUTcast...........................................................................170Imagen II.1 Estructura de una partición FAT16................................................................172Imagen II.2 Ejemplo de tabla de asignación.....................................................................174

11

Page 12: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

12

Page 13: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Índice de tablasTabla 2.1 Diferencias entre las tecnologías NOR y NAND................................................37Tabla 2.2 Comparación de los interfaces más populares [Axelson05]................................45Tabla 2.3 Comparación de los tipos de transferencia [Axelson05].....................................49Tabla 3.1 Características de la familia 18Fxx2...................................................................55Tabla 3.2 Comparación de diferentes integrados para el interfaz USB...............................56Tabla 3.4 Comparación de tarjetas de memoria..................................................................57Tabla 3.5 Comparación de decodificadores de MP3...........................................................58Tabla 3.6 Comparativa de pantallas LCD............................................................................59Tabla 3.7 Rango de tensiones de los componentes..............................................................64Tabla 3.8 Consumo máximo de los componentes...............................................................64Tabla 3.9 Conexiones del microcontrolador........................................................................72Tabla 3.10 Explicación del pinout del módulo USB...........................................................75Tabla 3.11 Pinout de la tarjeta Multimedia Card.................................................................82Tablas 4.1 Funciones SDI....................................................................................................91Tabla 4.2 Registros internos del decodificador...................................................................91Tabla 4.3 Descripción de los bits del registro MODE.........................................................92Tabla 4.4 Frecuencias según los bits del registro AUDATA...............................................93Tabla 4.5 Bits de los registros HDAT0 y HDAT1...............................................................94Tabla 4.6 Funciones SCI......................................................................................................96Tabla 4.7 Comandos más utilizados del protocolo SPI.......................................................99Tabla 4.8 Comparación de las versiones de FAT...............................................................104Tabla 4.15 Líneas de comunicación de la pantalla LCD...................................................109Tabla 4.16 Juego de instrucciones de la pantalla LCD......................................................111Tabla 4.17 Estructura de la etiqueta ID3v1.......................................................................116Tabla 4.18 Comandos del protocolo de comunicación......................................................120Tabla 6.1 Precio del Software............................................................................................146Tabla 6.2 Precio de las herramientas.................................................................................147Tabla 6.3 Precio de componentes......................................................................................148Tabla 6.4 Valoración del coste de mano de obra...............................................................150Tabla 6.5 Coste total del proyecto.....................................................................................150Tabla II.1 Estructura del Master Boot Record...................................................................171Tabla II.2 Estructura del registro de partición en el MBR................................................172Tabla II.3 Estructura del sector de arranque de FAT16.....................................................173Tabla II.4 Calculo de la posición de los elementos de una partición................................173Tabla II.5 Tamaños de cluster según tamaño de partición.................................................175Tabla II.6 Estructura de entrada de directorio...................................................................175

13

Page 14: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

14

Page 15: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

1.Introducción

1.1 Presentación

Actualmente los sistemas multimedia están teniendo una gran importancia y una amplia variedad de dispositivos incluyen entre sus características la reproducción de audio y/o vídeo. Cada vez más estos dispositivos admiten una mayor variedad de formatos y soportes de almacenamiento como discos duros, CDs, DVDs, memorias Flash, etc. Muchos de los dispositivos poseen una capacidad de almacenamiento limitado lo que hace necesario la utilización de formatos comprimidos que permitan almacenar estos elementos multimedia con una calidad aceptable y en muchos casos sin pérdida aparente de ésta.

De la necesidad de obtener un formato de audio comprimido de alta calidad surgió el estándar MP3, gracias a él se puede obtener audio comprimido a un ratio aproximado de 1:12 con respecto al audio en PCM1 y con perdidas poco apreciables. Gracias a este nivel de compresión han surgido gran cantidad de dispositivos que pueden ser utilizados como reproductores portátiles de audio, como teléfonos móviles, PDAs y gran cantidad de reproductores de alta capacidad basados en memoria Flash, disco duro o CD. Pero el formato MP3 no ha sido sólo utilizado en dispositivos portátiles, hoy en día puede encontrarse en reproductores para coche, mini cadenas, reproductores de DVD, duchas, frigoríficos, centralitas telefónicas, etc.

Otra ventaja del tamaño reducido es que es muy adecuado para transmisiones entre dispositivos ya sea a través de USB, redes cableadas o inalámbricas. Esto permite al MP3 ser reproducido de forma remota, de hecho el MP3 es uno de los principales formatos para la transmisión de audio por Internet.

El propósito general de este proyecto es el desarrollo de un dispositivo hardware capaz de reproducir audio en formato MP3 almacenado de forma local en el propio dispositivo y de forma remota siendo transmitido desde el ordenador a través del interfaz USB.

1 Pulse Code Modulation, representación digital de una señal analógica donde la magnitud de la señal es muestreada y cuantificada a intervalos regulares.

15

Page 16: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

1.2 Objetivos

En el proyecto se pretende desarrollar un sistema que conste de un dispositivo hardware y una aplicación para el control y transmisión de datos desde el ordenador. El objetivo principal de este proyecto es:

El desarrollo de un dispositivo hardware que reproduzca ficheros en formato MP3 y pueda ser utilizado tanto como reproductor portátil como periférico conectado a un ordenador. El desarrollo de una aplicación a través de la cual se podrá controlar el dispositivo desde el ordenador cuando esté conectado a éste, y el diseño del protocolo de comunicación entre el dispositivo y la aplicación.

A continuación se enumeran las características que tendrá el dispositivo:

● Al tratarse de un dispositivo que puede funcionar de forma autónoma estará alimentado por pilas cuando no esté conectado al ordenador y por USB cuando lo esté. Estas pilas serán recargables y podrán cargarse mediante USB cuando el dispositivo esté conectado.

● Tendrá un interfaz de usuario compuesto por una botonera y una pantalla, que permitan un control sencillo e intuitivo del dispositivo.

● En la pantalla se mostrará el título y demás información del fichero MP3 obtenida de las etiquetas ID3 cuando estén disponibles.

● Almacenará los ficheros MP3 en tarjetas de memoria Flash intercambiables y que podrán ser leídas y grabadas en cualquier otro dispositivo.

● Podrá conectarse a un ordenador mediante el interfaz USB2 y ser controlado por la aplicación que se desarrollará para este propósito.

Las características de la aplicación que se ejecutará en el ordenador son las siguientes:

La aplicación tendrá acceso a la estructura de ficheros de la tarjeta introducida en el reproductor, de modo que podrá navegar por ella.

Se podrá controlar la reproducción de los ficheros MP3 de la tarjeta de memoria.

Podrán transmitirse flujos de datos MP3 que serán reproducidos en tiempo real por el dispositivo. De este modo se podrán enviar para su reproducción ficheros que se encuentren en el ordenador, ficheros a los que se acceda a través de Internet o flujos de audio procedentes de una radio a través de Internet.

La aplicación podrá obtener ficheros que se encuentren en la tarjeta de memoria, para su almacenamiento en el ordenador o para su reproducción en tiempo real.

Podrá crear listas de reproducción de ficheros locales que será reproducidos por el dispositivo.

En cuanto a las características del protocolo de comunicación, este deberá permitir un control total de la reproducción de ficheros almacenados en la tarjeta de memoria, acceso a la estructura de ficheros y control de diferentes características y

2 La elección del USB como interfaz de conexión será discutida en posteriores apartados.

16

Page 17: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

configuraciones, como el control del volumen. En líneas generales deberá permitir realizar las características de la aplicación descritas.

1.3 Contenidos

La memoria se ha dividido en diferentes capítulos para intentar mostrar de forma clara cada una de las partes del proyecto. Estos capítulos desarrollan los siguientes contenidos:

Capítulo 1: Enunciado y objetivos del proyecto, especificaciones del reproductor y resumen del contenido de la memoria.

Capítulo 2: Estado de la tecnología, donde se relata los inicios del sistema de codificación MP3, los primeros reproductores, las tarjetas de memoria existentes, y se da una visión general del funcionamiento de las diferentes tecnologías de las que se compone el dispositivo realizado.

Capítulo 3: Explica el diseño hardware del dispositivo desarrollado; selección de componentes, herramientas utilizadas y diseño de cada uno de los módulos de los que se compone el sistema (alimentación, microcontrolador, USB, decodificador de MP3, pantalla, etc.).

Capítulo 4: Diseño del firmware del microcontrolador. Se detallan las herramientas utilizadas, las diferentes librerías implementadas (decodificador, tarjeta de memoria, FAT16, pantalla, USB, ID3, etc.) y el protocolo de comunicación desarrollado para el control del reproductor desde una aplicación en el ordenador.

Capítulo 5: Diseño de la aplicación. Explicación de las herramientas utilizadas, y de la aplicación implementada para el control del reproductor.

Capítulo 6: Estimación económica de los costes del proyecto y planificación temporal de éste.

Capítulo 7: Conclusiones y valoración del resultado del proyecto, y posibles desarrollos y mejoras futuras.

Apéndice I: Manual de usuario. Apéndice II: Estructura del sistema de archivos FAT16. Bibliografía.

17

Page 18: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

2. Estado de la tecnología

2.1 Contenido

En este capítulo se hará una pequeña explicación de las tecnologías utilizadas en el presente proyecto. Primero se hablará de los reproductores MP3 existentes, con un resumen de su historia y una clasificación según características. Después se explicará el funcionamiento de la codificación MP3, con una pequeña introducción a su origen, los principios psicoacústicos en los que se basa y un resumen del algoritmo de codificación y decodificación del formato.

Los tres siguientes apartados hacen referencia al hardware utilizado, el USB como interfaz de comunicación, las tarjetas de memoria como medio de almacenamiento y el microcontrolador, utilizado para gobernar el sistema.

2.2 Reproductores de MP3

El formato MP3 ha sido y sigue siendo el formato de audio más extendido y el número de reproductores3 que se ha desarrollado y comercializado es enorme, lo que hace imposible una enumeración de todos. Por tanto se hará una pequeña introducción con los primeros dispositivos capaces de decodificar este formato y, posteriormente, una clasificación de los reproductores según diferentes características.

2.2.1 Los primeros decodificadores

El formato de audio MPEG-1 Layer 3, más conocido como MP3 se convirtió en estándar ISO/IEC a finales de 1991, los primeros equipos capaces de reproducirlo fueron Racks de 19'' creados y distribuidos por Fraunhofer IIS para uso profesional, inicialmente se crearon para transmisión de audio de alta calidad por líneas telefónicas RDSI y para estaciones de radio.

Imagen 2.1 Primer chip decodificador de MP3 de Micronas (1994)y tarjeta de PC codificadora (1996)

En 1992 Micronas4, un fabricante de circuitos integrados, comenzó el desarrollo junto con del IIS el primer chip decodificador de MP3,el MAS3507 (Imagen 2.1), que fue

3 Cuando nos referimos a reproductores en este texto hacemos referencia a los dispositivos hardware capaces de reproducir MP3, salvo que se indique lo contrario (reproductores software, de DVD, etc.)

4 Realmente fue diseñado por ITT Intermetall, adquirido por Micronas.

18

Page 19: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

presentado en el verano de 1994, Micronas se encargó del hardware y el IIS desarrolló el software. Con él se pretendía que el MP3 llegase a la electrónica de consumo. Aunque todavía tardarían unos años en ser comercializados los primeros reproductores no tardaron en desarrollarse los primeros prototipos (como el de la Imagen 2.2), algunos basados en este chip, otros programados en un DSP genérico y otros en PCs de tamaño reducido con un reproductor software [FraunHist].

Imagen 2.2 Primer prototipo de un reproductor de MP3 sin partes móviles (1994)

2.2.1 Los primeros reproductores.

Aunque existían integrados capaces de decodificar el formato MP3 desde 1994 no fue hasta 1998 cuando Saehan Information System, fabricante coreano, comercializó un reproductor portátil, el MPMan F10 distribuido por Eiger Labs (Imagen 2.3 e Imagen 2.4). Este primer reproductor utiliza el decodificador fabricado por Micronas y como almacenamiento una memoria Flash interna de 32 MB (ampliable a 64 enviándolo al fabricante) en la que se puede almacenar 30 minutos de audio a una calidad equivalente a la de un CD de audio. La transferencia de datos desde el PC a la memoria interna se realiza a través del puerto paralelo y utiliza una batería interna de NiMH que le otorga 9 horas de autonomía. Poco después este mismo fabricante comercializó el MPMan F20, un modelo muy similar también con 32MB de memoria interna pero expandible otros 32MB mediante una tarjeta SmartMedia, en este caso el reproductor se alimentaba mediante una pila AA que le otorga 12 horas de autonomía.

Imagen 2.3 Reproductor MPMan F10

Imagen 2.4 Interior del reproductor MPMan F10.1. DSP y DAC de Phillips; 2. Controlador del LCD de Samsung; 3.

Controlador de interfaces de Microchip; 4. Decodificador MP3 hardware de Micronas; 5. NAND flash de Samsung.

19

Page 20: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

A pesar de ser el primer reproductor en salir al mercado poco meses después salio el reproductor que fue líder en ventas y regalo por excelencia las navidades de ese año, el Diamon Rio PMP300 (Imagen 2.5 e Imagen 2.6). Su popularidad se debió a un mejor diseño, una pantalla LCD mayor y unos mejores controles. Utiliza también el MAS3507 y posee una memoria interna de 32MB y, al igual que el MPMan F20, un slot de expansión para tarjetas SmartMedia, se conecta al PC mediante un interfaz paralelo propietario y se alimenta mediante una pila AA. En 1998 Recording Industry Association of America demandó a Diamond por violación del Audio Home Recording Act y llegó a paralizar la distribución del dispositivo, los jueces fallaron a favor de Diamon allanando el camino de los reproductores MP3 portátiles [MPManReview].

Imagen 2.5 Reproductor Diamon Rio PMP300 Imagen 2.6 Interior del reproductor Diamon Rio PMP300

El primer reproductor basado en disco duro fue el PJB-100 (Imagen 2.7) diseñado por HanGo Electronics Co., Ltd. y lanzado a finales de 1999. Fue distribuido por Compaq, usaba como CPU/DSP el Motorola 56309 DSP con 12MB de RAM, un interfaz USB 1.1 y contaba inicialmente con 4,8GB de almacenamiento. Puede reproducir ficheros de 8 a 320Kbit/s a muestreo de 44.1KHz, la decodificación MP3 la hace la misma CPU que funciona a 33MHz y posee una pantalla LCD de 128×64 píxeles [PJB100]. Poco después aparecieron otros reproductores de Creative y Archos también basados en disco duro. En ese mismo año, 1999, salió al mercado el Mambo-X (Imagen 2.8), primer reproductor de MP3 que usaba el CD como almacenamiento y que permite además reproducir CDs de audio.

Imagen 2.7 Reproductor con disco duro PJB-100 (1999)

Imagen 2.8 Reproductor MP3 de CDs Mambo-X

20

Page 21: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

2.2.2 Clasificación de los reproductores

Existe una gran cantidad de reproductores de MP3, en pocos años han sustituido al walkman y los reproductores portátiles de CD al igual que los teléfonos móviles incorporan la posibilidad de leer este formato. A continuación se realiza una clasificación según las características de cada uno.

Podríamos hacer una primera división entre los reproductores creados expresamente con ese propósito, como los analizados en el apartado anterior, y los dispositivos cuyo propósito principal es otro distinto a la reproducción de audio e incorporan la reproducción de MP3 como característica adicional. Entre estos últimos dispositivos podríamos encontrar:

Teléfonos móviles: inicialmente surgieron con la posibilidad de reproducir pequeños ficheros como tono de llamada y se han convertidos en auténticos dispositivos multimedia capaces de reproducir audio y vídeo, y con una capacidad de almacenamiento muy elevada gracias a las tarjetas de memoria.

Reproductores DVD, que al igual que los móviles cada vez incorporan más variedad de características, como la posibilidad de ver FotoCDs, reproducir vídeos almacenados de forma remota por red (cableada o no) y en diferentes formatos. Y por supuesto pueden reproducir audio MP3, esto es así precisamente porque la codificación de audio utilizada los VideoCDs es MPEG1 Layer 3, aunque en la práctica suelen ser utilizados para este fin.

Navegadores GPS, algunos modelos de alta gama tienen la posibilidad de reproducir audio y vídeo.

Consolas de vídeo juegos, tanto las de sobremesa como las portátiles incluyen esta capacidad en sus últimos modelos.

En general cualquier electrodoméstico puede tener un reproductor integrado, existen: neveras (Imagen 2.9), columnas hidromasaje, microondas, marcos de fotos digitales, etc.

Imagen 2.9 Nevera Centrlpark de Whirpool, con reproductor de DVD y MP3

En cuanto a los dispositivos cuya función principal es la reproducción de audio se puede diferenciar entre los que la reproducción de MP3 es su característica principal y aquellos que la incorporan como un soporte más de audio que son capaces de reproducir, como los AutoCDs o las cadenas musicales.

Sea cual sea el propósito por el cual un dispositivo tiene la capacidad de reproducir audio MP3 se pueden hacer distintas clasificaciones basándonos en sus características internas, esto es: el soporte de almacenamiento, interfaz de conexión con el ordenador, la variedad de codificaciones de audio admitidas, otras funcionalidades, etc.

21

Page 22: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Además de otras características menos evidentes como si la decodificación la hace un integrado especifico, se realiza mediante un DSP de propósito general o el reproductor se basa en un SoC5.

Almacenamiento

Dependiendo del almacenamiento utilizado se pueden clasificar los dispositivos según utilicen:

Memoria interna, en concreto utilizan NAND Flash. Disco duro. Un soporte óptico, ya sea CD o DVD. Tarjetas de memoria Sin almacenamiento, reproduciendo el audio que les llega mediante USB,

puerto paralelo, ethernet, etc.

La mayoría de dispositivos actuales creados específicamente para la reproducción de MP3 utilizan memoria interna o un disco duro como almacenamiento. La ventaja de la memoria interna es que permite hacer dispositivos de menor tamaño, mientras que con el disco duro se obtiene un almacenamiento mayor. El soporte óptico lo utilizan los reproductores de CD y DVD que tienen la capacidad de reproducir MP3, las tarjetas de memoria suelen usarse como ampliación de la capacidad de almacenamiento de los reproductores con memoria interna y los dispositivos sin almacenamiento son los menos comunes. Además de estos soportes muchos reproductores disponen de un interfaz USB en el que se puede conectar un dispositivo de almacenamiento masivo, normalmente un pendrive.

Interfaz

No todos los reproductores disponen de un interfaz de conexión al ordenador, esto depende principalmente del tipo de almacenamiento utilizado ya que el interfaz suele usarse para acceder a la memoria y transferirle los archivos MP3. Los dispositivos que suelen disponer de interfaz de conexión son aquellos que utilizan memoria interna o disco duro, mientras que los que utilizan como medio de almacenamiento un soporte óptico no suelen tenerlos. Los interfaces normalmente utilizados son:

● Puerto paralelo, utilizado en los primeros reproductores, algunos usaban interfaces paralelo propietario.

● USB, la mayoría de los reproductores con memoria interna o disco duro usan este interfaz para poder acceder a la memoria.

● Firewire, aunque son pocos existen algunos reproductores que lo utilizan.● Ethernet, algunos reproductores de sobremesa pueden conectarse a la red

mediante cable o de forma inalámbrica, pudiendo reproducir ficheros remotos o radios que emiten por Internet.

● Sin interfaz de conexión, como la mayoría de los reproductores de CD o DVD.

5 System on a Chip, es la inclusión de todo un sistema o dispositivo dentro de un circuito integrado. Los sistemas basados en SoC suelen necesitar tan solo un pequeño número de elementos pasivos externos.

22

Page 23: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Codificaciones soportadas

La codificación de audio más utilizada y extendida en los reproductores es el MP3 pero existen otros formatos con calidades similares o superiores que, cada vez más, están siendo soportadas por los reproductores. De hecho es muy común que las últimas versiones de los integrados decodificadores de MP3 incluyan alguno de estos otros formatos. Entre los formatos de codificación soportados por los reproductores podemos encontrar además del MP3:

RealAudio, es un formato de audio propiedad de RealNetworks utilizado principalmente para la retransmisión de audio en tiempo real por Internet.

Windows Media Audio, es un formato propiedad de Microsoft conocido como WMA, es un competidor directo del MP3 y según Microsoft con una calidad superior a este. Además este formato posee otras características como el poder incluir tecnología DRM6 en los ficheros. Tiene una variante de compresión sin perdidas denominada WMA Lossless.

AAC o Advanced Audio Coding, es un formato desarrollado entre varias compañías, entre ellas: Dolby, Fraunhofer IIS, AT&T, Sony y Nokia. Fue declarado oficialmente estándar en 1997 y está incluido en las especificaciones MPEG2 parte 7 y MPEG4 parte 3 aunque se suele hacer referencia a ella como MPEG4 AAC o simplemente AAC. Puede incluir DRM pero no es muy común.

Vorbis, formato de audio de código abierto surgido a partir del anuncio en 1998 de Fraunhofer Gesellschaft de cobrar royaltys por todos los codificadores o decodificadores de MP3 fuesen gratuitos o no.

MusePack o MPC, otro formato de código abierto especialmente desarrollado para bitrates altos.

Formatos sin pérdida como: Apple Lossless y FLAC. Otros formatos menos comunes como: Speex, WavPack, Shorten, etc. pueden

ser reproducidos en un iPod7 cambiándole el firmware por uno no oficial denominado Rockbox.

En la actualidad muchos reproductores que se comercializan dicen reproducir MP4, esto en realidad no es del todo cierto ya que el MP4 no es una formato de codificación de audio, sino un contenedor multimedia estandarizado como parte del MPEG4 (MPEG4 parte 14) y se usa como contenedor de audio y vídeo. Los ficheros de audio con el contenedor MP4 suelen usar las extensiones .m4a o .mp4 y normalmente utilizan como codificación AAC o MP3 (aunque soporta otras). Por tanto estos reproductores lo que reproducen además del MP3 es el formato AAC.

Otro factor a tener en cuenta respecto a la codificación de audio es que es posible que un reproductor no pueda reproducir todos los archivos MP3. Un archivo con extensión .mp3 puede ser en realidad un MP2 (codificado con MPEG1 Layer 2) o estar codificado con unas tasas de bits o una frecuencia de muestreo no incluido en el estándar8, también es posible que el reproductor no tenga la capacidad de decodificar tasas de bits

6 Digital Rights Management o Gestión de derechos digitales, hace referencia a un conjunto de tecnologías dirigidas al control de los contenidos con el objetivo de proteger los derechos de autor.

7 Línea de reproductores portátiles de gran éxito desarrollados por Apple Inc.8 En el estándar MPEG2 se añadieron nuevas tasas de bits y muestreos, al igual que en el estándar no

oficial MPEG 2.5 creado por Fraunhofer para tasas de bits muy bajas.

23

Page 24: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

altos o no soportar VBR9. No obstante los chips decodificadores actuales suelen soportar todas estas variantes.

Funcionalidades

Además de todas estas clasificaciones podemos ordenar los reproductores según tengan o no alguna funcionalidad especifica, éstas pueden ser muy variadas. Algunos ejemplos de estas son:

Capacidad de leer ID3 Función de Karaoke para ver la letra de las canciones. Conexión a red y posibilidad de reproducir radio por Internet. Organizaciones especiales automáticas: por álbum, autor, género o año. Etc.

2.2.3 Reproductores no comerciales

Existen varios reproductores de MP3 no comerciales, algunos han sido realizados como partes de proyectos o tesis y otros por personas con buenos conocimientos de electrónica que, basándose en otros proyectos, han decidido construir su propio reproductor (en estos casos suele ser muy básico). De hecho existen reproductores que surgieron como un proyecto personal y han terminado comercializándose u otros en los que el autor vende un kit con todos los componentes y el firmware del microcontrolador para montarlo. Un ejemplo es el reproductor Yampp-3, basado en un microcontrolador Atmel y el decodificador VS1001k.

La mayoría de estos reproductores suelen estar controlados por un microcontrolador (los mas utilizados PIC, Atmel y Motorola), un chip para la decodificación del audio (de Micronas, ST microelectronics, VLSI Solutions o Texas Instruments) y como almacenamiento, al igual que muchos comerciales, un disco duro, tarjeta de memoria o CD.

El reproductor desarrollado en el presente proyecto implementa funcionalidades que no están presentes en ninguno de ellos, como el control total de la reproducción mediante el puerto USB. Son pocos los reproductores no comerciales que incluyen conexión USB, y los que lo hacen lo utilizan exclusivamente para acceder a los archivos almacenados en la memoria. Además se ha incluido la opción de reproducir audio en formato MP3 descargada en tiempo real de internet (como archivos de Podcast y radio).

9 Variable Bit Rate o tasa de bits variable, permite que no todo el fichero este codificado con la misma tasa de bits, usando mayores cuando sea necesario y menores cuando no (como en silencios).

24

Page 25: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

2.3 Formato MP3

El formato de codificación de audio MPEG1 Layer 3, más comúnmente conocido como MP3 debido a la extensión .mp3 que utilizan sus archivos, es un algoritmo de compresión con perdidas diseñado para reducir la cantidad de datos necesaria para almacenar audio sin degradación apreciable del sonido para el oído humano.

2.3.1 Orígenes del MP3

En 1987 se forma una alianza de investigación entre la universidad Erlangen-Nuremberg y el Fraunhofer Institute for Integrated Circuits bajo el marco de un proyecto de la Union Europea denominado EUREKA para la radiodifusión de audio digital (DAB). Este equipo de investigación creó un codificador funcional en tiempo real del algoritmo LC-ATC (Low Complexity Adaptive Transform Coding) como base de su investigación, hasta ese momento el LC-ATC existía solo como simulación por ordenador. El sistema hardware estaba compuesto por múltiples módulos DSP y varias tarjetas de entrada y salida de audio y datos.

En 1989 Karlheinz Brandenburg termina su tesis doctoral sobre el OCF (Optimum Coding in the Frequency Domain), que posee un gran número de características que se encuentran en la tecnología MP3, como banco de filtrado de resolución de alta frecuencia, cuantización no uniforme, codificación Huffman y su estructura de información. La parte software del sistema de tiempo real es desarrollada por Bernhard Grill bajo la supervisión del profesor Gerhäuser que lidera el grupo de trabajo del Fraunhofer IIS.

En 1991 una nueva codificación de audio de altas prestaciones denominado ASPEC (Adaptive Spectral Perceptual Entropy Coding) es presentada como resultado de diferentes mejoras del OCF y con contribuciones de la universidad de Hannover, AT&T y Thomson. Esta codificación se propone como nuevo estándar de audio al subcomité MPEG (Movin Picture Experts Group), creado en enero de 1988 por ISO/IEC con la finalidad de desarrollar estándares de compresión de audio y vídeo digital.

MPEG recibió un total de 14 propuestas de codificación de audio que son combinadas finalmente en cuatro propuestas entre las que se encuentran incluidas ASPEC y MUSICAM. Después de varias pruebas se sugieren tres esquemas de codificación de audio basados en ASPEC y MUSICAM: Layer 1 es una variante de MUSICAM de baja complejidad, Layer 2 es una versión optimizada de MUSICAM y Layer 3 está basado en ASPEC.

Debido a su menor complejidad Layer 2 es elegido como formato de audio para la radiodifusión de servicios de audio digital mientras que ASPEC/Layer 3, que ofrece una codificación más eficiente al tiempo que una mayor complejidad, pasa a ser la clave en las transmisiones de audio de alta calidad en las líneas RDSI. Fraunhofer IIS fabrica y vende racks a estaciones de radio profesionales con su codificación ASPEC de forma que la transmisión de audio de alta calidad por RDSI en tiempo real entre estudios de radiodifusión fue la primera aplicación real de este algoritmo de codificación.

25

Page 26: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Al fin en 1992 MPEG concluye su primer estándar de compresión, MPEG1, para el uso en VideoCDs. En la sección de audio se especifican tres familias genéricas de formatos de codificación (Layer 1, 2 y 3). Siendo el más eficiente de las tres codificaciones Layer 3 pronto se convierte en una popular manera de almacenar música en los relativamente pequeños discos duros de los ordenadores y transferir ficheros de música a través de Internet mediante los modems de ordenador de 28.8Kbps. [FraunHist]

2.3.2 Principios psicoacústicos.

La audición humana es un proceso extraordinariamente complejo, que comienza cuando el sonido golpea el tímpano y es convertido de variaciones en la presión del aire a impulsos nerviosos. De ahí en adelante la psicología se convierte en factor más importante para estudiar y analizar los sonidos, así como las reacciones de las personas ante éstos. La psicoacústica puede ser definida simplemente como el estudio psicológico de la audición. El objetivo de la investigación psicoacústica es averiguar cómo funciona la audición. En otras palabras, el objetivo es descubrir cómo los sonidos que entran en el oído son procesados por éste y el cerebro, con el fin de dar a la persona que escucha información útil acerca del mundo exterior.[VargasDuque01]

La mayoría de codificaciones de audio actuales consiguen la compresión aprovechándose del hecho de que información irrelevante de la señal no es detectable por el oyente [Lagerstöm01]. Los cuatro aspectos más relevantes en el desarrollo de codificaciones de audio a lo que psicoacústica se refiere son: el mínimo umbral auditivo, las bandas críticas, los enmascaramientos y joint stereo.

Mínimo umbral auditivo y bandas críticas

Nuestros órganos auditivos están preparados para sentir sólo un rango de frecuencias de vibraciones de todo el espectro. Por lo general los seres humanos no pueden oír frecuencias por debajo de los 20Hz ni por encima de los 20kHz. Además, los humanos perciben el rango intermedio de frecuencias mejor que las altas y bajas frecuencias (Imagen 2.10 ), y esta sensibilidad a altas frecuencias disminuye con la edad y con la exposición prolongada a volúmenes altos. De hecho la mayoría de los adultos no pueden oír por encima de los 16kHz. El rango de mayor sensibilidad se encuentra entre los 2kHz y los 4kHz hecho probablemente relacionado con la evolución, ya que la voz humana se encuentra entre el rango de los 500Hz y los 2kHz. [Hacker00]

26

Page 27: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 2.10 Umbrales de sensibilidad y auditivo [Hacker00]

Enmascaramiento simultáneo10

El oído realiza pequeños análisis de las bandas críticas donde se realizan transformaciones tonotópicas en la membrana basilar11. Los espectros de energía no se representan en una escala de frecuencias lineal sino en bandas de frecuencia limitada llamadas bandas críticas (Imagen 2.11). El sistema de audición puede describir como un banco de filtros pasa banda, consistentes en filtros pasa banda fuertemente solapados con anchos de banda del orden de los 50Hz a 100Hz para señales por debajo de 500Hz y hasta 5kHz para señales de frecuencias altas.

Imagen 2.11. Bandas críticas aproximadas [Pan93]

10 Enmascaramiento simultaneo o en frecuencia, depende del autor.11 Teoría del funcionamiento del oído interno iniciada por Helmholtz y continuada por Békésy según la cual

la zona de mayor estimulación de la membrana basilar depende de la frecuencia, es decir que a cada frecuencia corresponde una posición específica en la membrana basilar.

27

Page 28: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

El enmascaramiento simultáneo es un fenómeno del dominio de la frecuencia donde una señal con nivel bajo (la enmascarada) se hace inaudible (enmascarada) debido a una señal mas fuerte que ocurre simultáneamente (la enmascaradora), si la enmascarada y la enmascaradora están muy cercana la una a la otra en frecuencia (Imagen 2.12). Este enmascaramiento es mayor en la banda crítica en la que se encuentra el enmascarador, y su efecto es menor en las bandas vecinas [IEEE97].

Imagen 2.12 . Umbral en silencio y umbral de enmascaramiento (sonidos por debajo de los umbrales de las mascaras no son audibles) [Lagerstöm01]

Enmascaramiento temporal

Además del enmascaramiento simultáneo en el domino de la frecuencia, el enmascaramiento temporal, también llamado enmascaramiento no simultáneo, juega un rol importante en la percepción auditiva humana en el domino del tiempo. Cuando dos señales aparecen en un corto intervalo de tiempo la señal más fuerte puede enmascarar a la más débil incluso si la enmascarada precede a la enmascaradora.

Dos efectos de enmascaramiento temporal ocurren antes y después de una señal fuerte. Si la señal es enmascarada después de una señal fuerte se llama post-enmascaramiento, y si es enmascarada a continuación se le denomina pre-enmascaramiento. Los tiempos del pre y post enmascaramiento son diferentes, la zona de pre-enmascaramiento es aproximadamente 20ms antes de la señal enmascaradora, y la zona de post-enmascaramiento 160ms después [Hung], como puede verse en la Imagen2.13.

Imagen 2.13 Umbrales de enmascaramiento temporal [Hung]

28

Page 29: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

El pre-enmascarado puede ayudar a enmascarar la aparición de pre-ecos. Si se considera el caso en el que un periodo de silencio es seguido por un sonido de percusión, estos sonidos transitorios causan una gran cantidad de errores de cuantización instantáneos. Estos pre-ecos pueden hacerse audibles, especialmente con tasas de bit bajas. El efecto de los pre-ecos se puede mitigar gracias al efecto de pre-enmascarado en el dominio del tiempo si es de corta duración.

Joint Stereo

En realidad el Joint Stereo no es un principio psicoacústico sino una técnica usada para la compresión de audio estereofónico aprovechándose de la correlación entre los dos canales de audio y la irrelevancia de la diferencia de fase entre canales [Pan95]

2.3.3 Introducción a la compresión de audio MPEG 12

El algoritmo MPEG/Audio consiste en un algoritmo de compresión de audio con pérdidas que se aprovecha de principios psicoacústicos de forma que no hayan pérdidas aparentes para que al oído humano, por tanto es perceptualmente sin perdidas. El estándar, desarrollado por el subcomité MPEG de ISO/IEC, fue el primer algoritmo de compresión de audio estandarizado. El estándar es rígido únicamente donde es necesario para asegurar la interoperabilidad, específica la sintaxis del flujo de bits codificados y define el proceso de decodificación. Esto deja total libertad en la implementación del codificador ofreciendo un gran potencial de diversidad.

La codificación MPEG/Audio tiene las siguientes características:

La frecuencia de muestreo puede ser de 32, 44.1 o 48kHz13

Soporte para canales de audio. Soporta uno o dos canales de audio en cuatro posibles modos:■ Modo monotónico con un único canal de audio.■ Modo dual-monotónico con dos canales de audio independientes■ Modo estéreo, con dos canales que comparten bits.■ Modo Joint Stereo, que aprovecha la correlación entre los canales de audio

y la irrelevancia de la diferencia de fase entre canales Tasas de bit predefinidas, el flujo de bits puede utilizar una de las tasas de bit

predefinidas entre los rangos 32 y 224kbps por canal. Además en estándar tiene un modo de tasa de bits libre para soportar otras tasas de bits diferentes a las predefinidas.

Capas de compresión (layers), MPEG ofrece tres capas de compresión independientes. Esto ofrece un mayor rango de compromiso entre complejidad de la codificación y la calidad del audio comprimido. Las capas son:■ Layer 1, la más simple.■ Layer 2, con una complejidad intermedia y tasas de bit alrededor de

128kbps por canal. Usado para DAB y VideoCD.■ Layer 3, la más compleja y la que ofrece una mayor calidad de audio, se

12 La explicación de la codificación MP3 se realiza como referencia ya que en este caso se ha utilizado un circuito integrado para la decodificación MP3.

13 En el estándar MPEG-2 se añadieron las frecuencias 16, 22,05 y 24kHz para tasas de bit bajas, y en el estándar no oficial MPEG 2.5 se añadieron 8.000, 12.000 y 11.025Hz para tasas aún más bajas.

29

Page 30: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

suele usar con tasas de bit de 64kbps por canal. Detección de errores, soporta de manera opcional CRC para la detección de

errores. Datos complementarios, no utilizados en la decodificación.

2.3.4 Algoritmo de codificación MPEG-1 Layer 3

El algoritmo de codificación sigue la estructura que puede verse en la Imagen2.14. La entrada del codificador son datos normalmente codificados con PCM y separados en marcos de 1152 muestras. Cada marco se divide a su vez en dos gránulos de 576 muestras cada uno. Cada uno de ellos se envía al banco de filtros polifásico (o de análisis) y al bloque de transformada de fourier rápida (FFT).

Imagen 2.14 Estructura de codificación MP3[Lagerstöm01]

Banco de filtros polifásico

El banco de filtros divide la señal de entrada en 32 subbandas de frecuencia del mismo tamaño, como puede verse en la Imagen 2.15. Los filtros proveen una buena resolución temporal con una razonable resolución en frecuencia (Imagen 2.16). El igual tamaño de las subbandas no refleja el sistema auditivo humano dependiente de la frecuencia. Sin embargo el tamaño de las bandas críticas en función de la frecuencia es un buen indicador de su comportamiento. Muchos efectos psicoacústicos son constantes con la escala de frecuencias de una banda crítica [Pan95].

Imagen 2.15 Representación del filtro

30

Page 31: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 2.16 Anchos de banda del filtro MPEG/Audio vs ancho de las bandas críticas[Pan95]

Transformación discreta del coseno modificada

Después de este proceso las muestras en cada subbanda están aún en el dominio del tiempo. A través de un transformación discreta del coseno modificada (MDCT), cuya ecuación puede verse en la Imagen 2.17, las muestras de cada subbanda son mapeadas en el dominio de la frecuencia que provee una mejor resolución espectral. El uso del procesado MDCT proporciona las siguientes mejoras:

Reducción del aliasing Cuantización no uniforme Bandas factor de escala, se aproxima a los tamaños de las bandas críticas. Codificación de entropía de los valores de los datos

Imagen 2.17 Ecuación de la transformación MDCT [Hung]

Bloque FFT

Al mismo tiempo el bloque FFT transforma los gránulos de 567 muestras al dominio de la frecuencia mediante una trasformada de Fourier.

Umbrales de enmascaramiento

Las muestras en el dominio del tiempo procedentes del bloque FFT pasan a través de un modelo psicoacústico para determinar la tasa de energía de cada umbral de enmascaramiento para cada subbanda. Esto es utilizado por el cuantizador para determinar cuantos bits son necesarios para codificar cada muestra. También se utilizan para determinar si se necesitan cambios en las ventanas del bloque MDCT.

31

Page 32: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Escalado y cuantizado

Los umbrales de enmascaramiento se usan para determinar iterativamente cuantos bits son necesarios en cada banda crítica para codificar las muestras y por tanto el ruido de cuantización no sea audible. Generalmente el codificador tiene que satisfacer unos requerimientos de tasa de bits fijados [Lagerstöm01].

Codificación Huffman

En este bloque se realiza una codificación de entropía de las líneas de frecuencia cuantizadas usando el algoritmo de codificación Huffman basado en 32 tablas Huffman. Esta codificación realiza una compresión sin pérdidas y por tanto reduce la cantidad de datos sin pérdida de calidad [Hung].

Formateo del flujo de bits

El último bloque del proceso de codificación se encarga de producir un flujo de bits que cumpla con MPEG-1 Layer 3. El flujo de bits está particionado en marcos, cada uno representa 1152 muestras de audio. Cada marco esta compuesto por las líneas de frecuencia codificadas con Huffman, información secundaria y una cabecera del marco (Imagen 2.18).

Imagen 2.18 Formato del marco MP3

Cabecera: Tiene un tamaño de 4 bytes y contiene información de la capa, la tasa de bits, frecuencia de muestreo y modo de estéreo. También contiene 12 bits de sincronismo usado para encontrar un marco dentro de un flujo de bits.

Side information o información secundaria: Contiene información necesaria para la decodificación de los datos principales, como la selección de la tabla Huffman, factor de escalado, etc. Esta sección tiene un tamaño de 17 bytes con canal simple y 32 bytes en modo de doble canal.

Datos principales: Esta sección contiene los valores de factor escalado codificados y las líneas de frecuencia codificadas con Huffman. El tamaño depende de la tasa de bits.

Datos auxiliares

Los marcos pueden no ser totalmente independientes entre sí debido al uso de bit reservoir que es un buffer o deposito común de bits de los que se puede disponer para codificación extra (Imagen 2.19). Esto hace que los marcos no sean totalmente independientes unos de otros, en el peor de los casos se pueden necesitar 9 marcos para empezar la decodificación. El codificador puede donar bits al bit reservoir cuando necesita menos bits que la media de número de bits para codificar el marco. A su vez cuando el codificador necesita más número de bits puede tomarlos del bit reservoir.

32

Page 33: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 2.19 Ejemplo de bit reservoir.

2.3.5 Algoritmo de decodificación MPEG-1 Layer 3

El decodificador está compuesto por tres partes principales: decodificación del flujo de bits, cuantización inversa y mapeo del tiempo a la frecuencia (Imagen 2.20). El flujo de bits de entrada pasa a través del primer bloque para sincronizarse, extraer las líneas de frecuencia cuantizadas y la información de cada marco. El bloque de cuantización inversa decuantiza las líneas de frecuencia procedentes del bloque anterior. Finalmente el último bloque es un conjunto de operaciones inversas del MDCT y el banco de filtros de polifase del codificador. La salida es una señal en formato PCM [Hung].

Imagen 2.20 Diagrama de bloques del decodificador MPEG-1 Layer 3

2.3.5.1 Decodificación del flujo de bits

Este bloque de decodificación realiza la sincronización y extracción de las líneas de frecuencia cuantizadas y de otra información de cada marco. Es necesaria la sincronización al inicio del marco y donde se encuentran los datos. El diagrama de este bloque puede verse en la Imagen 2.21.

Imagen 2.21 Diagrama de bloques de la decodificación del flujo de datos

33

Page 34: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Sincronización

El propósito de este bloque es recibir el flujo de datos de entrada, identificar el contenido y pasar la información a los siguientes bloques del decodificador.

Decodificación Huffman

En este bloque se realiza la decodificación de los bits de código Huffman. Debido a que el código Huffman es de longitud variable, una única palabra del código en medio del los bits del código no puede ser identificada sin empezar a decodificar desde un punto en el código de bits conocido por ser el principio de la palabra del código.

Información para la decodificación Huffman

Este bloque sirve para iniciar todos los parámetros necesarios en el bloque de decodificación Huffman para que la decodificación pueda efectuarse correctamente. La primera tarea a realizar es obtener todas las características de los bits del código Huffman de la información secundaria.

Decodificación del factor de escalado

Decodifica los factores de escalado, la entrada del bloque es la información de los factores de escalado y la salida se utiliza en el bloque de cuantización inversa.

2.3.5.2 Cuantización inversa.

Este bloque restablece los datos perceptualmente idénticos de las líneas de frecuencia generados por el bloque MDCT del codificador. El desescalado se basa en las líneas de frecuencia cuantizadas y escaladas procedentes de la codificación Huffman y del factor de escalado reconstruido en el bloque de decodificación. La ecuación de desescalado puede verse en la Imagen 2.22.

Imagen 2.22 Ecuación del calculo de desescalado de las líneas de frecuencia

2.3.5.3 Mapeo de la frecuencia al tiempo.

Este bloque contiene varios subbloques (Imagen 2.23) para la transformación de las líneas de frecuencia decuantizada en una señal de audio PCM.

34

Page 35: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 2.23 Diagrama de bloques del Mapeo de la frecuencia al tiempo

Reducción del aliasing

Dentro del bloque de MDCT del codificador se aplican reducción del aliasing. Para obtener una reconstrucción correcta los artefactos del aliasing deben ser añadidos de nuevo en el proceso de decodificación

MDCT inverso

A las líneas de frecuencia procedentes del bloque de reducción de aliasing se le aplica una inversión del MDCT. La expresión analítica puede verse en la Imagen 2.24.

Imagen 2.24 Expresión analítica del MDCT inverso.

Inversión de frecuencia

Síntesis del banco de filtro de polifase

Cada vez que a las 32 muestras de cada 32 subbandas se le aplica la síntesis del banco de filtro de polifase se calculan 32 muestras de audio consecutivas.

35

Page 36: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

2.4 Tarjetas de memoria no volátil

Las tarjetas de memoria no volátil se basan en memoria flash, un tipo de memoria muy utilizada en los últimos años para el almacenamiento de datos en dispositivos portátiles como reproductores de música, cámaras de fotos y vídeo, teléfonos móviles, PDAs, etc. Lo que ha hecho avanzar mucho la tecnología haciendo memorias cada vez más rápidas y baratas y de tamaños cada vez más pequeños.

2.4.1 Memorias Flash

La memoria flash es un tipo de memoria EEPROM (memoria de solo lectura programable y borrable eléctricamente) que permiten el borrado o la escritura de varias posiciones de memoria en una única operación. Son básicamente memorias de estado sólido que permiten el almacenamiento de información en ausencia de corriente (memorias no volátiles). En las primeras versiones era necesario borrar todo el chip, las posteriores versiones permiten el borrado individual de bloques más pequeños.

La principal ventaja de estas memorias frente a otros sistemas de almacenamiento para dispositivos portátiles es su gran capacidad en un espacio muy reducido y muy poco peso. Por ejemplo, las tarjetas MMC (multimedia card) permiten almacenar, en el tamaño de un sello, hasta 4GB de información, y con un peso que no alcanza los 2g. Otra característica de este tipo de memorias es su bajo consumo y alta velocidad de datos. Todo esto hace que no solo se utilice este tipo de memorias para tarjetas, sino que se empiezan a construir discos duros con este tipo de memoria, consiguiendo que sean más resistentes a condiciones ambientales duras o a golpes que los hacen ideales para algunos tipos de sistemas.

Existen dos tipos de tecnologías de memorias Flash, según se basen en puertas NOR o NAND, ambas tienen características diferentes:

Las memorias NOR poseen una alta velocidad de lectura y acceso aleatorio, son capaces de leer y escribir datos en una posición específica de memoria sin necesidad de acceder a la memoria de forma secuencial, pueden obtener un único byte de la memoria.

Las memorias NAND también pueden leer y escribir a alta velocidad pero su acceso es secuencial, accediendo a los datos en pequeños bloques o páginas. Estas memorias pueden acceder a una única página, pero no a un único byte como las NOR.

Las tarjetas de memoria flash que se comercializan hoy en día utilizan NAND flash, debido a que esta memoria es más rápida en operaciones de borrado y escritura, y posee más densidad y menor coste, puede verse la evolución de esta tecnología en la Imagen 2.24 e Imagen 2.25. En la Tabla 2.1 se comparan las tecnologías NOR y NAND.

36

Page 37: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Característica NOR NANDCapacidad Hasta 256 MB Hasta 16GBXIP* Si NoVelocidad Borrados muy lentos

Escrituras lentasLecturas rápidas

Borrado rápidoEscritura rápidaLectura rápida

Fiabilidad Estándar:Tiene problemas de inversión de bits, menos de 10% que las NAND

Baja:Requiere algoritmos de detección y corrección de errores debido a la inversión de bits.Requiere control de sectores erróneos

Ciclos de borrado 10.000 - 100.000 100.000 – 1.000.000Tiempo de vida Menos de un 10% que las

NAND10 veces más que las NOR

Método de acceso Aleatorio SecuencialUso − Almacenamiento de

código− Almacenamiento de datos

(baja capacidad)

− Almacenamiento de datos

Precio Alto BajoTabla 2.1 Diferencias entre las tecnologías NOR y NAND.

*eXecute In Place, habilidad de una memoria de permitir la ejecución del código que almacena.

Imagen 2.24 Evolución prevista de la memoria NAND flash según la capacidad y tipo de aplicación [Samsung].

37

Page 38: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 2.25 Evolución prevista de la memoria NAND flashsegún la capacidad, el tamaño y la velocidad [Samsung]

2.4.2 Tipos de tarjetas

Existen varios tipos de tarjetas de memoria, cada una la ha desarrollado una empresa o un grupo de empresas. En este apartado se hará un pequeño resumen de las características de las más importantes.

Tarjeta CompactFlash

Fue inicialmente especificado y producido por SanDisk Corp. en 1994, su formato físico es utilizado en una gran variedad de dispositivos. Existen dos subdivisiones de CF, el tipo I y el tipo II. Ofrecen compatibilidad PCMCIA-ATA y es funcionalmente compatible con TrueIDE con ATA/ATAPI-4.

Imagen 2.26 Tarjeta CompactFlash

38

Page 39: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Sus características principales son:

Conector similar al PCMCIA, pero con 50 pines. Tasas de transferencia de hasta 66 MB/s Soporta dos tensiones de alimentación, 3.3V y 5V Almacenamiento de hasta 16GB

Son tarjetas que actualmente están siendo muy utilizadas, tanto en computadores portátiles como en cámaras de vídeo, por lo que su uso está muy extendido y el precio es relativamente bajo.

Tarjeta SmartMedia

La tarjeta SmartMedia (Imagen 2.27) lanzada en el verano de 1995 creada por Toshiba, originalmente llamada Solid State Floppy Disk Card (SSFDC). Se utilizan en dispositivos de portátiles, sobre todo en cámaras de fotos, pero Actualmente su uso está poco extendido. Fue respaldada por Fuji y Olympus, pero ambas la han sustituido, Fuji se ha pasado a xD y Olympus a Secure Digital.

Imagen 2.27 Tarjeta SmartMedia

Sus características son:

Tamaño reducido (45.0×37.0×0.76mm) Capacidad limitada (hasta 256MB) Terminales planos con 22 pins. Interfaz entrada/salida de 8 bits Dos versiones, a 3.3V y 5V Tasa de transferencia de 2MB/s

Aunque este tipo de tarjetas aún se siguen fabricando por Toshiba y Samsung están en claro retroceso y es previsible que en poco tiempo desaparezcan.

Tarjeta Memory Stick

La tarjeta Memory Stick (Imagen 2.28) fue lanzada por Sony en octubre de 1998, describe una familia de tarjetas:

39

Page 40: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Original Memory Stick■ Memory Stick■ Memory Stick Select■ Memory Stick MagicGate■ Memory Stick Select MagicGate

Memory Stick Pro■ Memory Stick Pro■ Memory Stick Pro High-Speed

Memory Stick Duo■ Memory Stick Duo■ Memory Stick Duo MagicGate■ Memory Stick Duo Adapter

Memory Stick Pro Duo■ Memory Stick Pro Duo■ Memory Stick Pro Duo High Speed

Memory Stick Micro Memory Stick Pro-HG

Imagen 2.28 Tarjeta Memory Stick Pro Duo MagicGate

Se utilizan en todo tipo de dispositivos portátiles, con capacidades de hasta 8GB. Se trata de un formato propietario, por lo que Sony monopoliza este tipo de productos. Cada tipo de memoria posee unas características, según las necesidades del dispositivo, como pueden ser mayor capacidad o mayor velocidad de transferencia (en Memory Stick Pro hasta 20 MB/s). Las tarjetas MagicGate poseen además un sistema de encriptación, pensado para el mundo discográfico, de forma que solo puedan ser leídas por dispositivos autorizados. En cuanto a su interfaz, Memory Stick usa un conector de tan solo 10 pines.

Debido a ser una tarjeta usada casi exclusivamente por Sony, y la necesidad de cumplir con una licencia hace complicado el diseño de dispositivos que utilicen este tipo de tarjetas.

Tarjeta xD-Picture

El formato xD-Picture (Imagen 2.29) fue introducido en Julio de 2002 por Olympus y Fujifilm para ser usadas en sus cámaras fotográficas digitales. Está pensada para que sea utilizada exclusivamente en cámaras digitales, y hasta el momento se usa exclusivamente en cámaras Olympus y Fuji. Existen además, nuevos modelos de tarjeta, llamados ‘Tipo M’ y ‘Tipo H’ que no son compatibles con el formato anterior y presentan una capacidad de hasta 8GB.

40

Page 41: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 2.29 Tarjeta xD-Picture

Las características de esta tarjeta son:

Reducido tamaño (20x25x1.7mm) Tasas de transferencia de hasta 5MB/s Capacidad de hasta 8GB en xD-Picture Tipo M Uso exclusivo en cámaras digitales

Tarjetas Multimedia Card (MMC)

Desarrolladas por SanDisk y Siemens AG en 1995, las tarjetas MMC (Imagen2.30) han sido utilizadas en una gran variedad de dispositivos portátiles, destacan por su reducido tamaño (24 x 32x 1.5mm). Una característica muy importante es su compatibilidad con las tarjetas Secure Digital, de hecho estas últimas aparecieron a partir de las especificaciones de la MMC.

Imagen 2.30 Tarjeta Multimedia Card

Las características principales de estas memorias son:

Reducido tamaño (24 x 32x 1.5mm) Tasas de transferencia de hasta 52MB/s (Especificaciones v4) Capacidad de hasta 8GB Diferentes modos de bus: 1, 4 y 8 bits Rango de voltaje de 1.65V a 3.6V (según versiones) Posibilidad de protección por contraseña Uso de protocolo MMC y SPI (para compatibilidad con SD)

Existen gran cantidad de variantes de la multimedia card, como secureMMC, RS-MMC, MMCmicro, MMCmobile y MMCplus. Dependientes todas de Multimedia Card Association. Además, a partir de ella se desarrolló la tarjeta secure digital, con sus correspondientes variantes. El número de pines va desde los 7 de la multimedia card original hasta los 14 de la tarjeta MMCplus.

41

Page 42: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Tarjeta Secure Digial

En 1999 Matsushita Electric, SanDisk y Toshiba anunciaron un acuerdo de colaboración para desarrollar tarjetas de memoria con un sistema de protección del copyright para la industria discográfica. En 2000 anunciaron el nuevo estándar de tarjeta de memoria que partía del estándar de la ya existente MMC y era compatible con esta. Secure Digital está cubierto por una gran cantidad de patentes y marcas registradas y sólo se puede licenciar a través de la Secure Digital Card Association, es necesario licencia para el desarrollo de tarjetas y del host (excluyendo la comunicación SPI compatible con MMC). Existen tres versiones publicadas del estándar de SD y varios formatos que han aparecido a partir de ella: miniSD y microSD también llamada Transflash. En la Imagen2.31 puede verse una comparación de los distintos formatos.

Imagen 2.31 Tarjetas SD, MiniSD y MicroSD

Las características principales de estas memorias son:

Tamaño compatible con MMC (son solo algo más gruesas) Tasas de transferencia de hasta 200 Mbit/s Capacidad con especificaciones SDHC 8GB (hasta el momento) Diferentes modos de bus: 1 y 4 bits Rango de voltaje de 1.65V a 3.6V (según versiones) Protección de contenidos DRM (digital rights management). Uso de protocolo SD y SPI (para compatibilidad con MMC)

2.5 El interfaz de comunicación USB

Existen varios interfaces de comunicación usados en la actualidad para la comunicación entre un periférico y un ordenador. Los interfaces de comunicación más comunes en un ordenador son:

Puerto serie (RS-232) Puerto paralelo (Centronics) USB Firewire SCSI Bluetooth

42

Page 43: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

En capítulos posteriores de discutirá el por qué de la elección del interfaz USB, podemos resumir que la elección se debe a que todos los ordenadores actuales poseen dicho interfaz, a la necesidad de velocidad en las comunicaciones y por ser el más utilizado por los periféricos actuales.

A continuación se realiza una exposición de las características y una pequeña introducción al funcionamiento del interfaz USB.

2.5.1 Orígenes del USB

El USB o Universal Serial Bus (bus serie universal) es un estándar de interfaz de comunicaciones entre dispositivos. Fue desarrollado en 1996 por IBM, Intel, Northern Telecom, Compaq, Microsoft, Digital Equipment Corporation y NEC. La versión 1.1 salió en septiembre de 1998 añadiendo un nuevo tipo de transferencia, interrupt Out. Las especificaciones del USB 2.0 fueron liberadas en abril de 2000 y estandarizadas por el USB-IF14 en 2001. La principal característica de USB 2.0 es que añade la opción de una nueva velocidad de transferencia, la High Speed, manteniendo la compatibilidad con las versiones anteriores.

En la actualidad la última versión es el USB 2.0 con diversas revisiones, como el soporte de USB On-the-Go que permite que un dispositivo pueda actuar como maestro o como esclavo, y nuevos conectores, el último es el MicroUSB (Imagen 2.32) cuyas especificaciones fueron liberadas en abril de 2007.

Imagen 2.32 Terminales MicroUSB A y MicroUSB B

2.5.2 Características del USB

Los objetivos que se buscaban durante el diseño del USB fueron la facilidad de uso, transferencias de datos rápidas y fiables, flexibilidad, bajo coste y ahorro de energía. El resultado de dicho desarrollo resultó en un interfaz con las siguientes características:

Un interfaz para múltiples dispositivos, el interfaz USB es muy versátil y se puede utilizar para gran variedad de dispositivos con características diferentes.

Configuración automática, cuando un periférico se conecta al ordenador

14 USB Implementers Forum, es una organización sin ánimo de lucro formada por varias empresas que promueve el uso del USB.

43

Page 44: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

mediante USB el sistema operativo lo detecta y carga los drivers apropiados. Fácil conexión, no es necesario abrir el ordenador para conectar un periférico,

las conexiones son externas. Cables sencillos, no se puede conectar mal el conector USB y su cable puede

ser de hasta 5 metros de largo. Si se utilizan concentradores puede haber hasta 30 metros entre el periférico y el ordenador.

Conexiones en caliente, no es necesario apagar el equipo para conectar el periférico.

Sin ajustes del usuario, el usuario no necesita configurar puertos ni interrupciones (IRQ)

No se necesitan fuentes de energía, el interfaz proporciona una alimentación de 5V y corriente de hasta 500ma.

Además de estas características de facilidad de uso, el USB posee otras prestaciones que lo hacen ser el más utilizado en los periféricos actuales. En la Tabla 2.2 se comparan los interfaces más populares.

Velocidad

Permite una transmisión de datos de alta velocidad, en concreto soporta tres velocidades: low speed a 1,5 Mb/s, full speed a 12 Mb/s y high speed a 480 Mb/s. No obstante el bus debe transmitir más datos además de los usados por el periférico como datos de control, estado y chequeo de errores. Esto hace que el caudal efectivo para la transmisión de datos sea algo menor, en concreto la velocidad máxima teórica sería aproximadamente: 424 Mb/s para high speed, 9,6 Mb/s para full speed y 6,4 Kb/s para low speed [Axelson05].

Fiabilidad

La fiabilidad se debe a dos elementos, el hardware y los protocolos de transmisión. Los controladores, receptores y cables están diseñados para eliminar la mayor cantidad de ruido que causa errores en los datos. Además, el protocolo de transmisiones puede detectar posibles errores en los datos y notificarlo para su retransmisión. Esto se hace a nivel de hardware y no requiere programación ni intervención del usuario.

Bajo coste

A pesar de una mayor complejidad del USB que la de los interfaces anteriores, tanto los componentes como los cables son baratos. Un dispositivo con interfaz USB cuesta casi lo mismo o menos que uno equivalente con un interfaz más antiguo.

Bajo consumo

El código y circuitos de ahorro de energía pueden apagar automáticamente un periférico USB cuando no se está utilizando.

44

Page 45: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Comunicaciones sin cables

El USB fue originalmente un interfaz cableado, pero existen diversas opciones actuales para que dispositivos sin cables se puedan comunicar con el ordenador mediante USB.

Interfaz Formato Nº de dispositivos (Máximos)

Distancia (Máximo, metros)

Velocidad (Máxima, bps)

Uso común

USB Serie, asíncrona

127 5 (hasta 29 m) 1.5M, 12M, 480M Ratón, teclado, HD, audio, impresora, otros periféricos

Ethernet Serie 1024 488 m 10G Red de comunicaciones

IEEE-1394b (FireWire 800)

Serie 64 91 m 3.2G Vídeo y sistemas de almacenamiento

IEEE-488 (GPIB)

Paralelo 15 18 m 8M Instrumentación

IrDA Serie infrarrojos, asíncrona

2 2 m 16M Impresoras y PDAs

I2C Serie, síncrona 40 5.5 m 3.4M Comunicación de microcontroladores

Microwire Serie, síncrona 8 3 m 2M Comunicación de microcontroladores

MIDI Bucle de corriente

2 15 m 31.5k Música

Puerto paralelo

Paralelo 2 (8 con daisy-chain)

3-9 m 8M Impresoras, escáneres, unidades

de disco.

RS-232 Serie, asíncrona

2 15-30 m 20k - 115k Módem, ratón e instrumentación

RS-485 Serie, asíncrona

32 1220 m 10M Adquisición de datos y control de

sistemas

SPI Serie, sincrona 8 3 m 2.1M Comunicación de microcontroladores.

Tabla 2.2 Comparación de los interfaces más populares [Axelson05]

45

Page 46: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

2.5.3 Topología

La topología del bus es una estrella con niveles, en el centro de cada estrella hay un concentrador y cada punto de la estrella es un dispositivo que se conecta a un puerto en el concentrador, como se observa en la Imagen 2.33. El número de puntos en cada estrella puede variar, un concentrador tiene normalmente 2, 4 o 7 puertos. El USB permite hasta 6 niveles, y en el nivel 0 (Raíz o Root) se encuentra el Controlador USB que controla todo el tráfico de información en el bus. Solo un dispositivo puede comunicarse con el controlador del host a la vez, por lo que se suelen tener varios controladores de host para incrementar el ancho de banda disponible.

Imagen 2.33 Topología USB [Axelson05]

2.5.5 Nivel físico

A nivel físico, el USB utiliza un cable de 4 conductores para transmitir una señal diferencial (D+ y D-) y alimentación (VBus = 5V y GND) por medio de conexiones punto a punto. Los dispositivos low speed van obligatoriamente equipados con un cable de longitud adecuada (hasta unos 3 m, dependiendo de sus características eléctricas) (Imagen2.34), mientras que los full speed pueden ir equipados con un cable o utilizar cables independientes de hasta 5 m (también dependiendo de sus características eléctricas) (Imagen 2.35).

46

Page 47: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 2.34 Cable para low speed[Anderson01] Imagen 2.35 Cable para full y high speed[Anderson01]

La comunicación es bidireccional y utiliza codificación autoreloj NRZI (la línea cambia de nivel si se transmite un 0 y no cambia si transmite un 1) con "bit stuffing" (inserción de un cero tras la transmisión de 6 unos, para asegurar transiciones en la línea). Los dispositivos disponen de un transmisor diferencial, receptores diferencial y I/O y resistencias de terminación con los que pueden transmitir y detectar varios estados eléctricos distintos en la línea [Fujitsu00]:

Transmisión/Recepción diferencial de bits: Estados DIFF0 y DIFF1, denominados también estados J y K.

SE0 (Single-Ended 0): Ambas señales D+ y D- a 0V. Se utiliza para detectar la conexión/desconexión de dispositivos, para indicar el EOP (fin de paquete) y para generar reset.

IDLE: reposo o línea en alta impedancia, necesario para permitir transferencias semi-dúplex, detectar la conexión y desconexión de dispositivos y discriminar entre dispositivos FS y LS.■ El SOP (principio de paquete) se indica mediante una transición IDLE a K.■ El EOP (fin de paquete) se indica mediante una secuencia SE0 (2 bits) + J

(1 bit) + IDLE.

2.5.6 Protocolo

El protocolo de nivel físico se basa en tokens (testigos). El controlador USB transmite tokens que incluyen la dirección del dispositivo destino, y el dispositivo que detecta su dirección en el token responde y lleva a cabo la transferencia de datos con el controlador. De esta manera, el Controlador USB maneja la parte más compleja del protocolo, generando los tokens de transferencias de datos a 480 Mbps, 12 Mbps o a 1,5 Mbps, y controlando la conexión lógica entre el sistema y las funciones internas de cada dispositivo. El controlador USB también maneja el consumo en el bus a través de las funciones Suspender/Continuar, por medio de las cuales controla los modos Reposo/Activo de los dispositivos. Esta arquitectura permite el diseño de dispositivos extremadamente simples y de bajo coste.

USB divide el tiempo en espacios de 1 ms denominados marcos, durante las cuales se llevan a cabo las comunicaciones a través de Transacciones, las cuales se componen a su vez de Paquetes. Existen tres tipos de paquetes: Token, Dato y Validación (Handshake):

47

Page 48: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

El paquete Token contiene los campos:■ PID (identifica el tipo de paquete). Todos los PIDs van protegidos por bits

redundantes,■ Dirección del elemento destino (7 bits de dispositivo + 4 bits de elemento

interno al dispositivo), y■ CRC.

Cada paquete del tipo Dato se compone de los campos: PID, Datos, y CRC. Al final de la transacción se envía un paquete de Validación indicando que no

ha habido errores.

Adicionalmente, el Controlador USB indica el principio de cada Trama y la transmisión hacia dispositivos low speed mediante tokens especiales [Fujitsu00].

2.5.7 Tipos de transferencias en USB 2.0

El interfaz USB fue diseñado para ser usado por una gran cantidad de periféricos distintos con distintos requerimientos en cuanto a tasa de transferencia, tiempo de respuesta y corrección de errores. Por tanto se han definido cuatro tipos de transferencia (Tabla 2.3) para dar servicio a las diferentes necesidades que puedan tener los periféricos. Los tipos de transferencia son:

Control

Las transferencias de control son las únicas de tienen funciones definidas en las especificaciones USB. Las transferencias de control permiten al host15 leer información sobre el dispositivo, fijar su dirección y seleccionar otras configuraciones y opciones. Todos los dispositivos USB deben soportar las transferencias de control.

Masiva

Las transferencias masivas se utilizan cuando la tasa de transferencia no es crucial, como enviar un fichero a la impresora, recibir datos de un escaner o acceder a ficheros en un disco. Para este tipo de transferencias tener una rápida tasa de transferencia es bueno, pero se puede esperar si es necesario en el caso de que el bus esté ocupado. Si el bus está libre las transferencias masivas son muy rápidas. Solo los dispositivos full y high speed pueden realizar este tipo de transferencias

Interrupción

Las transferencias de interrupción son para aquellos dispositivos que necesitan la atención del host periódicamente. Este tipo de transferencia solo están en los dispositivos low speed. Se usa para teclados, ratones, etc.

15 Dispositivo maestro que inicia la comunicación, generalmente el ordenador.

48

Page 49: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Isócrona

Las transferencias isócronas tienen garantizado el tiempo de entrega de los datos pero no la corrección de errores. Se utiliza para la transmisión de vídeo y audio en tiempo real. Esta transferencia es la única que no soporta retransmisión automática de los datos recibidos con errores ya que errores ocasionales son aceptables. Solo los dispositivos full speed y high speed tienen este tipo de transferencia.

Tipo de transferencia Control Masiva Interrupción Isócrona

Uso común Identificación y configuración

Impresoras, escaneres y

discos

Ratones, teclados

Flujo de audio y vídeo

Necesario Si No No No

Permite baja velocidad Si No Si No

Bytes/milisegundos de datos por transferencia. Máximo posible por tubería (high speed)*

15.872 53.248 24.576 24.576

Bytes/milisegundos de datos por transferencia. Máximo posible por tubería (low speed)*

832 2116 64 1023

Bytes/milisegundos de datos por transferencia. Máximo posible por tubería (low speed)*

24 No permitida 0,8 No permitida

Dirección del flujo de datos Entrada y salida Entrada o salida Entrada o salida (USB 1.0 solo

entrada)

Entrada o salida

Ancho de banda reservado para todas las transferencias del tipo

10% en low/full speed, 20% en

high speed

Ninguno 90% en low/full speed, 80% en high speed (combinando isócrona e

interrupción)

Corrección de errores Si Si Si No

Mensajes o flujos de datos Mensaje Flujo Flujo Flujo

Tiempo de entrega garantizado No No No Si

Latencia garantizada (máximo tiempo entre transferencias)

No No Si Si

*Asume que las transferencias utilizan el tamaño máximo de paquete.Tabla 2.3 Comparación de los tipos de transferencia [Axelson05]

49

Page 50: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

2.6 Microcontroladores.

2.6.1 Definición y características

Un controlador el dispositivo que se emplea para gobernar de uno o varios procesos. Aunque el concepto de controlador ha permanecido invariable a través del tiempo, su implementación física ha variado frecuentemente. Inicialmente los controladores se construían exclusivamente con componentes de lógica discreta, posteriormente se emplearon los microprocesadores, que se rodeaban con chips de memoria y unidades de E/S sobre una tarjeta de circuito impreso. Actualmente todos los elementos del controlador se han podido incluir en un circuito integrado que recibe el nombre de microcontrolador.

El microcontrolador es un circuito integrado que incorpora la mayor parte de los elementos que configuran un controlador. Aunque sus prestaciones son limitadas, además de dicha integración, su característica principal es su alto nivel de especialización. Un microcontrolador dispone normalmente de los siguientes componentes:

Procesador o CPU (Unidad Central de Proceso). Memoria RAM para Contener los datos. Memoria ROM/PROM/EPROM para almacenar el programa. Diversos módulos para el control de periféricos :

■ Temporizadores■ Interfaces UART, SPI, I2C, USB, etc.■ Conversores Analógico/Digital y Digital/Analógico■ Watchdog■ Comparadores analógicos■ Modulador de anchura de pulsos PWM■ Puertas de E/S digitales de propósito general

Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema, aunque muchos utilizan un reloj externo.

Las principales ventajas que se pueden encontrar con el uso de microcontroladores son:

Gestión eficiente de procesos. Aumento de fiabilidad. Reducción del tamaño, consumo y coste. Mayor flexibilidad.

Existe una gran diversidad de microcontroladores, la clasificación más importante que se puede realizar es según sean de 4, 8, 16 o 32 bits. Los microcontroladores más utilizados hoy en día son los de 8 bits ya que son apropiados para la mayoría de aplicaciones. No obstante los microcontroladores de 16 y 32 bits van ganando terreno a medida que las aplicaciones se van haciendo más complejas.

50

Page 51: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

2.6.2 Selección del microcontrolador

A la hora de escoger el microcontrolador a emplear en un diseño concreto hay que tener en cuenta multitud de factores, como la documentación y herramientas de desarrollo disponibles y su precio, la cantidad de fabricantes que lo producen y por supuesto las características del microcontrolador (tipo de memoria de programa, número de temporizadores, interrupciones, etc.)

Las características principales a tener en cuenta en la elección de un microcontrolador son:

Procesamiento de datos: puede ser necesario que el microcontrolador realice cálculos críticos en un tiempo limitado. En ese caso debemos asegurarnos de seleccionar un dispositivo suficientemente rápido para ello. Por otro lado, habrá que tener en cuenta la precisión de los datos a manejar: si no es suficiente con un microcontrolador de 8 bits, puede ser necesario acudir a microcontroladores de 16 ó 32 bits.

Entrada Salida: Realizar un análisis de las líneas requeridas de entrada/salida. Consumo: muchas aplicaciones utilizan baterías y un consumo bajo es un factor

muy importante. Memoria: debemos realizar una estimación de la cantidad de memoria, tanto de

RAM como ROM, necesaria para nuestra aplicación. Ancho de palabra: se debe seleccionar el microcontrolador de menor ancho de

palabra que satisfaga los requerimientos de la aplicación. Usar un microcontrolador de 4 bits supondrá una reducción en los costes importante, mientras que uno de 8 bits puede ser el más adecuado si el ancho de los datos es de un byte. Los microcontroladores de 16 y 32 bits, debido a su elevado coste, deben reservarse para aplicaciones que requieran sus altas prestaciones.

Diseño de la placa: la selección de un microcontrolador concreto condicionará el diseño de la placa de circuitos. Debe tenerse en cuenta que quizá usar un microcontrolador barato encarezca el resto de componentes del diseño.

2.6.3 Aplicaciones

Cada vez existen más productos que incorporan un microcontrolador con el fin de aumentar sustancialmente sus prestaciones, reducir su tamaño y coste, mejorar su fiabilidad y disminuir el consumo. Los microcontroladores están siendo empleados en multitud de sistemas presentes en nuestra vida diaria, como pueden ser juguetes, hornos microondas, frigoríficos, televisores, ordenadores, impresoras, módems, el sistema de arranque de nuestro coche, etc. Y otras aplicaciones algo menos comunes como instrumentación electrónica, control de sistemas en una nave espacial, etc. Una aplicación típica podría emplear varios microcontroladores para controlar pequeñas partes del sistema. Estos pequeños controladores podrían comunicarse entre ellos y con un procesador central, probablemente más potente, para compartir la información y coordinar sus acciones [Aguayo04].

51

Page 52: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

3. Diseño y desarrollo del hardware

3.1 Introducción

Una de las partes más importantes en la creación de un periférico es el diseño del hardware ya que condiciona el desarrollo del firmware, las características finales del dispositivo y su coste. Primero se va ha realizar una selección de componentes y de las herramientas utilizadas para el diseño, la creación y el testeo del hardware. Una vez seleccionados los componentes principales se realiza una exposición del diseño del dispositivo dividido en módulos más simples. Al final se explican los problemas surgidos durante la implementación del dispositivo y las modificaciones realizadas al diseño final.

3.2 Selección de componentes

Como se ha dicho una de las partes más importantes en la creación de un periférico es el diseño del hardware, y en este diseño la primera tarea es la selección de unos componentes adecuados. En esta selección de componentes se van a tener diversos factores en cuenta:

Cumplir los requisitos para la realización de la aplicación que se quiere diseñar es el primer y más importante factor a tener en cuenta.

Simplicidad, una vez seleccionados aquellos elementos componentes que cumplan los requisitos se han de seleccionar aquellos que posean una mayor simplicidad, ya que complejidad extra no aporta nada. En cuanto a la simplicidad los elementos que se evalúan son:■ Protocolos de comunicación simples.■ Mínimo número de componentes, tanto de circuitos integrados como de

elementos pasivos.■ Encapsulados de fácil soldadura, ya que la soldadura se realizará a mano.

Fáciles de conseguir y económicos, se descartarán aquellos componentes que sean de muy difícil obtención.

Lo primero por tanto será recordar los requisitos del reproductor y ver como afectan al diseño. Debe ser un reproductor alimentado por pilas, capaz de reproducir MP3 y con conexión al ordenador suficientemente rápida como para que pueda reproducir un fichero enviado en tiempo real (en nuestro caso hemos elegido el USB que además permite la carga de pilas), debe almacenar los ficheros en un tarjeta de memoria y mostrar los datos en una pantalla. Por tanto el dispositivo se compondrá de:

Un microcontrolador para gobernarlo. Un integrado que se encargue de decodificar el MP3. Con conversor D/A y, si es necesario, un pequeño amplificador para la salida de

audio. Un integrado que se encargue de la comunicación USB si el microcontrolador

no incorpora este interfaz. Una tarjeta de memoria, donde se almacenarán los ficheros.

52

Page 53: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Una pantalla LCD para mostrar los datos. Un regulador de tensión para alimentar al circuito a partir de las pilas.

3.2.1 El microcontrolador

Lo primero que se ha de realizar es seleccionar entre un microcontrolador de 8, 16 o 32 bits (los de 4 parecen claramente insuficientes). Como debemos seleccionar aquel más simple que cumpla con los requisitos se decide usar uno de 8 bits, ya que tienen unas prestaciones suficientes para implementar el control del reproductor. El microcontrolador será el responsable de leer los ficheros de la tarjeta de memoria, enviar el flujo de datos al chip decodificador de MP3, de la comunicación con el ordenador, de controlar la botonera y de refrescar los datos en la pantalla LCD.

Los principales microcontroladores que se han considerado son la familia ATMega de Atmel , PIC de Microchip y Motorola. Los pros y contras que se han encontrado para cada uno son:

Los microcontroladores PIC de microchip soportan un amplio rango de voltajes, son rápidos pero algo menos que los más rápidos de Atmel o Motorola, son económicos y fáciles de conseguir, poseen gran variedad de interfaces de comunicación, como el SPI, utilizado en algunas tarjetas de memoria. Además su lenguaje ensamblador me es conocido y existe gran cantidad de documentación disponible.

Los microcontroladores Motorola también son rápidos y poseen gran variedad de interfaces, pero no son tan económicos y fáciles de conseguir como los PIC de Microchip, no tienen un rango de voltajes tan flexible y no existe tanta documentación, ejemplos y herramientas como en los PIC o los microcontroladores Atmel.

Los ATMega de Atmel son rápidos, poseen gran variedad de interfaces, un amplio rango de voltajes, gran cantidad de RAM, son económicos y fáciles de conseguir.

Tanto los microcontroladores PIC como los ATMega parecen los más apropiados. Los ATMega son algo más potentes y poseen mayor cantidad de ROM y RAM, pero los PIC poseen un lenguaje ensamblador y arquitectura conocida, ya que se han estudiado y utilizado durante la carrera, ello disminuye en gran medida el coste de aprendizaje por lo que finalmente se selecciona este tipo de microcontrolador.

Los requisitos para el microcontrolador son:

Al menos 16 KB de memoria Flash para el código de programa. Al menos 1KB de memoria RAM, es necesaria al menos esa cantidad de

memoria ya que las lecturas y escrituras de tarjetas de memoria suelen ser en bloques de 512 bytes.

Poseer memoria EEPROM para almacenar información no volátil como el volumen actual. Como la cantidad de datos a guardar es muy baja son suficientes unos pocos bytes.

Poseer suficientes líneas de entrada/salida para la conexión de todos los elementos del dispositivo, esto dependerá del resto de elementos seleccionado.

53

Page 54: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Entre los microcontroladores PIC de 8 bits podemos encontrar cuatro familias principales, las PIC10, PIC12, PIC16 y PIC18. Tan sólo los microcontroladores de la familia PIC18 poseen los requisitos necesarios, ya que ninguno de los microcontroladores del resto de las familias poseen la suficiente memoria Flash y RAM.

El microcontrolador elegido ha sido el 18F45216 ya que es uno de los más potentes de la familia PIC18 y los microcontroladores PIC con bus USB incorporado no están disponibles con memoria Flash17. En la Tabla 3.1 puede verse una comparativa de las características de la familia 18Fxx2. El microcontrolador 18F452 en cuestión tiene las siguientes características:

32kB de memoria Flash para el código del programa. 1536 Bytes de memoria RAM. 256 Bytes de memoria EEPROM. Frecuencia de reloj de hasta 40MHz (10 MIPS) usando multiplicador de reloj. Multiplicación por hardware en un único ciclo de instrucción. 3 líneas de interrupción. 34 líneas de entrada/salida. 4 temporizadores/contadores, con diferentes características como ser de 8 o 16

bits, tener preescalador, etc. 2 módulos CCP (Capturador/Comparador/PWM18) Modulo MSSP (Puerto serie maestro síncrono) con dos modos de operación:

■ Como puerto SPI (soporta los 4 modos SPI)■ Como puerto I2C (modo maestro y esclavo)

Modulo USART (Transmisor-Receptor asíncrono universal) Modulo PSP (puerto paralelo esclavo) Conversor analógico/digital de 10 bits. Otras características como: Watchdog Timer (WDT), Brown-out Reset (BOR),

Power-on Reset (POR), Power-up Timer (PWRT), Oscillator Start-up Timer (OST), ICSP, etc.

16 Actualmente para nuevos diseños Microchip recomienda usar el PIC 18F4520.17 Actualmente hay microcontroladores PIC con interfaz USB y memoria Flash, pero no había en el

momento de la elección de componentes de este proyecto.18 Modulador de anchura de pulsos.

54

Page 55: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Tabla 3.1 Características de la familia 18Fxx2

En concreto se va a usar el PIC 18LF452 que es la versión de bajo voltaje ya que, como se verá posteriormente, se va a utilizar un voltaje de 3,3 V para alimentarlo debido a las necesidades del resto de componentes. En cuanto a la frecuencia del reloj se utilizará la más baja posible que sea suficiente para el funcionamiento correcto del dispositivo, después de realizar varias pruebas se ha decidido utilizar una frecuencia de 20 Mhz, además no se deben usar frecuencias mayores con voltajes tan bajos, pese a ser la versión de bajo voltaje. En cuanto al encapsulado se decide utilizar el encapsulado DIP ya que es más adecuado para prototipos al no necesitar estar soldado pudiendo ser sustituidos fácilmente, y sus adaptadores son económicos y fáciles de encontrar.

3.2.2 El módulo USB

Como se ha indicado en el apartado anterior el microcontrolador no posee un interfaz USB por lo que necesitamos un integrado que proporcione esta funcionalidad. Las características de este integrado deben ser:

Interfaz sencillo para facilitar la comunicación con el microcontrolador Mínimo número de componentes externos. Que sea un componente fácil de conseguir. Ha de poseer drivers para windows y a ser posible para otros sistemas

operativos, con ejemplos de su utilización.

Los integrados considerados para esta función han sido el PDIUSBD12D de Philips y de FTDI Chip los integrados FT232MB y FT245MB, todos compatibles con USB 2.0. Las características de cada uno se pueden ver en la tabla comparativa 3.2.

55

Page 56: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

PDIUSBD12D FT232BM FT245BM

Comunicación con el microcontrolador

Paralelo (8 bits) Serie (RS-232) Paralelo (8 Bits)

Número de pines 28 32 32

Velocidad de transferencia Max.con

el microcontrolador2 MB/s 1 Mbit/s 1 MB/s

Cantidad de componentes externos Baja Baja Baja

Obtención Relativamente difícil Fácil Fácil

Flexibilidad Alta (se pueden diseñar gran variedad de

dispositivos)

Baja Baja

Sistemas Operativos y Drives

Debes crear tus propios Drivers

Tiene diferentes drivers oficiales para varios sistemas operativos: Windows

(98/2000/ME/XP/Vista...), Linux y MAC OS (8/9/X)

Complejidad de utilización

Alta Baja Baja

Cantidad de documentación y ejemplos de uso

Baja Alta Alta

Módulo para prototipos

No Si Si

Tabla 3.2 Comparación de diferentes integrados para el interfaz USB

El integrado PDIUSBD12D tiene la ventaja de ser más flexible que los de FTDI, pudiéndose realizar casi cualquier tipo de clase de dispositivo e implementando el driver a medida. Por contra es mucho más complicado de utilizar y la necesidad de implementación de drivers propios hace mucho más costosa la realización del dispositivo. Los integrados de FTDI son mucho más simples y cómodos de usar pero menos flexibles, sin embargo para el diseño de este dispositivo es suficiente, no compensando la flexibilidad que aporta el integrado de Philips su complejidad.

Por tanto queda elegir entre los dos integrados de FTDI. Ambos son muy similares entre sí, su principal diferencia es el interfaz de comunicación con el microcontrolador, uno serie y el otro paralelo, siendo más rápido este último. La mayor rapidez en las transferencias del integrado con interfaz paralelo (FT245BM) y la mayor facilidad de uso con respecto al desarrollado por Philips hacen que sea el elegido para usarse en este dispositivo.

Cabe destacar otra importante característica de los modelos de FTDI, ambos cuentan con módulos para el desarrollo de prototipos de forma más rápida sin necesidad de preocuparse de los componentes externos necesarios ni de la soldadura del integrado (bastante compleja de realizar a mano), ya que todo está montado en un pequeño circuito en formato DIP. En concreto se va a utilizar el modulo DLP-USB245M-G que monta el integrado FT245BM, puede verse en la Imagen 3.3.

56

Page 57: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.3 Módulo DLP-USB245M-G

3.2.3 La tarjeta de memoria

Para almacenar los ficheros en formato MP3 se va a utilizar una tarjeta de memoria, que el microcontrolador se encargará de leer y enviar los datos al chip decodificador de MP3. En el capítulo anterior se mostraban las características de las principales tarjetas de memoria del mercado, de entre ellas las más utilizadas hoy en día y por tanto las que se van a considerar son las tarjetas: Compact Flash, Multimedia Card (MMC) y Secure Digital (SD). En la Tabla 3.4 podemos ver una comparativa de algunas características de estos tres tipos de tarjetas.

Compact Flash Multimedia Card Secure Digital

Número de pines 50 7 9

Tamaño bus de datos 16 bits 1 bit 1 o 4 bits

Velocidad de transferencia

56 MBytes/s 20 Mbits/s 200 Mbit/s

Modo SPI No Opcional Si

Licencia para hacer un dispositivo

No No Si

Alimentación 3,3 – 5 V 2,7 – 3,6 V 2,7 – 3,6 V Tabla 3.4 Comparación de tarjetas de memoria

La desventaja principal de las tarjetas Compact Flash frente a los otros dos tipos es el elevado número de pines, ya que el número de puertas de entrada/salida del microcontrolador es limitado. Por contra tanto las tarjetas MMC como SD tienen un número de pines muy reducido y la posibilidad de acceder mediante el protocolo SPI, que está implementado por hardware en el microcontrolador. Además, las tarjetas MMC y SD son compatibles entre sí, tanto física como eléctricamente, por tanto un dispositivo que utilice el modo SPI en una tarjeta MMC podrá utilizar tarjetas SD y viceversa.

Debido a que es necesario el pago de una licencia para implementar un dispositivo que utilice tarjetas SD (al menos si usan el protocolo SD) en este proyecto se utilizará como medio de almacenamiento tarjetas MMC que incorporen el modo SPI (actualmente todas las tarjetas que se comercializan incorporan este modo de acceso). Además, en el reproductor se podrá utilizar tarjetas SD y, mediante adaptadores, tarjetas RS-MMC, MMCmicro, miniSD y microSD.

57

Page 58: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

3.2.4 El chip decodificador de MP3

Para la reproducción del audio en formato MP3 es necesario un chip que decodifique los datos MP3, un conversor digital/analógico y un pequeño amplificador para que la señal analógica pueda escucharse en unos auriculares. Los chips decodificadores candidatos analizados son: STA013 de ST Microelectronics, VS1001K de VLSI Solutions y MAS3507D de Micronas. En la Tabla 3.5 se puede ver una comparación de estos decodificadores.

STA013 VS1001K MAS3507D

Número de pines 28 28 44

Necesita inicialización Si No No

Información disponible Poca Mucha Poca

Incluye conversor A/D No Si No

Tensión de alimentación 2,1-3,6v 2,8-3,6v 2,85-3,6v

Comunicación I2C SPI I2CTabla 3.5 Comparación de decodificadores de MP3.

El decodificador STA013 tiene la principal desventaja en su inicialización, ya que es necesario el envío de un fichero de 2 kB cada vez que se inicia, lo que hace más compleja su utilización y el uso de 2 kB de memoria del microcontrolador es este fichero de inicialización. En cuanto a la información disponible para el diseño el VS1001K, además de disponer de las especificaciones, existen varias application notes y un buen soporte del fabricante (se pueden hacer consultas a los diseñadores en un foro) lo que hace el diseño de dispositivos más sencillo. Además, este decodificador no necesita un conversor analógico/digital externo, ya que lo incluye en el propio integrado, y con una señal de salida suficiente para ser usada directamente en unos auriculares. El decodificador MAS3507D tiene la desventaja de usar un encapsulado más difícil de soldar que el resto, menos información disponible y con la necesidad de un conversor A/D externo. Es por todo esto que se decide utilizar el decodificador VS1001K en este proyecto.

3.2.5 La pantalla LCD

Como interfaz de usuario se va a utilizar una botonera y una pantalla LCD en la que se le mostrará al usuario información sobre las música que está escuchando, así como también se facilitará la navegación por el árbol de directorios de la tarjeta de memoria.

Existen dos tipos principales de pantallas, las pantallas de caracteres y las pantallas gráficas. Las ventajas de las pantallas de caracteres son la facilidad para adquirirlas, utilizan un interfaz estándar19, existe mucha documentación sobre su uso e incluyen un mapa de caracteres interno, aunque también admiten caracteres definidos por el usuario. Las principales desventajas son el número de pines necesarios (14 funcionando en modo de 8 bits y 10 en modo 4 bits) y menos versatilidad que una pantalla gráfica.

19 Interfaz HD44780 desarrollado por Hitachi y utilizado por la mayoría de fabricantes.

58

Page 59: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

En cuanto a las pantallas gráficas, son normalmente mucho más caras que las de caracteres, más complejas de usar y necesitan el envío de todos los píxeles, aun cuando se desean mostrar caracteres. Sin embargo son mucho más versátiles que las de caracteres, pudiendo mostrar cualquier dibujo e icono junto al texto, diferentes tamaños y fuentes de texto, por lo que son más apropiadas para un interfaz de usuario donde se desea mostrar mucha información, sustituyendo parte de esta información por pequeños iconos. Afortunadamente se ha encontrado un LCD gráfico económico, muy fácil de adquirir, muy documentado y con un interfaz serie de tan solo 8 líneas que utiliza el bus SPI. Se trata de las pantallas utilizadas por Nokia en sus teléfonos móviles 3310 y 3210 que utilizan el controlador Philips PCD8544. En la Tabla 3.6 se puede comparar las características de la pantalla gráfica con controlador PCD8544 y una pantalla de caracteres de 20x4.

LCD 20x4 LCD gráfico PCD8544

Número de pines 14 (10 en modo 4 bits) 8

Mapa de caracteres Si No

Interfaz Estándar HD44780 Comunicación sencilla, acceso por SPI

Documentación Muy documentado Muy documentado

Tamaño 20x4 carácteres 84x48 píxeles, equivalente a 14x6 caracteres de tamaño 6x8

Tensión de alimentación 5 V 2.7-3.3 V

Facilidad de adquirir Muy fácil Fácil (como recambio de teléfono móvil)

Precio Económica EconómicaTabla 3.6 Comparativa de pantallas LCD

Finalmente se decide la utilización de la pantalla gráfica con el controlador Philips PCD8544, que puede verse en la Imagen 3.6, por la posibilidad de ofrecer mayor información en pantalla de forma más intuitiva (mediante iconos), por necesitar menos puertos de comunicación del microcontrolador, ser económica y estar suficientemente documentada.

Imagen 3.6 Pantalla LCD con controlador Philips PCD8544

59

Page 60: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

3.3 Programa, herramientas y metodología utilizada

Para el diseño, fabricación y testeo del dispositivo, en lo que al hardware se refiere, se han empleado una serie de programas y herramientas en cada uno de los procesos de creación, éstos son: diseño, implementación y testeo. En la Imagen 3.7 se puede ver un resumen de los materiales utilizados para cada una de las fases del desarrollo del hardware del reproductor.

Imagen 3.7 Materiales para realizar el hardware

3.3.1 Diseño

Para el diseño del esquemático y el trazado o layout del circuito impreso se ha utilizado el programa Eagle de CadSoft, se trata de un programa muy utilizado para el diseño de circuitos impresos y que posee una versión gratuita (con algunas limitaciones como el uso de como máximo dos capas y el uso no comercial de los diseños). Las principales ventajas de este programa son: su facilidad de uso, que muchos de los componentes utilizados ya se encuentran en su librería o en Internet y pueden ser importados, y que muchas compañías de fabricación de circuitos impresos admiten su formato directamente, sin necesidad de exportarlos a formato Gerber20. En la Imagen 3.8 se puede ver el proceso seguido para el diseño del circuito impreso.

20 Formato de fichero estándar usado para la fabricación de circuitos impresos que contiene información de patrones de pistas, vías, información corte, máscaras de soldadura, etc.

60

Page 61: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.8 Procesos para el diseño del circuito

El primer paso en el diseño del circuito impreso es la colocación en el diagrama esquemático de los componentes que van a ser utilizados y dibujar las conexiones entre ellos. Para una mejor comprensión del esquema en su conjunto se divide en diferentes módulos, de forma que las líneas de un módulo se interconectan con otro mediante etiquetas, para hacer más claro el sistema. Una vez finalizado el diseño del esquemático se realiza una comprobación de las conexiones mediante el sistema automático de comprobación de reglas eléctricas ERC (Electrical Rule Check).

Una vez que se ha comprobado que el esquemático está bien interconectado se pasa ha realizar el trazado del circuito impreso. Lo primero es la colocación de los componentes en el circuito, colocando cerca aquellos componentes que estén interconectados, teniendo especial importancia los condensadores de desacoplo y los cristales. Después se procede al enrutado del circuito, este paso se realiza tanto de forma manual como automática, realizando de forma manual aquellas líneas que se consideren más críticas o que no sean fácilmente enrutables por el sistema automático.

Finalmente se realiza una comprobación de las reglas de diseño o DCR (Design Rule Check), esto comprueba que no existan solapamientos y que se cumplan las especificaciones definidas para el circuito, como un mínimo grosor de pistas y vías, las distancias entre pistas y componentes, etc.

3.3.2 Fabricación

Se han realizado dos implementaciones del circuito, la primera fue realizada íntegramente de forma manual a partir de placas fotosensibles, y la segunda se encargó a una empresa que hizo la placa de circuito impreso, soldándose posteriormente a mano los componentes. Los motivo de realizar dos prototipos fueron algunos cambios en el diseño inicial, principalmente en el circuito de alimentación ya que no cumplía con las expectativas, y el deterioro por oxidación del prototipo inicial, que lo hizo muy inestable.

Para la fabricación de la placa del circuito impreso del primer prototipo se utilizó una placa fotosensible positiva de doble cara, hojas de transparencias usadas como fotolito, una insoladora realizada a partir de bombillas de bajo consumo, un 'revelador' consistente en una disolución de sosa cáustica y un 'atacador' a partir de peróxido de hidrógeno y ácido clorhídrico. El proceso es el siguiente:

61

Page 62: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

1. Se imprime el circuito en las transparencias, teniendo en cuenta su orientación.2. Se sujetan las transparencias (fotolitos) mediante cristales a la placa

fotosensibilizada en condiciones de baja iluminación, teniendo especial cuidado en la concordancia de las dos caras del circuito.

3. Se insola cada una de las caras de la placa aproximadamente 5 minutos mediante una insoladora realizada a partir de bombillas de bajo consumo y elevada potencia lumínica21. Para el cálculo del tiempo se deben realizar pruebas previamente, ya que el tiempo dependerá del fabricante de la placa y la cantidad de luz ultravioleta con que la que se insole.

4. Después de la insolación se realiza el revelado de la placa. Este proceso elimina la capa fotosensible de las zonas en las que la luz ha incidido. El revelador consiste en una disolución de sosa cáustica aproximadamente a un 1% y a unos 25ºC. A mayor concentración y temperatura más rápido será el revelado.

5. El siguiente paso es el atacado de la placa: existen dos tipos de atacado, rápido y lento. El lento consiste en una disolución de cloruro férrico, y el rápido, que es el que se ha utilizado, es una mezcla a partes iguales de agua, peróxido de hidrógeno al 33% (agua oxigenada de 110 volúmenes) y ácido clorhídrico (salfumán). La velocidad del atacado variará según la concentración de la mezcla y su temperatura22. El proceso de atacado elimina la capa de cobre no protegida por la pintura fotosensible.

6. Una vez atacada la placa se elimina la pintura fotosensible con acetona.7. El último paso es el mecanizado de la placa. Para ello se utiliza un minitaladro

y brocas de distinto tamaño con las que se realizaran cada una de las vías.

Para la soldadura de los componentes, tanto en la placa fabricada como en la encargada, se ha utilizado un soldador de 11W y punta muy fina, soldadura de estaño/plomo y flux para facilitar la soldadura. En el primer prototipo, fabricado mediante el proceso anteriormente descrito, es necesario también la conexión eléctrica de ambas caras a través de las vías, para lo que se usa el hilo de cobre de un cable fino que se pasará por la vía y se soldará en cada una de las caras.

3.3.3 Testeo

Para la comprobación de las conexiones eléctricas del circuito se utiliza un polímetro, con el que se comprueba la continuidad de todas las pistas, vías y soldaduras. Para la comprobación lógica y depuración se utiliza tanto el polímetro como un osciloscopio. En concreto se utiliza un osciloscopio digital con una frecuencia de muestreo de 50 MHz, suficiente para este diseño.

21 Son más económicas que los tubos y bombillas para insoladora, emiten menor cantidad de luz ultravioleta que éstas pero la suficiente como para realizar la insolación en pocos minutos.

22 Es de extrema importancia tomar precauciones cuando se trabaja con estos productos químicos, en especial con el peróxido de hidrógeno. Se deben utilizar guantes y gafas protectores, y el atacado se realizará en un lugar muy ventilado debido a los gases tóxicos que se desprenden.

62

Page 63: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

3.4 Diseño de la PCB

Para realizar el diseño esquemático del circuito éste se ha dividido en diferentes módulos interconectados, para simplificar su diseño y la compresión del esquema completo. En la Imagen 3.9 se puede observar el diseño modular y la interconexión de cada módulo, estos módulos serán explicados en cada una de las secciones de este apartado.

Imagen 3.9 Diseño modular del circuito

3.4.1 Alimentación

La alimentación es un elemento fundamental del circuito, se debe asegurar que el circuito de alimentación sea capaz de suministrar suficiente corriente al resto del circuito con una tensión lo más estable posible. Debido a la naturaleza del circuito hay que intentar que la alimentación genere el menor ruido, ya que de lo contrario este ruido, aunque no afectase al funcionamiento de los elementos digitales, puede ser audible en la salida analógica de los auriculares.

Así pues lo primero a determinar será la tensión con la que se debe alimentar el circuito y la corriente máxima que consumirá. En la Tabla 3.7 podemos observar cada unos de los componentes digitales con sus respectivos rangos de tensiones de alimentación, a partir de la cual se puede extraer el rango de tensiones que se pueden usar para alimentar todos los componentes. Como se observa, el límite inferior lo marca la parte analógica del circuito VS1001K y la superior la pantalla LCD, quedando el rango entre 2,8-3,3V. Debido a que 3,3V es una tensión estándar para la que existen diferentes reguladores de tensión, diodos Zener, etc. es la elegida para alimentar el circuito.

63

Page 64: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Componente Tensión de alimentación

PIC 18LF452 2-5,5V23

VS1001K (analógico) 2,8-3,6V

VS1001K (digital) 2,3-3,6V

MMC 2-3,6V

LCD 2,7-3,3VTabla 3.7 Rango de tensiones de los componentes

En cuanto a la corriente necesaria para alimentar el circuito, en la Tabla 3.8 podemos observar los consumos máximos de los distintos componentes del circuito. El resultado de la suma de los consumos máximos de todos los componentes es de 95mA, aunque el consumo real del circuito será mucho menor ya que los consumos típicos de los componentes, sobre todo de la parte analógica de integrado VS100K, son menores que el máximo. En el caso de la parte analógica del VS100K su consumo típico es de 5,5mA, y los picos de corriente son paliados por la inductancia que se coloca en la entrada de alimentación de este circuito, esto se explicará en la sección dedicada al diseño del circuito del VS1001K. Por tanto se decide que la fuente de alimentación ha de poder suministrar una corriente de 100mA, lo que asegura una correcta alimentación de todo el circuito aun coincidiendo picos de consumo simultáneo de todos los componentes.

Componente Consumo máximo

PIC 18LF452 4,70mA24

VS1001K (analógico) 40mA25

VS1001K (digital) 15mA

MMC 35mA26

LCD 300uATabla 3.8 Consumo máximo de los componentes

En todos estos cálculos no hemos tenido en cuenta el módulo USB ya que este se alimenta de forma autónoma a partir del puerto USB. Tampoco se ha contado la corriente que consume el circuito de la botonera y los elementos pasivos que acompañan a los integrados por ser consumos muy bajos, no obstante se ha dado un margen de 5mA para estos consumos extra. Resumiendo, el circuito de alimentación ha de suministrar a partir de pilas o del puerto USB (si este está conectado) una tensión de salida de 3,3V y al menos 100mA de corriente, además de cargar las pilas cuando el puerto USB esté conectado.

En cuanto a las pilas y su carga, debido a que la tensión de las líneas de alimentación del puerto USB es de 5V se pueden cargar unas pilas que tengan como máximo esta tensión, por tanto se decide alimentar el circuito con dos pilas tipo AA recargables, por ser lo más común en este tipo de reproductores y no superar esta tensión.

23 La tensión mínima depende de la frecuencia del reloj24 Consumo máximo aproximado a 3,5V y 20MHz, el consumo típico a 3,3V ronda los 4,2mA (a una

temperatura de 25º)25 De pico a plena carga, el consumo típico es 5,5mA26 Esto depende del fabricante, la frecuencia y la tensión de alimentación. Aun que el estándar permite hasta

100mA de consumo en lectura se usarán tarjetas con un máximo de 35mA (la mayoría)

64

Page 65: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Alimentación por USB

Cuando el puerto USB esté conectado el reproductor deberá alimentarse de este, además de cargar las pilas si éstas están conectadas. Esto supone un consumo de corriente del bus USB que deberá ser debidamente notificado durante el proceso de enumeración. Antes de dicho proceso el dispositivo no podrá consumir más de 100mA por tanto se ha decidido que el circuito no se alimente del USB hasta que el proceso de enumeración haya finalizado. Para ello se utiliza la línea PWREN# del módulo USB que se pone a nivel bajo después de que finalice el proceso de enumeración, indicando que ya se puede empezar a consumir corriente del puerto USB de forma normal. En la Imagen 3.10 se puede ver el circuito que controla la alimentación del USB, el transistor MOSFET de canal P (ZXM61P03) controla la alimentación del circuito, cuando la línea PWREN# pasa a nivel bajo el transistor permite el paso de corriente entre la fuente y el drenador. En la puerta del transistor se puede observar una resistencia y un condensador que realizan una función de soft start que limita el pico de corriente cuando el transistor se activa. Es importante tener en cuenta que el transistor ZXM61P03 tiene una impedancia de 0,35 ohmios entre la fuente y el drenador, por lo que hay una caída de tensión dependiente del consumo. Se ha elegido especialmente este transistor por su baja resistencia entre la fuente y el drenador, en el primer prototipo se utilizó el transistor BS250 pero su resistencia de 3,5Ω27 era excesiva.

Imagen 3.10 Control de alimentación USB

Circuito de carga

Para simplificar la alimentación, el circuito de carga será lo más sencillo posible, esto es, una corriente pasando por las pilas forma continua y sin control de carga. En circuitos más complejos la carga se realiza mediante ciclos de carga dependiendo de la carga de la pila, aunque esto también depende del tipo de pila. En la Imagen 3.11 se puede ver el circuito de carga, éste consta únicamente de las pilas, una resistencia y un diodo. La tensión de carga ha de ser superior a la tensión nominal de las pilas, esto genera una corriente que pasa a través de las pilas y las va cargando [Linden02] [Buchmann] [Harrison04].

27 En este transistor la resistencia fuente-drenador depende del fabricante, pudiendo ser de hasta 14 ohmios

65

Page 66: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.11 Circuito de carga

Al no haber control de carga se ha de controlar de forma manual el tiempo de carga de las pilas, no dejándolas cargando un tiempo excesivo. Se aconseja el uso de un cargador externo para la carga de pilas y usar el cargador del reproductor de forma ocasional cuando no se disponga de uno externo. Para evitar los problemas de sobrecarga de las pilas estas se cargan con una corriente baja, esto incrementa el tiempo de carga pero la hace más segura. Se opta por una carga de las pilas mediante una corriente C/628, donde C es la capacidad de las pilas, tomándose pilas de 1800mAh como referencia. Por tanto la corriente de carga de las pilas será de 300mAh y el tiempo de carga de unas 8 horas. La fórmula 3.1 calcula el valor de la resistencia: Vp es la tensión a la que se alimenta el circuito de carga, Vb es la tensión nominal de las pilas y Ic es la corriente de carga.

R = (Vp – Vb) / IcFórmula 3.1

La tensión nominal de las pilas es de 2,4V (1,2V cada una de las pilas en serie), y la tensión de alimentación es de 5V29. Teniendo en cuenta la caída de tensión del diodo Schottky (0,3V) Vb sería 2,7V, por lo que: (5 – 2,7) / 0,300 = 7,66Ω. Teniendo en cuenta la resistencia del transistor MOSFET (0,35Ω) el valor de la resistencia ha de ser 7,3Ω.

En el circuito se puede observar un diodo Zener de 3,6V, este diodo no forma parte del circuito de carga de las pilas sino que sirve para cuando las pilas no estén conectadas en el reproductor. En ese caso es necesario lograr una tensión de 3,3V en Vout, el diodo Zener fija una tensión de 3,6V y el diodo Schottky la baja a 3,3V. Para el correcto funcionamiento del diodo Zener es necesario una corriente mínima sin dependencia del consumo del reproductor. En la Imagen 3.12 podemos ver una simplificación del circuito, donde RL es la carga del reproductor y debemos seleccionar el valor de R de forma que el diodo Zener esté en funcionamiento cuando la carga sea máxima y cuando el circuito esté sin carga (conectado al USB pero sin pilas y con el reproductor apagado).

28 Usando una corriente C/10 se elimina el problema de sobrecarga, pudiendo dejar cargando las pilas de forma indefinida, pero el tiempo de carga seria excesivo (16 horas) y no cumpliría con los requisitos del Zener

29 Esta es la tensión típica que suministra el bus USB, pero el estándar da un margen de 4,5V a 5,5V, para simplificar los cálculos tomaremos 5V.

66

Page 67: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.12 Funcionamiento del diodo Zener como regulador.

El diodo Zener elegido es el BZX85C3V6, es un diodo Zener de 3,6V, IZ mínima de 60mA y disipa hasta 1W. Por tanto es capaz de soportar un máximo de corriente de 1 / 3,6 = 277mA. Se deben analizar dos puntos importantes, el diodo Zener no debe quedarse sin corriente y debe soportar la corriente y no quemarse cuando no exista carga.

Suposición de carga máxima

Si la carga del reproductor es máxima éste consume 100mA, más los 60mA de la corriente del Zener son 160mA. La Fórmula 3.2 muestra el cálculo para el valor máximo de la resistencia, que en este caso es R=5−3,6/0,060,1=8,75 Ω.

R=V−V Z

I ZminI Lmax Fórmula 3.2

Suposición de circuito sin carga

En este caso el peligro es que el Zener se queme, a partir de la Fórmula 3.2 podemos calcular el valor de la resistencia mínima que se debe colocar, esta es:

R=5−3,6/ 0,2770=5 Ω.

R=V−V Z

I ZmaxI LminFormula 3.3

Por tanto la resistencia ha de encontrarse entre 5 y 8,75 ohmios, como se puede observar los 7,66Ω de resistencia del circuito de carga se encuentra entre estos márgenes. El valor de resistencia estándar más cercano es de 7,3Ω, esto sumado a la resistencia lineal del transistor MOSFET tenemos una resistencia total de 7,65Ω.

67

Page 68: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

El regulador de tensión

Cuando el USB esté conectado la tensión estará regulada por el diodo zener y el circuito se alimentará con 3,3V, pero cuando sean las pilas las que tengan que suministrar la energía al circuito será necesario el uso de un conversor DC/DC que pase la tensión de las pilas de 2,4V a los 3,3V necesarios.

En el prototipo inicial se utilizó el regulador de tensión conmutado TC115 de microchip, este regulador es capaz de suministrar una corriente de 140mA con una tensión de entrada de 2V, tiene una eficiencia de un 80% a 100mA y está recomendado para sistemas alimentados con entre 1 y 3 pilas, por lo que a priori cumple los requisitos y es una buena elección. En cuanto al encapsulado, que puede verse en la Imagen 3.13, se trata de un SOT-89 de soldadura superficial con 5 pines. En cuanto a los elementos externos, el regulador necesita dos condensadores, un diodo y una inductancia, como muestra el esquemático de la Imagen 3.14 extraída de las especificaciones del regulador. Después de realizar diversas pruebas con diferentes cargas se pudo comprobar que con una carga de 100mA el regulador se volvía muy inestable dejando en ocasiones de funcionar. Este problema se debía a la inductancia, ya que fue imposible adquirir una inductancia del valor necesario y una resistencia en línea muy baja, y la que se utilizó daba problemas con corrientes altas debido a una caída de tensión excesiva. A pesar de ello el primer prototipo parecía funcionar de forma correcta, no obstante al no poder asegurar un correcto funcionamiento en el caso de un consumo de 100mA se optó por cambiar este regulador por otro que suministrase más corriente y con elementos más fáciles de obtener.

Imagen 3.13 Regulador de tensión TC115

Imagen 3.14 Esquemático del regulador TC115

68

Page 69: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

En el diseño final se ha utilizado el regulador de tensión MAX1675 de Maxim. Este regulador de tensión es capaz de suministrar hasta 220mA a partir de una entrada de tan solo 0,9V y una eficiencia de hasta un 94% con 200mA de carga. Tiene un consumo de tan solo 16μA, elimina la necesidad de usar un diodo externo y mejora la eficiencia media. En la Imagen 3.15 puede observarse el pinout del regulador, en este caso el encapsulado es un μMAX, también de soldadura superficial y algo más pequeño que el TC115 lo que dificulta mucho la soldadura manual.

Imagen 3.15 Regulador MAX1675

Los elementos externos necesarios en este regulador son tres condensadores y una inductancia. Como puede observarse en el esquemático de la Imagen 3.16, extraído de las especificaciones, se coloca un condensador a la entrada y la salida del regulador, y otro que hace la función de bypass conectando la entrada de referencia del regulador con tierra. En este caso la inductancia necesaria es de 22μH, afortunadamente en este caso se pudo encontrar una pequeña inductancia de soldadura superficial fabricada por Panasonic con una resistencia lineal de tan solo 0,015Ω.

Imagen 3.16 Esquemático del regulador MAX1675

69

Page 70: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

El diseño final lo podemos ven en la Imagen 3.17, además de los circuitos anteriormente descritos se ha añadido un conmutador que permite encender y apagar el reproductor, y una línea conectada a la entrada RA0 del microcontrolador para poder controlar la carga de las pilas.

Imagen 3.17 Esquemático del módulo de alimentación.

3.4.2 Microcontrolador

Como se indicó en la sección de selección de componente se va a utilizar el microcontrolador PIC 18LF452 fabricado por Microchip. Se trata de un microcontrolador de baja tensión de 8 bits con 34 pines de entrada y salida, un set de 75 instrucciones y varios módulos: receptor/transmisor universal asíncrono/síncrono direccionable (AUSART), interfaz serie de periféricos (SPI), circuitos inter-integrados de dos hilos I²C, conversor analógico/digital de 10 bits, 4 temporizadores, etc30. El encapsulado elegido es un DIP de 40 pines por su facilidad de montaje y posibilidad de sustitución. Como ya se ha explicado trabajará a 20MHz y se alimentará con una tensión de 3,3V. En la Imagen3.18 puede verse el pinout del microcontrolador extraído de las especificaciones.

30 Para más información sobre las características y arquitectura del microcontrolador consultar las hojas de especificaciones [PIC18FXX2].

70

Page 71: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.18 Microcontrolador 18LF452

El microcontrolador tiene toda la lógica de funcionamiento del dispositivo y se encarga de interconectar y gestionar todos los elementos del reproductor. Los periféricos que se conectan al microcontrolador y sus funciones principales son:

Tarjeta MMC: Acceder a la estructura de ficheros de la tarjeta de memoria. Decodificador MP3: Configurar el chip decodificador y enviarle el flujo de

datos codificado para que sean reproducidos. Pantalla LCD: Mostrar la información necesaria para el control del reproductor. Botonera: Obedecer a las pulsaciones de los botones realizadas por el usuario. Módulo USB: Comunicarse con el ordenador mediante dicho módulo.

Además de los elementos mencionados se ha optado por colocar en el circuito dos conectores, uno conectado a las líneas ICSP del microcontrolador para poder reprogramar éste sin necesidad de extraerlo, el otro permite la comunicación mediante RS232 que se utiliza para la depuración del código. Inicialmente se utilizó también la comunicación RS232 para actualizar el firmware del microcontrolador a través de un bootloader, pero se optó por sacar las líneas ICSP para realizar actualizaciones más rápidas y debido a que la actualización mediante software fallaba en algunas ocasiones.

El microcontrolador utiliza para la señal de reloj un cristal de 20MHz, por lo que se ha configurado en modo HS (High Speed Crystal). El montaje para este tipo de configuración se puede ver en la Imagen 3.19; se han utilizado condensadores de 33pF y no ha sido necesario el uso de la resistencia Rs.

71

Page 72: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.19 Configuración del cristal del microcontrolador

El resto de pines se conectan según indica la Tabla 3.9, en cuando a los pines de alimentación se han colocado pequeños condensadores próximos al microcontrolador para estabilizar la tensión y minimizar posibles ruidos. En las secciones correspondientes a cada componente se detalla la conexión de cada uno de ellos con el microcontrolador. Como puede observarse hay líneas que están conectadas a varios elementos, como las correspondientes al interfaz SPI que se utiliza para la comunicación con el decodificador MP3, la pantalla LCD y la tarjeta de memoria, habiendo para cada uno una línea de chip select para seleccionar el correspondiente cada vez.

Pines Elemento

RD0-RD7 Bus de datos del módulo USB

RB0, RB2, RB4, RB5, RB6 Líneas de control del módulo USB

RC3, RC4, RC5, RA2, RB7 Configuración del decodificador MP3

RB1, RB3, RC6, RC7 Flujo de datos MP3 del decodificador

RA3, RA4, RA5, RC3 RC5 LCD

RA1, RC3, RC4, RC5 Multimedia Card

RC0, RC1, RC2, RE0, RE1, RE2 Botonera

ICSP_VPP, GND, RB6, RB7 ICSP

RC6, RC7 UART

RA0 Tensión de pilasTabla 3.9 Conexiones del microcontrolador.

3.4.3 Módulo USB

Para la comunicación USB se va a utilizar el integrado FT245BM, que proporciona un interfaz transparente desde el punto de vista del microcontrolador para comunicarse con el ordenador. Debido a la gran cantidad de elementos externos que necesita y el tipo de encapsulado (muy complicado para una soldadura manual) se ha optado por el uso del módulo DLP-USB245M que incluye los componentes pasivos necesarios, además de facilitar la integración en el circuito al no ser necesario soldarlo a éste y pudiendo ser fácilmente sustituido.

72

Page 73: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

La Imagen 3.20 es el diagrama de bloques simplificado del funcionamiento del chip, como se puede observar tiene un buffer de recepción de 128 Bytes y un buffer de transmisión de 384 Bytes. Utiliza un cristal de 6 MHz con un multiplicador que genera los 12MHz y 48 MHz que utilizan para trabajar el SIE (Serial Interface Engine) y el transductor USB respectivamente. En el esquema también puede observarse un interfaz para una memoria EEPROM (externa y opcional) donde se almacena la configuración del dispositivo, y un regulador de tensión de 3,3V que no se utiliza debido a que sólo suministra 5mA.

Imagen 3.20 Diagrama de bloques del funcionamiento del FT245BM

El esquemático del módulo utilizado puede verse en la Imagen 3.21, como se observa el módulo sólo incluye los elementos pasivos necesarios para el funcionamiento del FT245BM y una memoria EEPROM 93C46 que se utiliza para guardar las configuraciones básicas que caracterizan al dispositivo USB, como su nombre, número de serie, USB VID, PID, consumo, etc. En la Tabla 3.10 se listan los pines del módulo (que a excepción del pin 1 corresponden a los pines del chip) y su descripción, así como si son pines de entrada o salida.

73

Page 74: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.21 Esquemático del módulo DLP-USB245M

Pin Nombre Tipo Descripción

1 Board ID Salida Se utiliza para saber si el módulo es el DLP-USB245M o el DLP-USB232M. En el DLP-USB245M el pin está a nivel bajo.

2 GND - Tierra

3 RESET# Entrada Sirve para resetear el chip FT245BM. Activo a nivel bajo.

4 RESETO Salida Salida del generador de reset interno. No se ha utilizado.

5 GND - Tierra

6 3V3 Salida Salida del regulador de tensión lineal de 3,3V. Se puede utilizar hasta un máximo 5mA de corriente. No utilizado.

7 GND - Tierra

8 SLEEP Salida Corresponde al pin PWREN# del chip, se pone a nivel bajo después del proceso de enumeración del dispositivo. Sirve para controlar el consumo del dispositivo.

9 SND/WUP Entrada Inicializa el proceso de “despertado” del dispositivo si se encuentra en estado suspendido. Si el dispositivo no está suspendido sirve para forzar el envío de los datos del buffer de transmisión. No utilizado.

10 VccIO Entrada Tensión de referencia para las entradas. En este caso 3,3v.

11 EXTVCC Entrada Alimentación del chip, en este caso se conecta a la alimentación del USB (PORTVCC)

74

Page 75: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

12 PORTVCC Salida Alimentación del puerto USB, se puede consumir hasta un máximo de 500mA.

13 RXF# Salida Cuando está a nivel bajo al menos un byte está esperando en el buffer de bytes recibidos para ser leído. Está a nivel alto si el buffer está vacío.

14 TXE# Salida Cuando está a nivel alto indica que el buffer de transmisión esta lleno, por tanto debe esperarse antes de escribir nuevos datos.

15 WR Entrada Cuando se pasa de nivel alto a bajo el chip lee los 8 bits de la línea de datos y mete el byte en el buffer de transmisión. Los datos del buffer de transmisión son transmitidos al ordenador en el timeout del buffer de transmisión (configurable de 1 a 255ms)

16 RD# Entrada Al ponerlo a nivel bajo el primer byte en el buffer de recepción se pone en las líneas de datos. Cuando se pasa de nuevo a nivel alto las líneas de datos se ponen en estado de alta impedancia.

17-24 D7-D0 Entrada/ Salida

Bits de datos.

Tabla 3.10 Explicación del pinout del módulo USB

Configuración de alimentación

El chip FT245BM permite diferentes configuraciones de alimentación según las necesidades del sistema:

Alimentado por el bus USB: tanto el chip como el resto del circuito son alimentados por el bus.

Alimentación propia: la alimentación proviene de una fuente externa, no se extrae corriente del bus.

Alimentado por el bus utilizando lógica de 3,3V: el bus alimenta directamente el chip FT245BM y sirve como entrada de alimentación de un regulador de tensión de 3,3V que se utiliza para alimentar el resto de circuito y a la que se conecta la línea VCCIO, que sirve como referencia para la tensión de las líneas de entrada/salida.

Alimentación propia con lógica 3,3V: existe alimentación propia tanto para el FT245BM como para el resto del circuito. El FT245BM se alimenta con 5V y el resto del circuito, incluyendo la línea VCCIO con 3,3V.

En este caso la configuración utilizada es la tercera, se utiliza la alimentación del bus para el FT245BM, para cargar las pilas (en caso de estar conectadas) y es la entrada del regulador de 3,3V que alimenta el resto del circuito. La configuración puede verse en la Imagen 3.22, la alimentación proveniente del puerto USB (PORTVCC) se conecta a la línea que alimenta el FT245BM (EXTVCC) y a la línea de reset, que no se utiliza por el microcontrolador. A su vez la línea de alimentación del USB está conectada al regulador de tensión que alimenta todo el circuito con 3,3V. VCCIO está conectada a los 3,3V de la alimentación del circuito, ya que es la tensión que se va a utilizar en los pines de entrada/salida.

75

Page 76: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.22 Configuración de la alimentación del USB

En los circuitos alimentados por USB debe haber un control del consumo. El estándar USB permite un máximo de 100mA de consumo antes de la enumeración, y en modo suspendido tan solo se puede consumir un máximo de 500uA, por tanto se debe controlar el proceso de enumeración y la entrada en estado suspendido. Como se adelantó en la sección de alimentación, la línea SLEEP del módulo (PWREN# en el chip) se utiliza para el control de la alimentación del circuito. Esta línea pasa a nivel bajo después de la enumeración del dispositivo y cuando este sale del estado suspendido, y está a nivel alto antes de la enumeración y cuando pasa a estado suspendido. En la Imagen 3.23 puede verse la forma de controlar la alimentación según recomiendan las hojas de especificaciones, como puede observarse existe un circuito Soft Start que limita el pico de corriente cuando el transistor se activa. El circuito implementado puede verse en la Imagen 3.10 de la sección de alimentación.

Imagen 3.23 Control de alimentación según especificaciones.

Protocolo de comunicación

El módulo USB se comunica con el microcontrolador mediante un bus de datos de 8 bits y cuatro líneas de control. En la Imagen 3.24 puede verse la conexión entre el módulo y el microcontrolador.

76

Page 77: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.24 Conexión del módulo USB con el microcontrolador

Para realizar una lectura se ha de esperar a que la línea RXF# se ponga a nivel bajo, lo que significa que hay datos en el buffer de recepción para ser leídos. Una vez confirmada la existencia de datos para ser leídos se debe poner la línea RD# a nivel bajo, esto hace que el primer byte del buffer se ponga en el bus de datos para ser leído. Después de leer los datos el microcontrolador vuelve a poner a nivel alto la línea RD# lo que hace que el bus de datos se ponga en alta impedancia a la espera del siguiente ciclo de lectura. En la Imagen 3.25 se puede ver el cronograma del ciclo de lectura.

Imagen 3.25 Cronograma del ciclo de lectura USB

77

Page 78: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Para el control del ciclo de escritura se utilizan las líneas TXE# y WR, en la Imagen 3.26 puede verse el cronograma. Antes de iniciar el ciclo de escritura se comprueba que TXE# este a nivel bajo, de lo contrario indicaría que el buffer de transmisión está lleno y habría que esperar. Una vez verificado que existe espacio en el buffer se pone WR a nivel alto y el byte a transmitir en el bus de datos, una vez estables los datos (20ns) WR se pone a nivel bajo, lo que provoca la lectura de los datos del bus.

Imagen 3.26 Cronograma del ciclo de escritura USB

3.4.4 Decodificador VS1001k

El chip decodificador de MP3 está compuesto internamente por dos partes, un procesador DSP y un decodificador digital-analógico (DAC) estéreo. El VS1001k recibe el flujo de datos MP3 por un bus serie esclavo que es decodificado por el procesador DSP, estos datos pasan luego por el decodificador digital-analógico de 18 bits y un pequeño amplificador que proporciona una salida analógica a la que se puede conectar directamente unos pequeños auriculares sin amplificación adicional. Estas dos partes, el DSP y el DAC, tienen la alimentación independiente, denominadas Vcc digital y Vcc analógica respectivamente, para evitar interferencias en el DAC. En la Imagen 3.27 puede verse el funcionamiento interno del chip.

78

Page 79: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.27 Funcionamiento del decodificador VS1001k

En cuanto a sus características, el VS1001k decodifica MPEG layer 3 de MPEG-1, MPEG-2 y MPEG-2.5, a todas las tasas de muestreo y de bit tanto en mono como en estéreo. Soporta tasa de bit variable (VBR), utiliza un DAC estéreo de alta calidad y es capaz de soportar auriculares de 30 Ω de carga sin amplificación adicional. Como ya se ha dicho trabaja con una tensión de 2,8V a 3,6V y usa un cristal de 12-13MHz (con multiplicador) o 24-26MHz (sin multiplicador)31.

Circuito y conexión al microcontrolador

En la Imagen 3.31 puede verse el circuito recomendado por las hojas de especificaciones del VS1001k. El circuito está compuesto únicamente por unos pocos componentes pasivos extra. El chip tiene dos entradas de alimentación como ya se ha indicado, están separadas por inductancias y tienen un par de condensadores cada una, lo que hace que las líneas estén más aisladas, con tensiones más estables y tengan menos ruido. En cuanto a la señal de reloj se utiliza un cristal de 24,576MHz, aunque como se ha comentado puede usarse de 12-13MHz o 24-26MHz dependiendo de si se utiliza el multiplicador de reloj o no. El decodificador de conecta al microcontrolador a través de dos interfaces, el SCI compuesto de cuatro líneas y el SDI compuesto de tres. Además existen una línea de reset y DREQ, que indica al microcontrolador que tiene espacio en el buffer para más datos MP3.

El circuito implementado ha sido el que se muestra en el esquemático de la Imagen 3.32, muy similar al descrito en las hojas de especificaciones. En este caso se ha utilizado un cristal de 13MHz con el multiplicador (26MHz) para poder reproducir ficheros MP3 a todas las tasas de bit, también puede observarse dos jumpers y resistencias a la salida de los auriculares. Cuando los jumpers están cerrados la salida de audio se utiliza como salida para auriculares y cuando están abiertos como salida en línea, tal y como indican las hojas de aplicación del VS1001k [VS10XXANOUT].

31 No a todas las frecuencias se pueden decodificar los MP3 con tasas de bit más altas.

79

Page 80: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.31 Circuito recomendado del VS1001k

Imagen 3.32 Circuito implementado del VS1001k

80

Page 81: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Protocolo de comunicación

Existen dos interfaces para comunicarse con el VS1001k, ambos basados en el interfaz de comunicación serie SPI. El primero se denomina interfaz de datos serie (SDI) y se utiliza para enviar el flujo de datos MP3 al decodificador. El segundo es el interfaz de comandos serie (SCI) y se utiliza para enviar instrucciones y controlar el chip.

El interfaz SDI puede utilizarse en modo maestro o esclavo, en este caso se ha usado como esclavo. El flujo de datos sólo circula del microcontrolador al decodificador ya que esta línea es únicamente para el envío del flujo de datos MP3. Como se puede ver en el cronograma de la Imagen 3.28 el interfaz está compuesto por tres líneas, BSYNC indica el comienzo del primer bit, en SDATA se introducen los bits de datos y DCLK es la señal de reloj. Los datos son leídos en el flanco de subida o bajada de la señal de reloj dependiendo de como se haya configurado el decodificador. En cuanto al orden de los bits, se puede seleccionar si se quiere primero el más o el menos significativo. El uso de BSYNC no es obligatorio aunque si muy recomendable, si no se usa debe ponerse a nivel alto. La línea DREQ indica que hay espacio en el buffer para recibir datos, cuando la línea está en estado alto hay al menos 32 bytes libres en el buffer.

Imagen 3.28 Cronograma del interfaz SDI

La comunicación por el interfaz SCI consiste en un byte de instrucción, un byte de dirección y una palabra de 16 bits. Cada ciclo de lectura o escritura puede leer o escribir un único registro. El tipo de operación es especificada por el código de operación: 0x3 para las lecturas y 0x2 para las escrituras.

En la Imagen 3.29 puede verse el ciclo de lectura mediante el interfaz SCI. Primero la línea XCS (chip select) se pone a nivel bajo, lo que le indica al dispositivo que él es el seleccionado para la próxima transmisión32. Entonces, el código de operación de lectura (0x3) es transmitido por la línea SI seguido de un byte con la dirección. Después de transmitir la dirección el dispositivo pone en la línea SO los 16 bits de datos correspondientes al registro de la dirección transmitida. La línea XCS se debe poner a nivel alto una vez acabada la transmisión de los datos indicando la finalización del ciclo de lectura.

32 El interfaz SPI soporta múltiples dispositivos en el mismo bus, mediante la línea chip select se selecciona cual es el dispositivo activo cada vez.

81

Page 82: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.29 Ciclo de lectura SCI

Como en el ciclo de lectura, el ciclo de escritura se inicia poniendo a nivel bajo la línea XCS. Después se envía la instrucción de escritura, la dirección y los datos a escribir por la línea SI. En este caso SO no es utilizado. En la Imagen 3.30 puede verse el cronograma del ciclo de escritura. Después de esta secuencia, al igual que en el ciclo de lectura, XCS se pone a nivel alto.

Imagen 3.30 Ciclo de escritura SCI

3.4.5 Tarjeta Multimedia Card

El pinout de la tarjeta de memoria Multimedia Card está compuesto por siete líneas, tres líneas de alimentación y cuatro para la transmisión de datos. En la Tabla 3.11 se puede ver el listado de pines y su descripción para una comunicación en modo SPI.

Pin # Nombre Tipo Descripción

1 CS Entrada Chip select

2 SDI Entrada Entrada de datos (Data in)

3 Vss Alimentación Tierra

4 Vcc Alimentación Alimentación

5 SCLK Entrada Reloj

6 Vss2 Alimentación Tierra

7 SDO Salida Salida de datos (Data out)Tabla 3.11 Pinout de la tarjeta Multimedia Card

82

Page 83: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

La tarjeta utiliza para la comunicación un interfaz SPI, por tanto sus líneas se conectan a los pines correspondientes al puerto SPI del microcontrolador. Este puerto está también conectado al integrado VS1001k y, como se verá, a la pantalla LCD, utilizándose el pin CS para seleccionar un componente u otro. En la Imagen 3.31 puede verse como se conecta la tarjeta a los puertos del microcontrolador, se pueden apreciar dos resistencias en pull-up en las líneas SDI y SDO para proteger el bus cuando la tarjeta no está insertada o cuando está en alta impedancia [SanDisk03].

Imagen 3.31 Conexión de la tarjeta MMC

Protocolo de comunicación

Las tarjetas Multimedia Card tienen dos modos de comunicación, el modo Multimedia Card y el SPI. En este caso se usa el modos SPI por ser más simple, tener implementado un puerto SPI por hardware en el microcontrolador y, sobre todo, por ser compatible con las tarjetas Secure Digital (SD), de forma que se puedan usar tarjetas MMC o SD de forma indistinta. El interfaz SPI ya ha sido explicado en el apartado anterior.

Durante la inicialización de la tarjeta (momento en el que está en modo Multimedia Card) se ha de seleccionar que tipo de protocolo de comunicación que se va a utilizar. Los detalles sobre los comandos de inicialización, configuración, lectura, escritura, etc. se explican en la sección de firmware del microcontrolador, en la librería del la MMC.

3.4.6 Pantalla LCD

La pantalla elegida es una pantalla LCD gráfica de 84x48 pixels, utilizada por los teléfonos móviles Nokia 3210 y 3310. Esta pantalla utiliza sólo ocho líneas, con un interfaz SPI simplificado, ya que sólo tiene comandos de escritura y por tanto no tiene la línea SDO. En la Imagen 3.32 se puede ver el pinout de la pantalla, la comunicación se realiza mediante las líneas SDIN, SCLK y SCE, correspondientes al interfaz SPI, y las líneas D/C y RES, todas ellas entradas.

83

Page 84: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.32 Pinout de la pantalla LCD

El circuito que conecta la pantalla (Imagen 3.33) consta de tan sólo dos componentes pasivos adicionales, un condensador que conecta Vout (de uso interno por el controlador del LCD) a tierra, y una resistencia en pull-up en la línea SCE. Las líneas SDIN y SCLK se conectan al puerto SPI del microcontrolador, utilizándose SCE (chip enable) para indicar a la pantalla que es la destinataria de la siguiente comunicación enviada por el bus SPI

Imagen 3.33 Circuito usado con la pantalla LCD

Protocolo de comunicación

El microcontrolador se comunica con la pantalla por un interfaz SPI simplificado con comunicación únicamente en una dirección más la línea D/C que selecciona el tipo de instrucción. En la Imagen 3.34 se puede ver el cronograma de una comunicación con la pantalla. La pantalla puede recibir dos tipos de instrucciones que se seleccionan mediante la línea D/C, si D/C está a nivel bajo el byte enviado por el bus es interpretado como un comando y si está a nivel alto los siguientes bytes recibidos se almacenan en la memoria RAM de la pantalla cuyos bits corresponden a píxeles de la pantalla. Los datos se transmiten enviando primero el bit más significativo y son capturados en los flancos de subida de la señal de reloj. Los detalles sobre los comandos, inicialización y utilización se explican en la sección de firmware del microcontrolador, en la librería del LCD.

84

Page 85: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.34 Cronograma de comunicación con la pantalla

3.4.7 Botonera

Para la interacción del usuario con el reproductor se han dispuesto un conjunto de seis botones mediante los cuales se realizarán las acciones de control de reproducción, configuración, volumen, navegación por el árbol de directorios, etc. Los botones son pulsadores que están conectados a las líneas RC0-RC2 y RE0-RE2 del microcontrolador (Imagen 3.35) de forma que cuando el botón está pulsado la línea está en estado alto y cuando no en estado bajo.

Imagen 3.35 Circuito de la botonera

3.4.8 Otros elementos

El reproductor tiene dos interfaces para conexión externa que facilitan el desarrollo del mismo, un conector para programar el microcontrolador sin necesidad de extraerlo de la placa (ICSP) y un puerto UART para conectar al puerto serie de un ordenador y depurar con más facilidad el firmware. El esquemático de estos puede verse en la Imagen 3.36.

85

Page 86: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 3.36 Esquemático de los interfaces ICSP y UART

86

Page 87: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

4. Diseño y desarrollo del firmware

4.1 Introducción

Una vez diseñado el hardware del dispositivo el siguiente paso es el desarrollo del firmware del microcontrolador. El microcontrolador se encarga del control de los distintos componentes del dispositivo: el chip decodificador MP3, el módulo de comunicación USB, la tarjeta de memoria, la pantalla LCD y la botonera. Además incorpora diversas librerías donde se implementa el protocolo de comunicación con el ordenador, el sistema de ficheros FAT, la lectura de la información ID3 y otras funciones.

4.2 Herramientas de desarrollo utilizadas

Debido a la complejidad y gran cantidad de código a desarrollar el firmware del microcontrolador se ha realizado en lenguaje C, utilizando de forma puntual alguna instrucción en ensamblador donde ha sido necesario un incremento de la eficiencia del código en funciones donde la velocidad es un factor crítico.

El compilador utilizado para el desarrollo del código es el PCWH de la empresa CCS. Este compilador permite la operación de tipo de datos de 1, 8, 16 y 32 bits, posee gran cantidad de funciones y librerías que ayudan al diseño, permite la inserción de código ensamblador en cualquier punto, soporta funciones inline33 (lo que mejora la eficiencia de dichas funciones), etc. Éstas, entre otras características, hacen que sea el compilador finalmente elegido. No obstante esta no es una elección crítica, el uso de otro compilador es posible aunque probablemente incrementase el tiempo de diseño. También es posible el paso del código desarrollado en éste a otro compilador, realizando algunos cambios para adaptar los elementos y funciones especificas de este compilador al otro.

Grabación del firmware

En la grabación34 del firmware se han utilizado varios medios. Para la grabación de forma directa del microcontrolador se ha fabricado un programador de PICs del tipo JDM y para la grabación en el propio circuito se han empleado dos técnicas; actualización de éste por software conectando el reproductor al puerto serie del ordenador y mediante un interfaz ICSP35. La actualización por software se realiza conectando el puerto UART del microcontrolador a un pequeño circuito basado en el integrado MAX323236 que a su vez se conecta al puerto serie del ordenador, en la Imagen 4.1 puede verse el esquemático típico montado en este circuito.

33 Función que al compilar el código éste se repite en cada llamada, esto hace que el código se ejecute más rápido a costa de algo más de memoria de programa.

34 Se utiliza la palabra grabación y no programación del microcontrolador para evitar confusión con la programación en C del firmware.

35 Este fue incluido en el segundo prototipo del reproductor.36 Un transductor que transforma la tensión de 3,3V usada por el microcontrolador a la tensión estándar del

RS232.

87

Page 88: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 4.1 Esquemático usado con el MAX3232

Debido a la lentitud de las actualizaciones mediante software, los errores durante este tipo de actualizaciones y el espacio extra que supone el código de actualización en la memoria del microcontrolador se optó por el uso del interfaz ICSP para la actualización in situ del firmware. No obstante la forma finalmente más utilizada para la actualización del firmware ha sido mediante un programador de PICs, en el primer prototipo se empleó el programador fabricado a tal efecto, pero para el segundo prototipo se adquirió un programador algo más complejo (Imagen 4.2) que graba el firmware en menos tiempo e incorpora la salida ICSP.

Imagen 4.2 Programador de PICs

En cuanto al software utilizado para la grabación se han utilizado dos programas, con el primer programador se ha utilizado el programa IC-Prog y con el segundo el programa WinPic800. Ambos son programas gratuitos, el segundo tiene más opciones y se puede grabar más rápido que con el IC-Prog pero no funciona con el programador JDM fabricado ya que se ha utilizado un esquema demasiado simple para este programa.

88

Page 89: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

4.3 Librerías desarrolladas

4.3.1 Introducción

Para hacer un código más legible y estructurado se ha decidido dividir las funciones en diversas librerías. Estas librerías agrupan las funciones de cada uno de los elementos del reproductor y las funciones afines como pueden ser las de acceso a la estructura de ficheros FAT. Estas funciones son posteriormente utilizadas por el programa principal o por otras librerías, haciendo así una estructura de capas de modo que en el programa principal se utilizan sólo funciones de alto nivel. En la Imagen 4.3 puede verse el esquema del firmware del microcontrolador, compuesto por el programa principal y el conjunto de librerías.

Imagen 4.3 Esquema de librerías.

4.3.2 Librería VS1001K

Esta librería contiene las funciones necesarias para el control del chip decodificador de MP3 VS1001K. Como ya se ha indicado en la descripción del hardware, el VS1001K tiene dos interfaces de comunicación, el SDI por el que se le envía el flujo de datos MP3 y el SCI por el que se configura y se obtiene información sobre el MP3 en reproducción. El protocolo de comunicación mediante estos interfaces se ha explicado en el capítulo anterior. La librería se compone de las funciones para la comunicación por SDI y SCI, y otras funciones de más alto nivel que utilizan las anteriores para el control del decodificador.

89

Page 90: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Funciones SDI

En las siguientes tablas (Tablas 4.1) se listan las funciones que hacen uso del interfaz SDI, su explicación y diagrama de flujo.

void sdi_out(byte data)Función de bajo nivel que envía el byte data a través del interfaz SDI.

No se comprueba el buffer.

void sdi_send()Esta función utiliza sdi_out para enviar los 32 bytes de la variable

global vs_data.

void morezeroes(void)Envía 2048 “0” por el interfaz SDI. Función necesaria para la

reproducción de MP3.

void sine_test(byte val, byte tms)Genera un pitido durante tms + 150 milisegundos. Val es un valor entre

48 y 119 que se define por: FsIdx=(val-48) mod 9 ; FSin=(n-48)/9FsIdx es un valor de entre 0 y 8 que especifica la frecuencia (de 48KHz

a 8KHz) y FSin, valor entre 0 y 7, especifica el número de muestras (de 32.000 a 4.000)37

37 Para más información sobre las tablas de frecuencias y muestras consultar las hojas de especificaciones del decodificador VS1001k

90

Page 91: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Tablas 4.1 Funciones SDI

Funciones SCI

Como se ha indicado, el interfaz SCI se utiliza para el envió de comandos al decodificador. Estos comandos consisten en lecturas o escrituras de los registros de configuración de 16 bits. En la Tabla 4.2 se listan los registros accesibles mediante este interfaz y si se trata de un registro de lectura o escritura.

Nombre Tipo Dirección Función

MODE L/E 0 Registro de control

STATUS L/E 1 Estado del VS1001k

INT_FCTLH - 2 Registro interno

CLOCKF L/E 3 Configuración del reloj

DECODE_TIME Lectura 4 Tiempo decodificado, en segundos

AUDATA Lectura 5 Información del audio decodificado

WRAM Escritura 6 Registro para subir programas a la RAM

WRAMADDR Escritura 7 Dirección base para escribir en la RAM

HDAT0 Lectura 8 Información de cabecera

HDAT1 Lectura 9 Información de cabecera

AIADDR L/E 10 Dirección de inicio de la aplicación

VOL L/E 11 Control de volumen

Reservados - 12

AICTRL[x] L/E 13+x Para acceder a los programas cargadosTabla 4.2 Registros internos del decodificador

Los registros WRAM, WRAMADDR y AICTRL[x] se utilizan para subir programas a la RAM del decodificador, de forma que ejecute pequeñas aplicaciones como un ecualizador. Al no haberse desarrollado ningún programa de este tipo estos registros no han sido utilizados.

A continuación se realiza una explicación más detallada de los registros de los que hace uso la librería desarrollada:

91

Page 92: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

MODE

La descripción de los bits de este registro se puede ver en la Tabla 4.3.

Bit Nombre Función Valor Descripción

0 SM_DIFF Diferencial (en estéreo crea un virtual surround)

01

Fase de audio normalCanal izquierdo invertido

1 SM_FFWD Avance rápido 01

Avance normalAvance rápido

2 SM_RESET Reseteo software 01

NormalReset

3 SM_UNUSED1 0

4 SM_PDOWN Apagado 01

EncendidoApagado

5 SM_UNUSED2 0

6 SM_UNUSED3 0

7 SM_BASS Realce bass/treble (graves/agudos)

01

ApagadoEncendido

8 SM_DACT Flanco de reloj para SDI 01

SubidaBajada

9 SM_BITORD Orden del bits en el bus SDI 01

Primero MSBÚltimo MSB

10 SM_IBMODE Modo del bus 01

EsclavoMaestro

11 SM_IBCLK Reloj del bus cuando está en modo maestro.

01

512 kHz1024 kHz

Tabla 4.3 Descripción de los bits del registro MODE

STATUS

Controla el estado interno del VS1001k, los bits 0 y 1 sirven para el control de la salida analógica de volumen y el bit 3 para apagar la parte analógica del chip. Este registro no es realmente necesario, estas funciones se pueden controlar con otros registros.

CLOCKF

Se utiliza para indicar la frecuencia del reloj que se está utilizando. La fórmula para calcular esta frecuencia es: Frecuencia de cristal / 2000. Los valores válidos para este registro son 0..32767, el bit más significativo se utiliza para indicar si se activa o no el multiplicador de reloj. Hay que recordar que por debajo de 24,576 Mhz el chip no es capaz de decodificar a todas las tasas de bit.

DECODE_TIME

Este registro almacena el tiempo en segundos del flujo de datos que se está decodificando en este momento.

92

Page 93: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

AUDATA

Cuando se decodifican datos correctos la tasa de bits se muestra en este registro en los bits 8..0. En los bits 12..9 se muestra la frecuencia de muestreo según la Tabla 4.4, y el bit 15 sirve para indicar si el sonido es mono ('0') o estéreo ('1'). El resto de bits no se utilizan y están a '0'.

Bits 12..9 Frecuencia de muestreo

0b0000 Desconocido

0b0001 44100 Hz

0b0010 48000 Hz

0b0011 32000 Hz

0b0100 22050 Hz

0b0101 24000 Hz

0b0110 16000 Hz

0b0111 11025 Hz

0b1000 12000 Hz

0b1001 8000 HzTabla 4.4 Frecuencias según los bits del registro AUDATA

WRAM

Este registro se utiliza para subir programas a la memoria RAM del decodificador. La dirección de inicio debe ser inicializada (WRAMADDR) antes de la primera llamada a WRAM. Son necesarias dos escrituras en el registro WRAM (16 bits cada uno) para escribir una palabra del programa (32 bits), siendo el byte más significativo el primero. Después de cada escritura el puntero interno es autoincrementado.

WRAMADDR

Este registro se utiliza para indicar la posición de memoria en la que se escribirán los datos del programa transferidos posteriormente con el registro WRAM. El espacio disponible para programas de usuario se encuentra entre las direcciones 0x4000 y 0x43ff.

En este proyecto no se han utilizado programas de usuario ejecutándose en el decodificador, por tanto los comandos WRAM y WRAMADDR no se han utilizado.

93

Page 94: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

HDAT0 y HDAT1

En estos registros se almacena la información de cabecera extraída del flujo de datos MPEG cuando se está decodificando. En la Tabla 4.5 se detalla el significado de cada unos de los bits de los registros.

Bit Función Valor Explicación

HDAT1[15:5] Palabra sincronismo 2047 Datos válidos

HDAT1[4:3] ID 3 ISO 11172-3 1.0

2 MPEG 2.0 (1/2-rate)

1 MPEG 2.5 (1/4-rate)

0 MPEG 2.5 (1/4-rate)

HDAT1[2:1] Capa 3 I

2 II

1 III

0 Reservada

HDAT1[0] Bit Protección 1 Sin CRC

0 Con CRC

HDAT0[15:12] Tasa de bit ISO 11172-3

HDAT0[11:10] Tasa de Muestreo38 3 Reservada

2 32/16/8 kHz

1 48/24/12 kHz

0 44/22/11 kHz

HDAT0[9] Pad bit 1 Slot adicional

0 Marco normal

HDAT0[8] Bit privado

HDAT0[7:6] Modo 3 Mono

2 Dual Channel

1 Joint Stereo

0 Estéreo

HDAT0[5:4] Extensión ISO 11172-3

HDAT0[3] Copyright 1 Con copyright

0 Libre

HDAT0[2] Original 1 Original

0 Copia

HDAT0[1:0] Énfasis 3 CCITT J.17

2 Reservado

1 50/15 microseg

0 Sin énfasisTabla 4.5 Bits de los registros HDAT0 y HDAT1

38 Si el campo ID es '1' se utiliza la tasa de muestreo más alta, si es '0' la intermedia y si es '2' o '3' la más baja.

94

Page 95: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

AIADDR

Este registro indica la dirección de inicio del código del programa escrito antes mediante los registros WRAMADDR y WRAM. Como no se utiliza un programa de usuario este registro no es inicializado.

VOL

El registro VOL controla el volumen de reproducción. Se establece un valor entre 0 y 255 para cada canal, esto define la atenuación desde el nivel máximo de volumen en pasos de 0,5 dB. El byte más significativo controla el canal izquierdo y el menos significativo el derecho.

Poner el volumen con silencio total (255 para ambos canales) desconecta la alimentación analógica, lo que genera un pequeño click en los auriculares. Para evitar esto se ha utilizado el nivel 254 como mínimo volumen, ya que es prácticamente inaudible.

AICTRL[x]

El registro AICTRL se utiliza para acceder al programa de usuario del decodificador. No se ha utilizado en este proyecto.

En la Tabla 4.6 se describen las funciones implementadas en la librería del VS1001k y utilizan el protocolo SCI haciendo uso de los registros que se acaban de describir.

byte SCI(byte out)Envía el byte out por el bus SCI al decodificador, y devuelve el byte de

respuesta.

int16 vs1001_SCI_Read(byte Adr)Lee y devuelve el byte de la posición Adr.

void vs1001_SCI_Write(byte Adr, byte dataH, byte dataL)Graba los bytes dataH y dataL en la dirección Adr.

void vs1001_swreset()Genera un reset software del decodificador.

void get_vol()Devuelve el valor del volumen del decodificador.

95

Page 96: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

void set_vol(byte vol)Establece el valor vol como volumen del decodificador. El mismo

volumen para ambos canales. Vol. máximo = 0; Vol. mínimo=255

void get_mp3_info()Lee la información los datos MP3 que se están siendo decodificados

actualizando las variables:● vs_bitrate: tasa de bit del flujo de datos MP3● vs_samplerate: frecuencia de muestreo.● vs_stereo: mono=0 estéreo=1● vs_min: minuto del flujo de datos que se está decodificando.● vs_seg: segundo del flujo de datos que se está decodificando.

void vs1001_PutBass(int1 actv)Si actv es 1 activa el Bass-Treble, si es 0 lo desactiva.

void vs1001_PutDiff(int1 actv)Si actv es 1 activa el modo diferencial (si el sonido es estéreo crea un

Virtual Surround), si es 0 lo desactiva.Tabla 4.6 Funciones SCI

4.3.3 Librería Multimedia Card

En la librería Multimedia Card se han implementado las funciones para el control a bajo nivel de la tarjeta de memoria. Estas funciones son principalmente de inicialización, configuración y lectura. No se han implementado las funciones de escritura ya que no se han utilizado en la realización del presente proyecto.

Como ya se indicó en el apartado anterior las tarjetas de memoria multimedia card pueden utilizar dos protocolos, el protocolo propio (modo Multimedia Card) y el SPI, compatible con las tarjetas Secure Digital. En este caso se ha optado por la utilización del protocolo SPI por su compatibilidad con las tarjetas Secure Digital y por ser de más fácil implementación ya que el microcontrolador posee un modulo SPI hardware. El modo de comunicación se establece durante la inicialización de la tarjeta. En la Imagen 4.4 puede verse la función de cada pin de la tarjeta dependiendo del modo de comunicación seleccionado.

96

Page 97: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 4.4 Pinout de la tarjeta MMC

En un mismo bus de MultimediaCard pueden conectarse hasta un máximo de 30 tarjetas de memoria, el método para seleccionar una tarjeta determinada depende del modo de comunicación seleccionado. En el modo MMC la tarjeta se selecciona mediante una dirección relativa (RCA, relative card address) que corresponde a un nombre único asignado a la tarjeta durante el proceso de identificación, y la tarjeta es seleccionada especificando su dirección relativa. En modo SPI cada tarjeta de memoria tiene un pin de selección de la tarjeta (CS, chip select), de esta forma una tarjeta se selecciona poniendo esta línea a nivel bajo. Para un dispositivo con gran número de tarjetas en un mismo bus sería preferible el uso del modo MMC, ya que sería necesario un gran número de líneas para controlar todas las tarjetas (una línea CS por tarjeta de memoria). En este caso, al controlarse únicamente una tarjeta, se considera más adecuado el uso el modo SPI ya que simplifica tanto la inicialización como la selección de la tarjeta.

Protocolo del bus

En la Imagen 4.5 se puede ver el diagrama esquemático del protocolo en cada modo. En modo MMC el interfaz consta de tres señales: reloj, comando y datos. La señal de reloj se utiliza para mantener la sincronización entre el sistema y la tarjeta, la señal de comando se usa para mandar comandos del microcontrolador a la tarjeta y devuelve la respuesta de la tarjeta, y la señal de datos se utiliza para leer y escribir datos de la tarjeta. Las señales de comando y datos son bidireccionales.

97

Page 98: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

En modo SPI el interfaz consta de cuatro señales: reloj, entrada de datos, salida de datos y selección del chip. El reloj, como en el modo MMC, se utiliza para mantener la sincronización entre el sistema y la tarjeta. La entrada de datos de utiliza para enviar comandos a la tarjeta y escribir datos, mientras que la salida de datos se utiliza para recibir la respuesta de la tarjeta y para leer datos. Las señales de entrada y salida de datos son unidireccionales. La señal de selección del chip se utiliza para seleccionar una tarjeta en particular cuando hay varias conectadas al bus.

Imagen 4.5 Diagramas de los protocolos MMC y SPI

Existen tres modos de transferencia: transferencia de solo un bloque, transferencia de múltiples bloques y transferencia en flujo. El modo MMC soporta los tres métodos de transferencia; mediante un comando se especifican el número de bloques a transferir, uno o más dependiendo si se utiliza el método de un solo bloque o múltiples. Para las transferencias en flujo no existe el concepto de bloque; se transfieren bytes hasta que la transferencia es detenida. A partir del estándar 3.1 de la MMCA (publicado en junio de 2001) el modo SPI soporta tanto transferencias de un solo bloque como múltiples, el tamaño del bloque se cambia de la misma forma que en modo MMC.

Existen un total de 59 comandos, aunque no todos funcionan en ambos modos. En la Tabla 4.7 se listan un conjunto de los comandos más usuales en modo SPI.

98

Page 99: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Comando Argumento Resp. Nombre Descripción

CMD0 No R1 GO_IDLE_STATE Resetea la tarjeta.Si CS está a nivel bajo la tarjeta entra en modo SPI

CMD1 No R1 SEND_OP_COND Activa el proceso de inicialización de la tarjeta.

CMD9 No R1 SEND_CSD Usado para leer la información CSD

CMD10 No R1 SEND_CID Usado para leer la información CID

CMD13 No R2 SEND_STATUS Lee la información del registro de estado.

CMD16 [31:0] Tamaño del bloque

R1 SET_BLOCKLEN Cambia el tamaño del bloque utilizado por los comandos CMD17 y CMD2439

CMD17 [31:0] Dirección R1 READ_SINGLE_BLOCK

Comando para leer datos de la tarjeta, empezando desde la dirección especificada como argumento, con un tamaño de bloque introducido por CMD16

CMD24 [31:0] Dirección R1 WRITE_BLOCK Escribe datos en la tarjeta, empezando desde la dirección especificada y con un tamaño de bloque introducido por CMD16

CMD32 [31:0] Dirección R1 TAG_SECTOR_STAR

Establece la dirección del primer sector del rango que se va a borrar

CMD33 [31:0] Dirección R1 TAG_SECTOR_END

Establece la dirección del último sector del rango que se va a borrar

CMD38 [31:0] No importa R1 EREASE Realiza el borrado en el rango especificado

CMD58 No R1 READ_OCR Lee el contenido del registro OCR

CMD59 [31:1] No importa[0:0] CRC

R1 CRC_ON_OFF Activa o desactiva la opción de CRC.Si CRC=1 se activaSi CRC=0 se desactiva

Tabla 4.7 Comandos más utilizados del protocolo SPI

En modo SPI la tarjeta puede devolver dos tipos de respuestas dependiendo del tipo de comando enviado: R1 y R2. El tipo de respuesta R2 es una respuesta de 16 bits que se devuelve después de un comando CMD13, y el tipo R1 es una respuesta de 8 bits que se devuelve después de cualquier otro tipo de comando. En Imagen 4.6 aparece la estructura de ambos tipos de respuesta.

39 Algunas tarjetas solo permiten tamaños de bloque de 512 bytes, por tanto solo se ha utilizado este tamaño de bloque.

99

Page 100: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 4.6 Estructura de las respuestas R1 y R2

Funciones de la librería

Comunicación básica

Toda la comunicación se basa en la función:

byte SPI(byte out)

Es la función más básica, que envía un byte por el puerto SPI del microcontrolador y devuelve la respuesta.

La segunda función básica de la librería de control de la tarjeta es:

byte MMCCommand(byte CMD, unsigned int16 AdrH, unsigned int16 AdrH, byte CRC)

Cada comando consiste en 48 bits (6 bytes) que comprenden un bit de inicio (siempre 0), un bit de transferencia (siempre 1), 6 bits indicando el comando, 4 bytes con los argumentos del comando, 7 bits de CRC y un bit de fin (siempre a 1). Esta función envía un comando a la tarjeta, de forma que 'CMD' es el primer byte enviado (que incluye el comando), 'AdrH' y 'AdrL' son los argumentos del comando, y 'CRC' es el último byte

100

Page 101: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

enviado (que incluye el CRC). La función devuelve una respuesta R1 de la tarjeta (para una respuesta R2 sería necesario hacer una llamada adicional a la función SPI). Si fuese necesario el envío o lectura de datos después de un comando, éste se haría mediante llamadas a la función SPI.

Inicialización

Antes de poder utilizar la tarjeta hay que inicializarla ya que inicialmente la tarjeta entra en modo MMC. En la Imagen 4.7 se puede ver un diagrama del proceso de inicialización utilizado en la función:

byte MMCInit()

Imagen 4.7 Diagrama de inicialización

101

Page 102: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

El proceso de inicialización es el siguiente:

1. Inicialmente se pone a nivel alto la señal CS, de forma que se desactiva la tarjeta.

2. Se envían 80 pulsos de reloj para la inicialización3. La señal CS se pone a nivel bajo.4. Se envía el comando CMD0 (GO_IDLE_STATE). La tarjeta aún está en

modo MMC y por tanto se ha de enviar el mensaje en este formato. En concreto se envía: 0x40, 0x00, 0x00 y 0x95, donde 0x40 es el comando y 0x95 el CRC.

5. A partir de este momento la tarjeta pasa a modo SPI y la respuesta está en formato R1. Esta respuesta debe ser 0x01, de lo contrario ha ocurrido un error y se debe comenzar de nuevo el proceso de inicialización.

6. Se desactiva y se vuelve a activar la señal CS.7. Se envía el comando CMD1 (SEND_OP_CMD) hasta que la respuesta sea

0x00. Se ha fijado un máximo de 128 intentos antes de dar error y por tanto reinicializar todo el proceso.

8. Se leen los registros CID, CSD y OCR mediante los comandos CMD10, CMD9 y CMD58 respectivamente. Se comprueban que las respuestas a estos comandos sean 0x00.

9. La tarjeta ya está inicializada en modo SPI correctamente. Se fija el tamaño del bloque de 512 bytes para posteriores lecturas/escrituras mediante el comando CMD16.

Configuración

Durante la inicialización se configura la tarjeta de memoria de forma que pueda ser leída y escrita mediante en modo SPI. La única configuración adicional necesaria que se ha de efectuar después de esta inicialización es la modificación del tamaño del bloque, si dicha modificación fuese necesaria. Para este propósito se ha implementado la función:

void MMCSetDataMode(byte bytes)

Donde 'bytes' es el tamaño del bloque en bytes, que por defecto después de la inicialización es 512. Es importante tener en cuenta que algunas tarjetas de memoria solo soportan escrituras con un tamaño de bloque de 512 bytes, por lo que esta función no tendría efecto. Para fijar el tamaño del bloque se hace una llamada al comando CMD16 (SET_BLOCK_LENGTH).

Lectura

Se han implementado tres funciones de lectura: para leer un byte, dos bytes y un bloque de datos. Esto se ha hecho así para optimizar el código de forma que se llame a una u otra función dependiendo de lo que se quiera leer y acelerando la ejecución del código en algunas partes críticas obteniendo mejores tasas de transferencia. Las funciones son:

102

Page 103: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

byte LeeChar(int32 dir) int16 LeeInt16(int32 dir) int MMCLeeBloque(int32 dir, byte *Gbuffer)

Las dos primeras funciones fijan un tamaño de bloque de 1 y 2 bytes respectivamente haciendo una llamada a la función MMCSetDataMode, realizan la lectura de los datos en la posición 'dir' mediante el comando CMD17 (READ_SINGLE_BLOCK) y restauran el tamaño del bloque con el valor inicial. La función MMCLeeBloque lee mediante el comando CMD17 un bloque de datos con el tamaño que haya fijado antes de la llamada a la función y escribe los datos en 'Gbuffer'.

Escritura

Aunque finalmente no ha sido necesario el uso de la escritura en la tarjeta de memoria en este proyecto, se ha implementado una función de escritura de bloque para facilitar la adición de futuras funcionalidades. La función es:

int MMCGrabaBloque(int32 dir, byte *Gbuffer)

Escribe en la dirección 'dir' desde 'Gbuffer' tantos bytes como el tamaño del bloque definido en ese momento. Para ello hace uso del comando CMD24 (WRITE_BLOCK), posteriormente se envía un token inicio de bloque y los datos a escribir. La función devuelve 0 si ha habido algún error, de lo contrario devuelve 1.

4.3.4 Librería FAT16

Para almacenar los archivos mp3 en la tarjeta de memoria es necesario una estructura mediante la cual se organice la información almacenada. El sistema de archivos es el responsable de la organización de los datos en una unidad de almacenamiento. Se ha elegido el uso del sistema de archivos FAT16 ya que es el más utilizado en las tarjetas de memoria y los dispositivos que las utilizan, por tanto la tarjeta podrá ser utilizada y leída en diferentes dispositivos.

No obstante el sistema de archivos FAT16 tiene una serie de limitaciones que hay que tener en cuenta, éstas son:

● 65517 archivos como máximo. ● 512 archivos como máximo en el directorio raíz. ● Nombres de archivos de 8+3 caracteres (sin uso del sistema de nombres

largos) ● Tamaño máximo del volumen de 2 GB (4 GB con tamaño del cluster de

64 KB).

Estas limitaciones no son un inconveniente en este proyecto, siempre y cuando no se quieran usar tarjetas de memoria de más de 2 GB. En la Tabla 4.8 podemos ver una comparación de los distintas versiones de FAT.

103

Page 104: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

FAT12 FAT16 FAT32

Máximo tamaño de archivo

32 MB 2 GB 4 GB

Número máximo de archivos

4,077 65,517 268,435,437

Longitud máxima del nombre de archivo

8.3 8.3 (Sin LFN) 255 usando LFN

Tamaño máximo de volumen

32 MB 2 GB (4GB con clusters de 64KB)

8 TB

Tabla 4.8 Comparación de las versiones de FAT

Estructura de FAT16

La estructura del sistema de archivos FAT16 se detalla en el apéndice II.

Funciones de la librería

En la librería de funciones para el acceso al sistema de archivos las funciones se pueden clasificar en cuatro tipos: función de inicilización, funciones de acceso a bajo nivel, funciones de acceso a alto nivel, funciones de lectura de MP3. En las funciones de acceso a bajo nivel se trabaja directamente con posiciones de memoria y números de cluster, mientras que las de acceso a alto nivel se simplifica el acceso al sistema de archivos de forma que se utilizan manejadores para abrir, leer y cerrar archivos. Las funciones de lectura de MP3 son una versión modificada de las funciones de lectura de archivos de forma que aumente la velocidad de lectura y se puedan reproducir MP3 de tasas de bit altos.

Inicialización

La función de inicialización void MMCFat16_Ini() se encarga de buscar en la memoria la primera partición a partir del MBR, obtener datos necesarios para el acceso al contenido de la partición (sectores por FAT, sectores por cluster, bytes por cluster, etc) y de localizar la tabla FAT (se utiliza la primera), el directorio raíz y el área de datos. Estos datos se introducen en variables globales que posteriormente utilizará el resto de funciones de la librería.

Acceso a bajo nivel

int1 IsRegValido(int32 dir)

El valor 'dir' es la dirección absoluta de una entrada dentro de un directorio (el directorio raíz o cualquiera de sus subdirectorios). La función devuelve '1' si se trata de una entrada válida (que este en uso y no borrada), de lo contrario devuelve '0'.

104

Page 105: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

int1 IsFichero(int32 dir)

La función IsFichero es similar a IsRegValido, 'dir' ha de ser la dirección absoluta de una entrada dentro de un directorio. En este caso la función comprueba si la entrada es de un archivo, devolviendo '1' en caso de que lo sea o '0' en caso de que sea una entrada no válida o un directorio.

int16 NextCluster(int16 cluster)

Esta función comprueba en la tabla FAT cual es el siguiente cluster al cluster pasado, y lo devuelve .

int32 MMCDirFromCluster(int16 cluster)

La función MMCDirFromCluster devuelve la dirección absoluta del cluster pasado como parámetro.

int32 MMCFileSize(int32 dir)

El parámetro 'dir' de la función MMCFileSize es la dirección absoluta de una entrada dentro de un directorio correspondiente a un archivo. La función devuelve el tamaño de dicho archivo.

int16 MMCFirstCluster(int32 dir)

El parámetro 'dir' de la función MMCFirstCluster es la dirección absoluta de una entrada dentro de un directorio correspondiente a un archivo. La función devuelve el primer cluster donde se almacenan los datos de dicho archivo.

void MMCFileName(int32 dir, byte *nombre)

El parámetro 'dir' de la función MMCFileName es la dirección absoluta de una entrada dentro de un directorio correspondiente a un archivo. La función escribe en 'nombre' el nombre completo (extensión incluida) de dicho archivo.

void MMCFileNameNoExt(int32 dir, byte *nombre)

El parámetro 'dir' de la función MMCFileNameNoExt es la dirección absoluta de una entrada dentro de un directorio correspondiente a un archivo. La función escribe en 'nombre' el nombre de dicho archivo sin la extensión.

105

Page 106: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

void MMCFileExt(int32 dir, byte *ext)

El parámetro 'dir' de la función MMCFileNameNoExt es la dirección absoluta de una entrada dentro de un directorio correspondiente a un archivo. La función escribe en 'ext' la extensión de dicho archivo.

Acceso a alto nivel

Para la navegación entre directorios, listado de archivos en directorios y lectura de archivos se han implementado funciones que usan manejadores que hacen referencia a un archivo o directorio determinado. La librería permite la apertura simultanea de varios archivos y directorios, identificando cada uno de ellos mediante un manejador que hace referencia a una estructura de datos.

La estructura de datos del manejador de archivos es la siguiente:

typedef struct { int16 Root_cluster; //Primer Cluster int16 Current_Cluster; //Cluster actual int16 Next_Cluster; //Siguiente cluster int32 Cluster_Offset; //Desplazamiento desde el inicio del cluster int32 Current_Addrs; //Posicion actual en el archivo int32 Size; //Tamanyo del fichero int32 Read; //Bytes leidos (posicion logica en el fichero) int32 dir_addr; //Direccion de la entrada del archivo byte usado; //Si el manejador esta siendo usado o no } TFHandle;

La estructura de datos del manejador de directorios es la siguiente:

typedef struct { int32 direccion; //Direccion del inicio del directorio int32 dirpadre; //Direccion del directorio padre int16 rootcluster; //Primer cluster int32 cursor; //Indica la posicion actual en el directorio byte usado; //Si el manejador esta siendo usado o no} TDHandle

TFHandle Fhandle[MAX_FILES];TDHandle DHandle[MAX_DIR];

Se definen dos vectores, uno de cada tipo, de forma que el manejador del archivo o directorio es el índice del vector donde se encuentran los datos de ese archivo o directorio, y donde el tamaño del vector determina el número de archivos o directorios que pueden estar abiertos de forma simultánea:

byte MMCOpenFile(int32 dir)

La función MMCOpenFile abre un archivo y devuelve el manejador de este. El parámetro 'dir' es la dirección absoluta de la entrada del archivo a abrir dentro de un directorio.

106

Page 107: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

byte MMCResetFile(byte hand)

La función MMCResetFile pone el cursor de lectura del archivo especificado por el manejador 'hand' al principio del archivo. Devuelve '0' si el manejador corresponde a un archivo no abierto y '1' si se la operación ha tenido éxito.

void MMCCloseFile(byte hand)

La función MMCCloseFile cierra el archivo al que hace referencia el manejador 'hand'.

byte MMCReadFile(byte hand, byte *Gbuffer)

La función MMCReadFile lee tantos bytes como estén definidos como tamaño de bloque de la tarjeta (normalmente se utilizan 512 bytes) del archivo al que hace referencia el manejador 'hand' a partir del cursor de lectura del archivo (lectura secuencial), y los escribe en 'Gbuffer'. Esta función hace que el cursor de lectura del archivo avance tantos bytes como han sido leidos.

Si se observa la estructura de datos del manejador de archivos, no existe ningún parámetro 'cursor' propiamente dicho. Este se calcula a partir del valor de los parámetros 'Current_Cluster' y 'Cluster_offset'.

byte MMCReadFilePos(byte hand, byte *Gbuffer, int16 size, int32 ini)

La función MMCReadFilePos lee los bytes indicados por el parámetro 'size' (máximo 512) del archivo que hace referencia el manejdor 'hand'. La lectura comienza en la posición del archivo indicada por el parámetro 'ini', y los escribe en 'Gbuffer'. La función devuelve '0' si se ha efectuado correctamente, '2' si el número de bytes a leer es superior a 512, '3' si la posición de inicio de lectura 'ini' más el número de bytes a leer supera el tamaño del archivo, y '1' si ha habido un error durante la lectura. Esa función afecta a la posición del cursor de lectura del archivo que se posiciona después del último byte leído.

byte MMCOpenDir(int32 dir, int32 dir_padre)

La función MMCOpenDir abre un directorio y devuelve el manejador. El parámetro 'dir' es la dirección absoluta de la entrada del directorio (al igual que en era la dirección de la entrada del archivo). El parámetro 'dir_padre' es la dirección de la entrada del directorio padre.

byte MMCResetDir(byte dHand)

La función MMCResetDir pone en la posición inicial el cursor del directorio al que hace referencia el manejador 'dHand'. El cursor se utiliza para obtener cada una de las

107

Page 108: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

entradas dentro de un directorio de forma secuencial mediante llamadas a las funciones MMCNextReg o MMCNextFile.

void MMCCloseDir(byte dHand)

La función MMCCloseDir cierra el directorio al que hace referencia el manejador 'hand', liberando recursos para que se puedan abrir más directorios.

int32 MMCDirectoryDir(byte dHand)

La función MMCDirectoryDir devuelve la dirección de la entrada del directorio al que hace referencia el manejador 'dHand'.

int32 MMCNextReg(byte dHand)

La función MMCNextReg devuelve la dirección de la entrada válida al que apunta el cursor y avanza el cursor una posición. Esta función se utiliza para listar de forma secuencial las entradas válidas dentro de un directorio.

int32 MMCNextFile(byte dHand)

La función MMCNextFile es similar a MMCNextReg. En este caso se devuelve la primera entrada válida que sea un archivo, saltándose los directorios. Tras la llamada el cursor se sitúa después de la entrada del archivo devuelto.

int32 MMCGetEntryPosition(byte dHand, int16 pos)

La función MMCGetEntryPosition devuelve la dirección absoluta de la entrada válida 'pos' dentro del directorio al que hace referencia 'dHand'. La función únicamente tiene en cuenta entradas válidas dentro del directorio, por tanto el directorio deberá tener, al menos, tantas entradas validas como indique el parámetro 'pos'.

Funciones de lectura de MP3

Para la reproducción de los archivos MP3 es necesario optimizar las funciones de lectura. Por ello se han implementado tres funciones que no utilizan manejador y son especificas para la función encargada de leer el flujo de datos MP3 y enviarlo a decodificador. Las funciones son:

void MMCOpenMP3File(int32 dir)int16 MMCReadMP3File1(byte *Gbuffer)byte MMCReadMP3File2(int16 offset)

La función MMCOpenMP3File es muy similar a la función MMCOpenFile pero no devuelve ningún manejador, éste es interno, ya que no se puede abrir más de un archivo simultáneo para ser usado con estas funciones. Una vez abierto el archivo se utilizan las funciones MMCReadMP3File1 y MMCReadMP3File2 para efectuar las lecturas. El

108

Page 109: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

funcionamiento de estas funciones es muy similar al de MMCReadFile, pero en este caso las operaciones que realizan las funciones se han dividido en dos. La primera función realiza la lectura de los datos del archivo MP3 abierto, los escribe en 'Gbuffer' y devuelve la posición relativa del cursor dentro del cluster que está leyendo. La segunda función ha de ser llamada siempre después de la primera pasándole como parámetro el 'offset' devuelto por la primera. Esta función realiza todos los cálculos necesarios para determinar si se ha alcanzado el final del archivo, si se ha alcanzado el final del cluster, determinar cuál es el siguiente cluster, etc. El funcionamiento de estas funciones es el siguiente:

1. Se abre el archivo MP3 a reproducir con la función MMCOpenMP3File.2. Se hace una llamada a la función MMCReadMP3File1.3. Se envían al decodificador de MP3 una parte de los datos leídos, lo que

permite tenerlos en el buffer de lectura del decodificador y empezar su reproducción.4. Se hace una llamada a la función MMCReadMP3File2 pasándole como

parámetro el resultado devuelto por MMCReadMP3File1 para finalizar los cálculos necesarios para la próxima lectura.5. Se envía el resto de datos leidos al decodificador.6. Ya se puede empezar otro ciclo de lectura (paso 2).

Gracias a esta división de la función de lectura se evita que se vacíe el buffer de reproducción del decodificador mientras se realizan los cálculos necesarios para las próximas lecturas.

4.3.5 Librería de la pantalla LCD

Se ha utilizado una pantalla LCD gráfica monocromo de 84x48 píxeles que utiliza un controlador Phillips PCD8544. Esta pantalla se utiliza en teléfonos móviles Nokia 3310 y son económicas y relativamente sencillas de conseguir. El interfaz de comunicación consta de 5 líneas, que pueden verse en la Tabla 4.15.

Nombre Descripción

SCLK Reloj para el bus de datos SDIN

SDIN Entrada de datos

D/C Selección dato/comando

SCE Selección del chip (chip select)

RES ResetTabla 4.15 Líneas de comunicación de la pantalla LCD

Estructura de la memoria

El controlador se compone de una memoria RAM interna (DDRAM, Display Data Ram) donde se almacenan los datos que son mostrador por la pantalla LCD. La memoria se divide en 6 bancos de 84 bytes cada uno (6 x 8 x 84 bits). El controlador refresca continuamente la pantalla con el contenido de la memoria DDRAM de forma que cada bit de la memoria es un pixel en la pantalla, dependiendo de si está configurada en modo normal o inverso un bit a '1' corresponderá a un pixel encendido o apagado. En la

109

Page 110: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 4.10 puede verse como se mapean los datos contenidos en la memoria DDRAM en la pantalla.

El direccionamiento dentro de la memoria se realiza mediante un puntero con dos direcciones; una dirección X cuyo rango es de 0 a 83 y corresponde a las comunas, y una dirección Y cuyo rango es de 0 a 5 y corresponde a los bancos (grupos de 8 filas). En modo de direccionamiento vertical después de cada byte la dirección Y del puntero se incrementa, después de la última dirección de Y (Y=5), Y vuelve a la posición 0 y X se incrementa. En el modo de direccionamiento horizontal ocurre de una forma similar, después de cada byte se incrementa X, cuando X alcanza su límite vuelve a la posición 0 y se incrementa Y. Cuando el puntero supera el último byte (X=83, Y=5) vuelve a la posición (0,0).

Imagen 4.10 Mapeo de la memoria DDRAM en la pantalla. Extraído de las especificaciones del controlador PCD8544.

Comunicación

En la comunicación entre el microcontrolador y el controlador de la pantalla LCD se pueden distinguir dos tipos de instrucciones: si la línea D/C está a nivel bajo el byte enviado por la línea SDIN es interpretado como un comando. Si la línea D/C está a nivel alto los datos enviados por SDIN se escriben en la memoria DDRAM del controlador. Después de cada escritura en la memoria el puntero es incrementado automáticamente. El nivel de la línea D/C es leído durante el último bit del byte de datos enviado por SDIN.

El interfaz serie se inicializa cuando la línea SCE está a nivel alto, y se habilita en el flanco de bajada de esta, indicando el comienzo de una transmisión de datos. Primero se transmite el bit más significativo de cada byte, y las instrucciones pueden enviarse en

110

Page 111: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

cualquier orden. El valor de la línea SDIN es capturado en los flancos de subida de la señal de reloj SCLK. En la Tabla 4.16 se muestra el juego de instrucciones.

Instrucción D/C Comando

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

Descripción

H=0 o 1

NOP 0 0 0 0 0 0 0 0 0 No operación

Juego de instrucciones

0 0 0 1 0 0 PD V H PD: Control de apagadoV: Direccionamiento verticalH: Juego extendido de instrucciones.

Escribir dato 1 D7 D6 D5 D4 D3 D2 D1 D0 Escribe el byte en la DDRAM

H=0

Reservado 0 0 0 0 0 0 1 x x Reservados

Control LCD 0 0 0 0 0 1 D 0 E Pone la configuración del LCD

Reservados 0 0 0 0 1 x x x x Reservados

Pone dirección Y de DDRAM

0 0 1 0 0 0 Y2 Y1 Y0 Pone la dirección Y del puntero0 ≤ Y ≤ 5

Pone dirección X de DDRAM

0 1 X6 X5 X4 X3 X2 X1 X0 Pone la dirección X del puntero0 ≤ x ≤ 83

H=1

Reservados 0 0 0 0 0 0 0 0 1 Reservados

0 0 0 0 0 0 0 1 x Reservados

Control de temperatura

0 0 0 0 0 0 1 TC1 TC0 Pone el coeficiente de temperatura

Reservados 0 0 0 0 0 1 x x x Reservados

Sistema bias 0 0 0 0 1 0 BS2 BS1 BS0 Pone el valor al sistema bias

Reservados 0 0 1 x x x x x x Reservados

Fija el Vop 0 1 Vop6 Vop5 Vop4 Vop3 Vop2 Vop1 Vop0 Fija el valor de VopTabla 4.16 Juego de instrucciones de la pantalla LCD

Las instrucciones 'Juego de instrucciones' y 'Control LCD' permiten fijar el valor de varios registros:

● PD: '0'=> chip activo; '1'=> chip en modo 'apagado'.● V: '0'=> direccionamiento horizontal; '1'=> direccionamiento vertical.● H: '0'=> juego de instrucciones básico; '1'=> instrucciones extendidas.● D y E: 00 pantalla en negro; 10 modo normal; 01 todos los segmentos

encendidos; 11 modo de vídeo inverso.

La instrucción 'Control de temperatura' fija el coeficiente del control de temperatura, que controla la tensión de alimentación del LCD en función a la temperatura. Las funciones para fijar el valor de bias y Vop (tensión operacional) sirven para el control de la tensión del LCD y su contraste. En la Imagen 4.11 se puede ver el diagrama de tiempos del envío de un byte.

111

Page 112: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 4.11 Diagrama de tiempos del envío de un byte

Inicialización

Después de encender la pantalla LCD el valor de los registros y la memoria no están definidos y se debe resetear el controlador. El reset fija unos valores determinados en los registros, pero el contenido de la memoria continúa siendo indeterminado. Por tanto, después de establecer los valores de tensión operacional, bias y modo horizontal o vertical, se ha de realizar un borrado de la pantalla. El proceso de inicialización utilizado es el siguiente:

1. Reset del controlador2. Envío de instrucción para activar el juego de comandos extendidos.3. Se define Vop4. Se define el valor bias5. Se selecciona el modo horizontal o vertical (en este caso horizontal)6. Se enciende el display (comando 0x09)7. Se borra la memoria DDRAM.8. Se sitúa el puntero en la posición inicial (0,0).

Funciones de la librería

Existen dos funciones internas de la librería, que se han implementado para ser utilizadas por otras funciones de la librería y no externamente. Estas son:

void LCD_write_command(byte cmd)void LCD_write_data(byte data)

Ambas funciones son similares, envían el byte que se les pasa como parámetro, en el caso de LCD_write_command la línea D/C se pone a nivel bajo para indicar que se trata de un comando, y en LCD_write_data a nivel alto. El resto de funciones, que hacen uso de estas, son:

void LCD_Init()

Función de inicialización del controlador de la pantalla LCD. Sigue el algoritmo de inicialización descrito anteriormente.

112

Page 113: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

void LCD_gotoxy(byte x_pos, byte y_pos)

Esta función establece la posición del puntero de escritura de la memoria DDRAM en la posición X='x_pos' y Y='y_pos'.

void LCD_clean_ddram()

La función LCD_clean_ddram borra el contenido de la memoria DDRAM poniéndola a '0'.

void LCD_char(byte caracter)

El controlador no dispone de una tabla de caracteres, por tanto se han definido dos vectores que contienen los caracteres alfanuméricos tanto en mayúsculas como en minúsculas ('ñ' incluida). Están descritos por un conjunto de 5 bytes cada uno que definen su representación gráfica como una matriz de 5x8 (en realidad cada carácter es una matriz de 5x7, la última fila de deja en blanco para separar líneas de caracteres). El parámetro 'caracter' es el carácter en formato ASCII que es transformado al índice del vector donde se almacena su representación, la cual se envía al controlador LCD para que la escriba en la memoria DDRAM en la posición en la que se encuentre el puntero en ese momento.

void LCD_write_minnum(byte numero)

La función LCD_write_minnum es similar a LCD_char. En este caso la función escribe únicamente números utilizando una fuente más pequeña, de 4x7 píxeles por número.

void LCD_bitmap(byte posx, byte posy, byte x_size,byte y_size, byte logini)

Además del vector de caracteres se ha definido un vector de imágenes. La función LCD_bitmap escribe en la posición X='posx' Y='posy' la imagen situada en el vector en la posición 'logini' y con un tamaño 'x_size' x 'y_size'.

void LCD_icon(byte x, byte y, byte num)

La función LCD_icon es similar a LCD_bitmap, en este caso se utiliza un vector de iconos con un tamaño predefinido de 12x8 pixels. Los parámetros 'x' e 'y' son la posición en la que se escribirán los datos y 'num' el índice dentro del vector de iconos.

113

Page 114: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

4.3.6 Librería USB

Como se comentaba en el capítulo del desarrollo hardware, el módulo USB consta de un bus de 8 Bits y varias líneas de comunicación, de las cuales se han utilizado las siguientes:

RXF# (salida): Cuando está a nivel bajo al menos un byte está esperando en el buffer de bytes recibidos del modulo USB a ser leídos por el microcontrolador. Está a nivel alto si el buffer está vacío.

TXE# (salida): Cuando está a nivel alto indica que el buffer de transmisión está lleno, por tanto debe esperarse antes de escribir nuevos datos.

WR (entrada): Cuando se pasa de nivel alto a bajo el módulo USB lee los 8 bits de la línea de datos y mete el byte en el buffer de transmisión. Los datos del buffer de transmisión son transmitidos al ordenador en el periodo de tiempo determinado por el timeout del buffer de transmisión (configurable de 1 a 255ms)

RD# (entrada): Al ponerlo a nivel bajo el primer byte del buffer de recepción se pone en las líneas de datos. Cuando se pasa de nuevo a nivel alto las líneas de datos se ponen en estado de alta impedancia.

SLEEP (Salida): Corresponde al pin PWREN# del chip, se pone a nivel bajo después del proceso de enumeración del dispositivo. Sirve para controlar la alimentación del dispositivo y detectar su enumeración por parte del host.

Las funciones desarrolladas en la librería USB son muy básicas y se encargan de la inicialización, comprobación del estado del módulo USB y transmisión de bytes. Son las siguientes:

void Ini_USB()

Inicializa los registros internos del microcontrolador para usar las líneas de comunicación con el módulo USB de forma correcta.

int1 isUSBEnumerado()

La función devuelve '1' si el módulo USB esta conectado a un host (ordenador) y ha sido enumerado por éste, y de lo contrario devuelve '0'.

int1 HayDatosUSB()

La función devuelve '1' si existen datos para ser leídos en el buffer del módulo USB, y de lo contrario devuelve '0'.

void clear_USB_outbuffer()

La función clear_USB_outbuffer limpia el buffer de lectura del módulo USB.

114

Page 115: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

void put_USB(byte data)

Envía el byte 'data' al módulo USB (para ser transmitido al ordenador).

byte get_USB()

La función get_USB lee y devuelve un byte del buffer de lectura del módulo USB, si el buffer está vacío se espera hasta que se recibe al menos un byte.

byte get_USB_timer(byte timeout)

La función get_USB_timer es muy similar a get_USB, en este caso si el buffer está vacío se espera un tiempo fijado por el parámetro 'timeout' (timeout/10 ms), si en este tiempo el módulo no ha recibido ningún byte la función devuelve 0xFF y pone la variable de error (TimeOutError) a '1'.

void USB_EnviaBloque(int16 nBytes, byte *datos)

La función USB_EnviaBloque envía al módulo USB tantos bytes como indica el parámetro 'nBytes' de la variable 'datos'.

4.3.7 Lectura de ID3v1 y ID3v2

El formato de audio MP3 no dispone de forma nativa de ninguna forma de almacenar información sobre su contenido. El formato ID3 es un sistema muy popular y utilizado de etiquetas que se almacenan en los archivos de audio MP3 añadiendo información sobre estos, como el título de la canción, artista, año, género, etc. Existen diferentes versiones de ID3 compatibles entre sí, de forma que un mismo archivo MP3 puede contener etiquetas de la versión 1.1 y de la versión 2.0.

Existen dos versiones principales del formato ID3: la versión ID3v1 (la última especificación es la 1.1 que añade a la 1.0 información del número de pista) que almacena la información al final del archivo, y la versión ID3v2 (actualmente la última especificación es la 2.4) que almacena la información al inicio del archivo.

Se han implementado dos funciones para leer parte de la información contenida en las etiquetas ID3 (si están presentes) para ser posteriormente mostrada por pantalla. La información leída es el título, autor y álbum de la canción. Las funciones son:

int ID3v1(byte hand)int ID3v2(byte hand)

La primera función lee la información de la etiqueta ID3v1, y la segunda de la etiqueta ID3v2 sin cabecera extendida. Las funciones devuelven '1' si se ha podido leer la etiqueta correctamente y de lo contrario devuelven '0'. El parámetro hand es el manejador del archivo MP3. Los datos leídos se guardan en variables globales que hacen referencia al MP3 en uso. A continuación se realiza una pequeña explicación de ambas versiones.

115

Page 116: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

ID3v1

La etiqueta ID3v1 se almacena en los últimos 128 bytes de los archivos MP3. Al ser una etiqueta de tamaño fijo y reducida, la información que almacena es básica y no permite añadir nuevos elementos. En la Tabla 4.17 puede verse la composición de la etiqueta ID3v1.

Tamaño Contenido

3 Bytes “TAG”

30 Bytes Título de la canción

30 Bytes Artista

30 Bytes Álbum

4 Bytes Año

30 Bytes Comentarios (en la versión 1.1 el último byte es el número de pista)

1 Byte Género (índice de una lista de 80 géneros)Tabla 4.17 Estructura de la etiqueta ID3v1

ID3v2

Debido a las limitaciones de las versiones 1.x (longitud de etiquetas insuficiente, uso únicamente de caracteres ASCII, número de etiquetas insuficiente, etc.) se ha desarrollado una nueva versión que aporta mucha más flexibilidad. Las mejoras más significativas son:

Utilización de carácteres unicode. Etiquetas al inicio del archivo, lo que facilita su difusión mediante streaming ya

que no es necesario descargarlo completamente. No hay restricciones respecto a la longitud de las etiquetas (existe una

restricción máxima de 16 MB por marco y 256 MB en total). Es posible incluir elementos no textuales, como imágenes. Se pueden incluir etiquetas definidas por el usuario. Contiene un “esquema de desincronización” que evita que el decodificador

intente reproducirla. Soporta información encriptada.

La etiqueta ID3v2 esta compuesta por una cabecera, un cuerpo y un conjunto de marcos, y cada marco contiene una cabecera y uno o más campos de datos. Es un sistema relativamente complejo y por tanto no se van a explicar aquí los detalles de su estructura. La función implementada comprueba la existencia de la etiqueta (“ID3” en los primeros bytes) y busca la información de título, artista y álbum en el primer marco.

116

Page 117: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

4.3.8 Funciones de visualización de datos y menú

Se trata de un conjunto de funciones que hacen uso de la librería de la pantalla LCD y la librería FAT16 para mostrar los datos del archivo en reproducción, así como también menús que permiten la navegación por el árbol de directorios y la selección de diversas opciones.

Visualización de datos

Son las funciones que muestran en pantalla los datos del MP3 en reproducción. Las funciones de visualización de datos son:

LCD_StLogo: Muestra el icono con la información del tipo de audio (estéreo, mono, virtual surround, diferential)LCD_ArtistScroll: Muestra en la pantalla el nombre del autor extraído del MP3 en modo scroll.LCD_Volume: Muestra las barras del volumen actual.LCD_Play_Data: Muestra el icono MP3 en la pantalla, si está activado el modo de realce de bajos y el tiempo de reproducción.

Funciones básicas de menú

Existen dos menús distintos, el de navegación por el árbol de directorios y el de funciones. Ambos menús tienen funciones en común: mostrar un listado de elementos y recorrerlo. Así que se han implementado las siguientes funciones básicas de menú:

Ini_Menu: Inicializa el sistema de menú.AddList: Se le pasa un elemento con un nombre e icono para que sea añadido a la lista.Reset_Menu: Resetea el menú (borra sus elementos)NextMenu: Selecciona el siguiente elemento dentro del menú.PrevMenu: Selecciona el anterior elemento dentro del menú.ShwoMenu: Muestra el menú en pantalla.

Las funciones utilizan una estructura de datos global que puede ser leída por el programa principal para pasarles datos o averiguar cual es el elemento seleccionado. El modo de funcionamiento de las funciones es el siguiente:

1. Se inicia el sistema de menús llamando a la función Ini_Menu.2. Se añaden los elementos del menú a la lista (un máximo de 5)3. Se llama a la función ShowMenu para mostrar el menú en pantalla.4. Se efectúan las llamadas a NextMenu o PrevMenu según los botones

presionados por el usuario.5. Se lee el elemento seleccionado.6. Para mostrar otro listado se llama a la función ResetMenu y se pasa al paso 2.

117

Page 118: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Navegación por el árbol de directorios

Estas funciones hacen uso de las funciones de menú básicas para mostrar en pantalla el listado de directorios y archivos de la tarjeta de memoria y permiten la navegación por la estructura de directorios de esta. Las funciones son las siguientes:

MenuListaDir: Inicia el menú listando los archivos y directorios de un directorio determinado.FilesToMenu: Añade un archivo o directorio al listado (usado por MenuListaDir).FicheroSiguente: Selecciona el siguiente archivo o directorio del listado.FicheroAnterior: Selecciona el anterior archivo o directorio del listado.MenuEntrar: Si el elemento seleccionado es un directorio entra dentro de él, listando su contenido en el menú. Si es un archivo MP3 lo selecciona como el archivo activo y envía el comando CMD_PLAY al bucle principal.

Menú de opciones

Al igual que el menú de navegación, el menú de opciones utiliza las funciones básicas del menú para listar distintas opciones de reproducción que se pueden activar o desactivar. Las funciones son las siguientes:

MenuOpciones: Inicia el menú listando las opciones posibles.OpcionSiguente: Selecciona la opción siguiente.OpcionAnterior: Selecciona la opción anterior.OpcionesEntrar: Activa o desactiva la opción seleccionada, según sea el caso.

4.4 Protocolo de comunicación Reproductor-PC

4.4.1 Introducción

Para poder controlar el reproductor desde un ordenador y poder realizar diferentes funciones como la transferencia de archivos o la reproducción remota, se ha definido un protocolo de comunicación sobre el interfaz USB. Cuando el reproductor está conectado al ordenador mediante USB y en este se está ejecutando la aplicación de control del reproductor, el reproductor entra en un estado en el que es completamente controlado por la aplicación mediante un conjunto de comandos.

La comunicación en el lado del reproductor hace uso de la librería de USB descrita en el apartado anterior. En el lado del ordenador, la aplicación hace uso de los controladores suministrados por FTDI Chip para la comunicación con el reproductor mediante el módulo USB.

118

Page 119: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

4.4.2 Sistema de mensajes

La comunicación entre el reproductor y el ordenador se basa en un intercambio de mensajes. Es la aplicación en el ordenador la que toma el control en la comunicación y se encarga de enviar los mensajes, denominados comandos, a los que el reproductor debe responder. El reproductor efectúa la acción definida por el comando recibido y devuelve una respuesta al ordenador.

Estructura de los mensajes

Los mensajes enviados desde el ordenador al reproductor se denominan comandos. Las estructura de los comandos consta de tres partes: un byte que define el tipo de comando, un byte que define el comando y unos parámetros que dependen del comando en cuestión. En la Imagen 4.12 puede verse esta estructura.

Imagen 4.12 Estructura del mensaje

La respuesta a los comandos enviados por la aplicación pueden ser mensajes de respuesta simples consistentes en un byte (mensaje ACK o mensajes de error) o pueden ser mensajes más elaborados, correspondientes a respuestas de petición de información, como por ejemplo el listado de archivos de un directorio. Estos mensajes más elaborados constan de un byte indicando el tipo de mensaje y un conjunto de datos correspondientes a la información pedida por el comando. Algunos comandos pueden necesitar de más de un mensaje de respuesta, ésto dependerá del comando en cuestión.

Tipos de comandos y mensajes

Los comandos se han dividido en cuatro tipos dependiendo de su naturaleza:

Comandos de navegación: son comandos utilizados para navegar por la estructura de directorios del la memoria MMC y enviar archivos del reproductor al ordenador.

Comandos de control: se utilizan para controlar algunos parámetros del reproductor.

Comandos de reproducción: se utilizan para controlar la reproducción remota de archivos MP3.

Comandos para el decodificador: se trata de comandos que envían información directamente al decodificador de MP3.

En la Tabla 4.18 se listan todos los comandos y mensajes de los que hace eso el protocolo de comunicación.

119

Page 120: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Nombre Código hexadecimal

Explicación

USB_NULL 0x00 Comando nulo, no realiza ninguna acción.USB_PC_PRESENT* 0x01 Comando de inicialización que envía el PCUSB_USB_PRESENT* 0x02 Comando de inicialización que envía el dispositivo USBUSB_PC_ASKINI* 0x03 Petición de inicialización por parte del PC

USB_TCMD_DEBUG* 0x10 Después va una cadena terminada en NULLUSB_TCMD_DIR* 0x11 Comandos de directorioUSB_TCMD_OP* 0x12 Comandos de configuraciónUSB_TCMD_PLAY* 0x13 Comandos de reproducciónUSB_TCMD_VS* 0x14 Comandos para el control a bajo nivel del chip MP3USB_TCMD_LCD* 0x15 Comandos para el control a bajo nivel del LCD

USB_DIR_GOTO_ROOT 0x20 Ir al directorio rootUSB_DIR_GOTO 0x21 Ir a el directorio especificadoUSB_DIR_LIST 0x22 Pide el listado del directorio actualUSB_DIR_FILE 0x23 Cada uno de los elementos de un directorioUSB_DIR_ENDDIR 0x24 Indica la finalización del listado del directorioUSB_DIR_GET 0x25 Pide obtener un archivoUSB_DIR_GETDATA 0x26 Manda paquetes de datos del archivoUSB_DIR_ENDGET 0x27 Indica que ha finalizado la transmisión del archivoUSB_DIR_STOPGETDATA 0x28 Interrumpe el envío de archivos

USB_OP_RESET 0x30 Resetea el dispositivoUSB_OP_SETVOL 0x31 Modifica el volumenUSB_OP_GETVOL 0x32 Obtiene los valores de volumen

USB_PLAY_PLAY 0x40 Reproduce el archivo indicadoUSB_PLAY_PAUSE 0x41 Pausa el archivo en reproducciónUSB_PLAY_STOP 0x42 Para el archivo en ejecuciónUSB_PLAY_ENDPLAY 0x47 Avisa de la finalización del archivo MP3

USB_VS_HRESET 0x50 Reset Hardware del VS1001KUSB_VS_SRESET 0x51 Reset Software del VS1001KUSB_VS_SEND 0x52 Envía datos al VS1001KUSB_VS_CMD 0x53 Envía un comando al VS1001KUSB_VS_BEEP1 0x54 Genera un pitido en el reproductorUSB_VS_TEST_SEND 0x55 Comando de Test de envío de datos

USB_ACK* 0xAA Comando de aceptación (usado en inicialización)USB_ACK2* 0xABUSB_STOPBYTE 0xBBUSB_RECO1 0xCAUSB_CANCEL* 0xDAUSB_ERR1* 0xFA Código de error 1 USB_ERR2* 0xFB Código de error 2 .USB_CMDTUNK* 0xFD Tipo de comando desconocidoUSB_CMDUNK* 0xFE Comando desconocido

* Estos mensajes no llevan delante un Tipo de ComandoTabla 4.18 Comandos del protocolo de comunicación

120

Page 121: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

4.4.3 Inicialización de la comunicación

Antes de que el reproductor pueda empezar a contestar a los comandos enviados por la aplicación en el ordenador ambos han de inicializar la comunicación, de modo que el reproductor quede en un estado de espera de comandos. El proceso de inicialización es el siguiente:

1. La aplicación envía el comando USB_PC_PRESENT si detecta que el reproductor está conectado a un puerto USB y está enumerado. Este comando le indica al reproductor que la aplicación está conectada y quiere iniciar la comunicación.

2. El reproductor comprueba periódicamente si ha sido enumerado por el host USB. Si lo está comprueba si se le ha enviado el comando USB_PC_PRESENT, en caso de recibirlo envía como respuesta USB_USB_PRESENT. Esto le indica a la aplicación que el reproductor ha recibido el mensaje de la aplicación y que él también está en disposición de iniciar la comunicación.

3. La aplicación lee la respuesta del reproductor y le pide, mediante el comando USB_PC_ASKINI, que se inicie la comunicación.

4. El reproductor responde al USB_PC_ASKINI con el mensaje USB_ACK indicándole que ha iniciado la comunicación y está en disposición de recibir cualquier tipo de comando. Después de este mensaje el reproductor entra en un bucle de lectura a la espera de comandos por parte de la aplicación (modo USB_IDLE).

La función de inicialización se llama de forma periódica, para detectar si se ha conectado el reproductor a un puerto USB y si la aplicación de comunicación está presente. En la Imagen 4.13 puede verse el diagrama de inicialización que se acaba de describir.

Imagen 4.13 Diagrama de inicialización de la comunicación

121

Page 122: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

4.4.4 Comandos de navegación

USB_DIR_GOTO_ROOT

Parámetros: Sin parámetros.Dirección: PC=>ReproductorFunción: Establece el directorio root del sistema de archivos como directorio actual.Respuesta: USB_ACK

USB_DIR_GOTO

Parámetros: un entero de 16 bits que indica el directorio a abrir.Dirección: PC=>ReproductorFunción: Establece como directorio actual el directorio indicado por el parámetro. El parámetro hace referencia al índice de la entrada dentro del directorio actual.Respuesta: USB_ACK

USB_DIR_LIST

Parámetros: Sin parámetros.Dirección: PC=>ReproductorFunción: Pide la lista de archivos y directorios del directorio actual.Respuesta: Envía un conjunto de mensajes USB_DIR_FILE, uno por cada entrada dentro del directorio actual. Finaliza mediante un mensaje USB_DIR_ENDDIR. En la Imagen 4.14 se muestra el funcionamiento del comando USB_DIR_LIST.

Imagen 4.14 Diagrama de funcionamiento del comando USB_DIR_LIST

122

Page 123: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

USB_DIR_FILE

Parámetros: Se envían dos parámetros, un entero de 16 bits indicando el índice de la entrada dentro del directorio, y un conjunto de 32 bytes correspondientes a la entrada del elemento dentro del sistema de archivos FAT16.Dirección: Reproductor=>PCFunción: Envía una entrada (archivo o directorio) del directorio actual. Es la respuesta del reproductor a un comando USB_DIR_LIST.

USB_DIR_ENDDIR

Parámetros: Sin parámetrosDirección: Reproductor=>PCFunción: Indica que se ha terminado de transferir todas las entradas dentro del directorio actual. Es el último mensaje que se envía como respuesta al comando USB_DIR_LIST.

USB_DIR_GET

Parámetros: un entero de 16 bits que indica el archivo a enviar.Dirección: PC=>ReproductorFunción: Pide al reproductor que le transfiera el archivo indicado por el parámetro. El parámetro indica el índice dentro del directorio actual que corresponde al archivo a enviar.Respuesta: Se envía un conjunto de mensajes USB_DIR_GETDATA con los datos del archivo, al finalizar el envío se envía USB_DIR_ENDGET. En la Imagen 4.15 se muestra el funcionamiento del comando USB_DIR_GET.

Imagen 4.15 Diagrama del funcionamiento del comando USB_DIR_GET

123

Page 124: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

USB_DIR_GETDATA

Parámetros: Se envían dos parámetros, un entero de 16 bits indicando el número de bytes de datos que se envían en el mensaje, y un conjunto de bytes que corresponden al contenido del archivo.Dirección: Reproductor=>PCFunción: Se envía como respuesta a un comando USB_DIR_GET, envía el contenido del archivo solicitado. Cada mensaje envía 512 Bytes de datos, exceptuando el último mensaje, que envía los datos restantes.

USB_DIR_ENDGET

Parámetros: Sin parámetrosDirección: Reproductor=>PCFunción: Indica que se ha terminado de transferir los datos de archivo solicitado. Es el último mensaje que se envía como respuesta al comando USB_DIR_GET.

USB_DIR_STOPGETDATA

Parámetros: Sin parámetrosDirección: PC=> ReproductorFunción: Interrumpe el envío de datos por parte del reproductor, fruto de un comando USB_DIR_GET.Respuesta: USB_ACK

4.4.5 Comandos de control

USB_OP_RESET

Parámetros: Sin parámetrosDirección: PC=> ReproductorFunción: Resetea el microcontrolador.Respuesta: USB_ACK

USB_OP_SETVOL

Parámetros: un byte correspondiente al volumen que se desea fijar.Dirección: PC=> ReproductorFunción: Fija el volumen de reproducción.Respuesta: USB_ACK

124

Page 125: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

USB_OP_GETVOL

Parámetros: Sin parámetrosDirección: PC=> ReproductorFunción: Devuelve un byte con el volumen de reproducción.Respuesta: un byte con el volumen y USB_ACK

4.4.6 Comandos de reproducción

USB_PLAY_PLAY

Parámetros: un entero de 2 bytes que corresponden a la posición del archivo MP3 que se ha de reproducir, dentro del directorio actual.Dirección: PC=> ReproductorFunción: Inicia la reproducción del archivo MP3 indicado por el parámetro pasado.Respuesta: USB_ACK

USB_PLAY_PAUSE

Parámetros: Sin parámetros.Dirección: PC=> ReproductorFunción: Pausa la reproducción activa.Respuesta: USB_ACK

USB_PLAY_STOP

Parámetros: Sin parámetros.Dirección: PC=> ReproductorFunción: Para la reproducción activa.Respuesta: USB_ACK

USB_PLAY_ENDPLAY

Parámetros: Sin parámetros.Dirección: Reproductor => PCFunción: Le comunica a la aplicación que se ha alcanzado el final del archivo MP3 y se ha finalizado la reproducción.

125

Page 126: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

4.4.7 Comandos para el decodificador

USB_VS_HRESET

Parámetros: Sin parámetros.Dirección: PC=> ReproductorFunción: Realiza un reset hardware del decodificador MP3.Respuesta: USB_ACK

USB_VS_SRESET

Parámetros: Sin parámetros.Dirección: PC=> ReproductorFunción: Realiza un reset software del decodificador MP3.Respuesta: USB_ACK

USB_VS_SEND

Parámetros: Tiene dos parámetros, el primero es un entero de 2 bytes que indica el tamaño en bytes del segundo. El segundo es un conjunto de bytes de datos.Dirección: PC=> ReproductorFunción: Envía en conjunto de datos recibido como parámetro junto con el comando al decodificador MP3 por el interfaz SDI. Sirve principalmente para la reproducción en el reproductor de un flujo de datos MP3 enviados por la aplicación.Respuesta: USB_ACK

USB_VS_BEEP1

Parámetros: Sin parámetros.Dirección: PC=> ReproductorFunción: Envía el decodificador un comando para que este genere un beep.Respuesta: USB_ACK

USB_VS_TEST_SEND

Parámetros: Tiene dos parámetros, el primero es un entero de 2 bytes que indica el tamaño en bytes del segundo. El segundo es un conjunto de bytes de datos.Dirección: PC=> ReproductorFunción: Se trata de un comando de prueba y depuración. Devuelve como respuesta los mismos datos que ha recibido como datos.Respuesta: El conjunto de datos recibidos como parámetros.

126

Page 127: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

4.4.7 Errores

Si durante la comunicación el reproductor recibe un comando no válido o no esperado le devuelve a la aplicación un mensaje de error. Los mensajes USB_ERR1 y USB_ERR2 se utilizan durante el proceso de inicialización. El mensaje USB_CMDTUNK indica a la aplicación que el tipo de comando es incorrecto y el mensaje USB_CMDUNK le indica que el comando es incorrecto.

Si durante la comunicación existiera algún problema y el reproductor devolviese mensajes diferentes a USB_ACK o varios mensajes de error seguidos, la aplicación puede intentar recuperar la comunicación borrando los buffers de entrada y salida, y enviando una serie de comandos USB_NULL.

4.5 Programa principal

4.5.1 Introducción

El programa principal está compuesto por una función principal, que inicia el microcontrolador y contiene el bucle principal del programa, una función temporizada, que se ejecuta periódicamente y se encarga del control del interfaz de usuario, y un pequeño conjunto de funciones. Todas ellas hacen uso de las librerías anteriormente descritas.

4.5.2 Función principal

En la Imagen 4.16 puede verse el diagrama de flujo de la función principal que se inicia al arrancar el reproductor. Primero se inicializan los distintos elementos del reproductor así como los registros internos del PIC y la función temporizada. Después entra en un bucle que atiende a los comandos CMD_PLAY y CMD_STOP que inicia y finaliza la reproducción del archivo MP3 seleccionado. Cuando el reproductor se conecta por USB al ordenador y se inicializa la comunicación con la aplicación el bucle cede el control a la librería de comunicación.

127

Page 128: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 4.16 Diagrama de flujo de la función principal

4.5.3 Función temporizada

La tarea de control del interfaz de usuario la asume una función que es llamada de forma periódica por un temporizador del microcontrolador (cada 52,4 ms). Esta función se encarga del refresco de la información en la pantalla LCD, de controlar la botonera del reproductor y de comprobar si se ha conectado el puerto USB del reproductor a un ordenador. El diagrama de flujo de la función puede verse en la Imagen 4.17.

128

Page 129: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 4.17 Diagrama de flujo de la función temporizada

La tarea más importante de esta función es la comprobación de la botonera, que hace que el usuario pueda controlar el reproductor. En la Imagen 4.18 Diagrama puede verse su diagrama de flujo.

129

Page 130: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

130

Page 131: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 4.18 Diagrama de flujo de la comprobación de la botonera

4.5.4 Otras funciones

Además de las librerías y funciones ya descritas se han implementado otras funciones entre las que destacan:

void Play(int32 dir)Reproduce el archivo MP3 indicado por el parámetro. El parámetro 'dir' es la

dirección absoluta de la entrada del archivo a reproducir dentro de un directorio. La lectura del archivo hace uso de las funciones MMCOpenMP3File y MMCReadMP3File que están optimizadas para la reproducción de MP3 con tasas de bit altas.

void SetEEPROMValues()Graba en la memoria EEPROM interna del microcontrolador la información de

volumen, modo de reproducción y modo de audio.

void GetEEPROMValues()Lee de la memoria EEPROM interna del microcontrolador la información de

volumen, modo de reproducción y modo de audio que han sido guardados anteriormente, y los establece como valores actuales.

131

Page 132: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

5. Diseño y desarrollo de la aplicación

5.1 Introducción

Para el control del reproductor desde un ordenador se ha desarrollado una aplicación windows en la cual se muestran las distintas posibilidades que ofrece:

Navegación por la estructura de archivos del reproductor. Descarga al ordenador de archivos almacenados en el reproductor. Reproducción en el reproductor de archivos almacenados en éste. Reproducción en el reproductor de archivos almacenados en el ordenador. Reproducción en el ordenador de archivos almacenados en el reproductor. Reproducción en el reproductor de stream MP3 transmitidos a través de

internet.

Se ha decidido encapsular todo el protocolo de comunicación en una librería DLL que proporcione un interfaz fácil de utilizar, de forma que se puedan desarrollar distintas aplicaciones de forma rápida sin necesidad de preocuparse de la capa de comunicación con el reproductor.

5.2 Herramientas de desarrollo utilizadas

FTDI Chip, el fabricante del módulo de comunicación USB, proporciona diferentes librerías y drivers para facilitar el desarrollo de aplicaciones en diferentes plataformas40. Existen dos métodos para realizar la comunicación: utilizar el driver VCP que crea un puerto COM virtual, o utilizar el driver D2XX que proporciona un acceso directo al dispositivo USB a través de una librería DLL. Para disponer de un mayor control y velocidad de transmisión se ha utilizado esta última opción.

Tanto la librería de comunicación con el reproductor como la aplicación se han desarrollado para la plataforma .NET de Microsoft. Esto es así por varios motivos, en primer lugar se ha elegido desarrollar la aplicación para sistemas operativos Windows porque es el sistema que tiene actualmente mayor difusión en entornos domésticos, y además FTDI Chip proporciona drivers más completos y documentados para Windows que para otro sistema. En segundo lugar se ha elegido la plataforma .NET por ser un entorno actual que Microsoft está fomentando con nuevas y completas herramientas de desarrollo. Por todo ello, y por que ya se tenía experiencia en el desarrollo de aplicaciones en C# para plataforma .NET, se ha optado por esta opción. Para una mayor compatibilidad la librería se ha desarrollado para .NET 1.1, que puede ser utilizada en versiones superiores. La aplicación se ha desarrollado para .NET 2.0 ya que proporciona mejoras con respecto a la 1.1.

40 Existen drivers para todas las versiones de windows superiores al 98, MAC OS X, Linux, Windows CE y Windows Mobile entre otros.

132

Page 133: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

El entorno de desarrollo utilizado para la programación ha sido diferente en cada caso. Para la librería se ha utilizado el programa Sharpdevelop 1.1, se trata de un entorno de desarrollo gratuito que hace uso de las librerías SDK de la plataforma .NET 1.1. Para el desarrollo de la aplicación se ha utilizado el Visual Studio 2005, que proporciona un entorno de desarrollo con más opciones que los programas gratuitos, y sobre todo facilita los trabajos de depuración, como puntos de interrupción, ejecución paso a paso, etc. En la versión 1.1 de Sharpdevelop las opciones de depuración son casi inexistentes. En ambos casos se ha utilizado el C# como lenguaje de programación.

5.3 Librería del módulo USB

El driver D2XX proporcionado por FTDI permite que las aplicaciones se comuniquen con el módulo USB a través de una librería DLL. La arquitectura del driver D2XX consiste en un driver Windows WDM que se comunica con el dispositivo a través de la pila USB de Windows y una librería DLL que actúa como interfaz entre la aplicación y el driver WDM. En la Imagen 5.1 se pueden ver la arquitectura de una aplicación que haga uso del driver D2XX.

Imagen 5.1 Arquitectura del uso del driver USB D2XX

133

Page 134: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Debido a que la librería DLL proporcionada por FTDI no está desarrollada para .NET ha sido necesario crear un wrapper41 o envoltura mediante la cual poder acceder desde el resto del código como si se tratase de una librería .NET, encapsulándose así el interfaz D2XX en las clases FTDevice, FTDeviceInfo y FTManager. Las funciones del interfaz D2XX incluidas en el wrapper y utilizadas para implementar estas clases son:

public FT_STATUS FT_Open(int deviceNumber, out int pHandle);public FT_STATUS FT_OpenEx(string pvArg1, FT_OPEN dwFlags, out int ftHandle);public FT_STATUS FT_Close(int ftHandle);public FT_STATUS FT_ReadEE(int ftHandle, int dwWordOffset, out ushort lpwValue);public FT_STATUS FT_WriteEE(int ftHandle, int dwWordOffset, ushort wValue);public FT_STATUS FT_EraseEE(int ftHandle);public FT_STATUS FT_Write(int ftHandle, byte[] lpBuffer, int dwBytesToWriteout, out int lpdwBytesWritten);public FT_STATUS FT_ListDevices(out int count, int arg2, FT_LIST arg3);public FT_STATUS FT_OpenEx(IntPtr pArg1, int Flags, out int pHandle);public FT_STATUS FT_Read(int ftHandle, byte[] lpBuffer, int nBufferSize, out int lpBytesReturned);public FT_STATUS FT_CreateDeviceInfoList(out int lpdwNumDevs);public FT_STATUS FT_GetDeviceInfoDetail(int dwIndex, out int lpdwFlags, out int lpdwType, out int lpdwID, out int lpdwLocId, StringBuilder pcSerialNumber, StringBuilder pcDescription, out int ftHandle);public FT_STATUS FT_GetQueueStatus(int ftHandle, out int lpdwAmountInRxQueue);public FT_STATUS FT_Purge(int ftHandle, int dwMask);public FT_STATUS FT_ResetDevice (int ftHandle);public FT_STATUS FT_ResetPort (int ftHandle);public FT_STATUS FT_CyclePort (int ftHandle);public FT_STATUS FT_GetStatus(int ftHandle, out int lpdwAmountInRxQueue, out int lpdwAmountInTxQueue, out int lpdwEventStatus);

5.4 Librería de control del reproductor

Como se ha comentado, todo el protocolo de comunicación se ha implementado en una librería de forma que se puedan desarrollar distintas aplicaciones de forma más sencilla sin necesidad de preocuparse de la capa de comunicación con el reproductor. En la Imagen 5.2 puede verse la estructura interna de la librería de comunicación.

Al principio la aplicación ha de comprobar si el reproductor está conectado y hacer una llamada a la función de inicialización de la comunicación. Si la inicialización de la comunicación ha finalizado con éxito se puede comenzar a realizar llamadas a las funciones de la librería, estas llamadas son transformadas en mensajes que son encolados en una cola de envío de mensajes. Un hilo comprueba periódicamente las colas de envío, enviando al reproductor los mensajes (comandos) que encuentre.

Existen dos colas de envío, una más prioritaria y otra con prioridad normal. Se han creado estas dos colas para poder enviar mensajes que han de ser atendidos de forma inmediata mientras la cola de prioridad normal está llena con otros mensajes. Un ejemplo de la necesidad de estas dos colas es el siguiente: la aplicación manda un flujo de datos

41 Se ha tomado como base un wrapper en C# proporcionado como ejemplo por FTDI.

134

Page 135: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

MP3 para que sean reproducidos en tiempo real, estos son almacenados como mensajes en la cola de prioridad normal. A la vez la aplicación llama a la función de cambio de volumen, en este caso la librería crea un mensaje que introduce en la cola con mayor prioridad, de esta forma no es necesario que se envíen todos los mensajes encolados antes de la llamada, y ésta es atendida inmediatamente.

Las respuestas devueltas por el reproductor son leídas por un hilo que periódicamente comprueba el buffer de recepción. Dependiendo del tipo de respuesta el hilo introduce nuevos mensajes en la cola de envío o genera los eventos necesarios para informar a la aplicación de la información que se ha recibido del reproductor.

Imagen 5.2 Estructura interna de la librería de comunicación

A continuación se listan los métodos más importantes de la clase USBComMP3, que es la que encapsula todo el protocolo de comunicación:

public bool DIRGotoRoot()public bool DIRList(bool Prioritario)public bool DIRGotoDir(short position, bool Prioritario)public bool DIRGetFile(short position)public bool PlayFile(short position)public bool Play_Stop()public bool Play_Pause()public bool VS_HardReset()public bool VS_SoftReset()public bool VS_SendData(byte [] data)public bool OP_Volumen(byte Volumen)public bool OP_ResetDevice()public void PurgarRX()public void PurgarTX()public void PurgarColaEnvio()

135

Page 136: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

La librería también incluye varias clases de ayuda para facilitar la utilización de la clase de comunicación, estas son:

FileInfo, que facilita la extracción de los datos de un archivo a partir de los datos de la entrada devueltos por el reproductor.

MP3FileSender, envía un archivo MP3 al reproductor para que sea reproducido en tiempo real.

MP3NetStreamSender, envía al reproductor un flujo de datos MP3 descargado de la red para su reproducción en tiempo real.

5.5 Modos de reproducción

5.5.1 Introducción

En los reproductores de MP3 comunes las aplicaciones permiten tan solo un acceso a los archivos almacenados en la memoria interna del reproductor pero no permiten su control de forma remota. En este caso, además del acceso a la estructura de directorios y la descarga de archivos, la aplicación permite un control remoto muy completo del reproductor, pudiéndose reproducir tanto archivos almacenados en el propio reproductor, como enviarse un flujo de datos MP3 desde el ordenador para su reproducción en tiempo real.

5.5.1 Reproducción remota de archivos en el reproductor

La reproducción remota de archivos en el reproductor hace referencia al control de la reproducción en el propio dispositivo de archivos que se encuentran en la memoria MMC. En la Imagen 5.3 se puede ver una captura de la ventana de control de reproducción de la aplicación. Es el método más sencillo y consiste básicamente en sustituir las órdenes procedentes de la botonera por los comandos enviados por la aplicación. El proceso es el siguiente:

1. Se inicializa la comunicación (si no se ha inicializado aún)2. Mediante la clase USBComMP3 se navega por la estructura de directorios

hasta el directorio donde se encuentra el archivo que se desea reproducir.3. Se realiza una llamada al método PlayFile con la posición del archivo dentro

del directorio, y el reproductor comienza su reproducción.4. Si se desea detener o pausar la reproducción se utilizan los métodos Play_Stop

y Play_Pause.

Imagen 5.3 Reproducción remota de archivos en el reproductor.

136

Page 137: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

5.5.2 Reproducción remota de archivos en el ordenador

El reproductor permite reproducir un flujo de datos enviado desde la aplicación sin necesidad de almacenarlos en la memoria, por tanto es posible reproducir un archivo MP3 almacenado en el ordenador directamente en el reproductor. En la Imagen 5.4 se pueden ver los controles y la lista de reproducción de los archivos almacenados en el ordenador que son reproducidos en el reproductor. El proceso es el siguiente:

1. Se inicializa la comunicación (si no se ha inicializado aún)2. Se instancia la clase MP3FileSender con la ruta del archivo a enviar. Esta clase

utiliza los métodos VS_HardReset, VS_SoftReset y VS_SendData de la clase USBComMP3 para actuar directamente sobre el chip decodificador.

3. Para detener la reproducción se utiliza el método Stop de la clase MP3FileSender.

Imagen 5.4 Reproducción remota de archivos en el PC

5.5.3 Reproducción local de archivos en el reproductor

La aplicación permite también reproducir en tiempo real en el ordenador archivos MP3 almacenados en la memoria MMC del reproductor sin necesidad de almacenarlos previamente en el disco duro. Para ello utiliza los métodos de descarga de archivo pero envía los datos a una librería de reproducción de MP3 en vez de almacenarlos en disco. El proceso de reproducción es el siguiente:

137

Page 138: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

1. Se inicializa la comunicación (si no se ha inicializado aún)2. Mediante la clase USBComMP3 se navega por la estructura de directorios

hasta el directorio donde se encuentra el archivo que se desea reproducir.3. Se utiliza el método DIRGetFile con la posición del archivo que se desea

recibir.4. Mediante el evento OnGetFileData de la clase USBComMP3 se reciben los

datos del archivo solicitado.5. Estos datos son enviados a una librería que se encargue de su reproducción.

La librería utilizada para la reproducción local de archivos MP3 es BASS, una librería de audio muy completa y gratuita para uso no comercial. Debido a que la librería no está desarrollada para .NET se ha utilizado un wrapper para acceder a su interfaz desde la aplicación. En la Imagen 5.5 se muestra el control del reproductor local (en la aplicación) y el listado de archivos en la carpeta que se está reproduciendo.

Imagen 5.5 Reproducción local de archivos remotos.

5.5.4 Reproducción remota de streams de internet

La opción de reproducir flujos de datos MP3 procedentes de internet es similar a la reproducción remota de archivos en el ordenador. La única diferencia es que la fuente del flujo de datos no es un archivo almacenado en el disco duro, sino un archivo remoto o un flujo de datos obtenido de internet. En este caso la clase utilizada es MP3NetStreamSender que, al igual que MP3FileSender, extiende la clase MP3SreamSender la cual se encarga realmente de la interacción con el reproductor, enviándole los datos de un stream, ya sea de un archivo local o descargado de la red. El proceso es el siguiente:

138

Page 139: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

1. Se inicializa la comunicación (si no se ha inicializado aún)2. Se instancia la clase MP3NetStreamSender con la dirección URL del archivo o

stream de audio a enviar. 3. Para detener la reproducción se utiliza el método Stop.

5.6 Podcasting y streaming a través de internet

5.6.1 Introducción

El streaming es una tecnología que permite la emisión de contenidos audiovisuales utilizando Internet, en este caso audio en formato MP3. Existen numerosas emisoras de radio y otro tipo de contenidos de audio que utilizan el formato MP3 para difundir sus contenidos en internet, ya sea una emisión realizada en tiempo real o en diferido.

Se ha querido aprovechar esto para incluir una funcionalidad poco común en los reproductores portátiles, la posibilidad de reproducir en tiempo real el flujo de audio MP3 directamente descargado de internet, sin necesidad de almacenarlo previamente. Para realizar esto, la aplicación es la encargada de obtener los datos en MP3 de una fuente en internet, ya sea una radio emitiendo o un archivo. Este flujo de datos es enviado al reproductor MP3 conectado por USB el cual se encarga de reproducirlos.

Se puede clasificar en dos tipos el audio que la aplicación puede obtener según el tipo de fuente: los archivos MP3 almacenados en un servidor que son descargados y enviados al reproductor según se van descargando, y el flujo de datos enviado por un servidor, por ejemplo de una radio.

5.6.2 Obtención e identificación del tipo de recurso

Se ha incluido en la aplicación un navegador web que permite localizar y descargar el flujo de datos MP3 que se van a reproducir. Cada vez que se hace clic en algún enlace el navegador captura el enlace al que se va a acceder y comprueba si se trata de un recurso conocido, de serlo cancela la navegación a este enlace y efectúa las acciones necesarias para comenzar la descarga de los datos MP3 y enviárselas al reproductor.

Los recursos reconocidos por la aplicación son:

Archivos MP3, son detectados por su extensión o por el tipo MIME de los datos: audio/mpeg, audio/x-mpeg-3, audio/mpeg3, audio/mp3 o audio/mpg. En este caso se comienza la descarga del archivo y sus datos son enviados al reproductor conforme se van descargando.

Archivos PLS, son detectados por su extensión o por el tipo MIME de los datos: text/pls, audio/x-scpls, audio/mpegurl, audio/scpls o audio/x-mpegurl. Estos archivos contienen información sobre un servidor que está emitiendo el flujo de datos MP3.

139

Page 140: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Archivos XML, su extensión puede ser variable, normalmente RSS42 y son detectados por el tipo MIME: application/xml o text/xml. Se intentan cargar en el navegador con en un fichero de transformación de XML (XSLT) para tipos de archivo podcast.

5.6.3 Streaming

Existen diferentes formas de hacer streaming o difusión de datos multimedia a través de internet. En el caso del audio MP3 los datos suelen ser transmitidos por un servidor a través del protocolo http indicando como tipo MIME de los datos: audio/mpeg, audio/x-mpeg-3, audio/mpeg3, audio/mp3 o audio/mpg.

La forma en la que se anuncia en la web la dirección y el puerto donde se encuentran el servidor que está transmitiendo los datos suele ser mediante un archivo PLS (playlist o lista de reproducción). Este archivo es abierto por el reproductor de música predeterminado en el ordenador cliente que obtiene la dirección y el puerto del servidor, el título de la canción o flujo de datos, y el tamaño del archivo (si es un flujo de datos el tamaño es -1)

Formato PLS

Los archivos PLS son archivos de texto que almacenan una lista de reproducción, ya sea de archivos locales, remotos o de servidores que emiten un flujo de datos. El archivo está compuesto por una cabecera, un conjunto de entradas y un pie [PLSREF]43.

La cabecera está compuesta por dos líneas:

[playlist] (Indica el tipo de fichero)NumberOfEntries=número (Indica el número de entradas en el fichero)

El formato de las entradas es el siguiente (X es el número de la entrada):

FileX=Dirección (Localización del fichero o flujo de datos)TitleX=Título (Título de la pista)LengthX=Tamaño (Tamaño en segundos. Si no está definido -1)

El pie del fichero es el siguiente:

Version=2 (Versión del fichero, actualmente 2)

A continuación se muestra un ejemplo de fichero PLS:

42 Formato de archivo XML para la sindicación o redifusión de contenidos.43 No existe estándar oficial del formato PLS, pero es ámpliamente conocido y está muy extendido.

140

Page 141: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

[playlist]NumberOfEntries=2

File1=http://ejemplodeservidor.com:80Title1=Radio que emite en formato MP3Length1=-1

File2=http://miservidor.com/cancion.mp3Title2=Archivo MP3 remotoLength2=230

Version=2

El navegador web integrado en la aplicación captura las direcciones de los archivos PLS cuando se hace clic sobre ellos, los descarga y extrae la dirección del primer servidor o MP3 que contiene, iniciando su reproducción. Un archivo PLS utilizado para publicar la dirección de una radio o flujo de audio similar contiene únicamente la entrada que indica el servidor que ofrece el flujo de datos. Cuando se trata de emisiones con mucha demanda pueden incluir otras entradas con servidores que ofrecen el mismo contenido, por si el servidor principal ha alcanzado el límite de cliente a los que puede servir y está saturado. En cualquier caso la aplicación solo utiliza la primera entrada.

Una de las principales opciones que ofrece la aplicación para el acceso a stream de audio descargados de internet es la web Shoutcast. La aplicación contiene un enlace directo a esta página web que ofrece cientos de emisoras de radio, una gran mayoría en formato MP3, y que permite diferentes opciones de búsqueda. En la Imagen 5.6 puede verse la web cargada en el navegador integrado y sobre ella los controles de reproducción. Para reproducir una emisora tan solo hay que presionar el botón “Tune In!” que es un enlace a un archivo PLS como el descrito.

Imagen 5.6 Reproducción de audio de Shoutcast.

141

Page 142: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

5.6.4 Podcasting

El podcast surgió de los términos iPod y broadcast, el reproductor iPod de Apple fue el primero en aceptar scripts para descargar contenido de la web que posteriormente sería transferido al reproductor. Un podcast es un conjunto de archivos multimedia que se distribuyen a través de internet utilizando la sindicación mediante archivos RSS o atom44.

La aplicación, al igual que hace con los archivos PLS, captura y descarga los archivos RSS. En esta ocasión muestra su contenido a través del navegador web integrado formateado mediante un fichero de transformaciones XSL (XSLT45) que lo transforma en un archivo HTML con los enlaces a los elementos sindicados. En la Imagen 5.6 puede verse un podcast de la universidad de Sevilla.

Imagen 5.6 Podcast cargado en el navegador de la aplicación

Formato de archivo podcast

Los archivos podcast están basados en las especificaciones RSS 2.0. Deben incluir una serie de etiquetas determinadas que informan del contenido de cada uno de los elementos sindicados [PODCASTREF].

44 Ambos son formatos de sindicación de contenidos basados en XML.45 Por motivos de extensión del presente documento no se va a explicar el funcionamiento y formato de los

archivos XSLT.

142

Page 143: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

El archivo está compuesto por una etiqueta inicial '<channel>', dentro de esta se sitúa la información general de todos los elementos contenidos en el podcast: title, link, copyright, itunes:author, itunes:summary, description, etc. Cada uno de los elementos sindicados se introducen dentro de '<channel>' mediante la etiqueta '<item>'. Esta contiene las siguientes etiquetas: title, itunes:author, itunes:subtitle, pubDate, itunes:duration, etc. El enlace al recurso MP3 se indica mediante la siguiente etiqueta que contiene la dirección del recurso, el tamaño y su tipo: <enclosure url="http://serv.com/recurso.mp3" length="5650889" type="audio/mpeg" />

A continuación se muestra un ejemplo de archivo podcast:

<?xml version="1.0" encoding="UTF-8"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">

<channel>

<title>Titulo del podcast</title> <link>http://www.ejemplo.com/podcasts/index.html</link> <itunes:subtitle>Subtitulo</itunes:subtitle> <itunes:author>David Martin</itunes:author> <itunes:summary>Informacion</itunes:summary> <description>Descripcion</description> <itunes:image href="http://ejemplo.com/podcasts/imagen.jpg" />

<item> <title>Titulo 1</title> <itunes:author>Autor</itunes:author> <itunes:subtitle>Subtitulo 1</itunes:subtitle> <itunes:summary>Resumen</itunes:summary> <enclosure url="http://ejemplo.com/recurso.mp3" length="8727310" type="audio/mpeg" /> <pubDate>Wed, 11 Jun 2008 19:00:00 GMT</pubDate> <itunes:duration>7:04</itunes:duration> </item>

<item> <title>Titulo 2</title> <itunes:author>Autor</itunes:author> <itunes:subtitle>Subtitulo 2</itunes:subtitle> <itunes:summary>Resumen</itunes:summary> <enclosure url="http://ejemplo.com/recurso2.mp3" length="3727310" type="audio/mpeg" /> <pubDate>Wed, 11 Jun 2008 19:05:00 GMT</pubDate> <itunes:duration>3:04</itunes:duration> </item>

</channel>

</rss>

Los archivos pueden contener gran cantidad de etiquetas y su implementación puede cambiar. Cada lector/reproductor de archivos podcast pueden aceptar un subconjunto de estas etiquetas, ignorando el resto. No obstante se han indicado las más importantes y que se suelen incluir en todos los archivos.

143

Page 144: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

5.6.5 Emisoras favoritas

Para almacenar la dirección de un conjunto de archivos y servidores de audio mp3 se ha implementado en la aplicación una opción similar a la de “favoritos” de los navegadores. De esta forma el usuario puede almacenar fácilmente las fuentes de sonido que considere más interesantes para escucharlas en un futuro.

En este caso es utiliza la interfaz gráfica del navegador web integrado en la aplicación de forma que las fuentes añadidas al archivo de favoritos se almacenan internamente en un archivo XML similar al de podcasting. Este archivo es transformado por un archivo XSLT en un código HTML legible por el navegador. Se han añadido enlaces para borrar o añadir nuevas fuentes al listado, el evento generado al presionar sobre estos enlaces es capturado por la aplicación que muestra una ventana para eliminar o añadir un nuevo elemento.

Se han creado dos listas de favoritos, una para los podcast favoritos y otra para las radios favoritas; el listado de podcast favoritos puede verse en la IMG.

Imagen 5.7 Listado de Podcast favoritos

144

Page 145: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

6. Presupuesto y planificación

6.1 Introducción

En esta sección se van a detallar los costes económicos derivados de la de realización del presente proyecto. Para ello se han dividido los costes agrupándolos según la naturaleza de los mismos. Cabe destacar que estos costes corresponden a la realización del prototipo y no corresponden al coste unitario de la producción en serie del reproductor. Los costes se han agrupado se la siguiente manera:

Software: aquí se incluye todo el software necesario para la realización del proyecto, pero que no forma parte de él, como sistema operativo, programas CAD, entornos de programación, etc.

Herramientas: a este grupo pertenecen todas la herramientas (físicas) que se han utilizado para la realización del proyecto.

Componentes y fabricación del PCB: se incluye el coste del circuito impreso y todos los componentes que la componen.

Mano de obra: coste de los recursos humanos que han sido necesarios.

Por último indicar que el coste de los componentes y materiales de esta sección corresponden a precios sin IVA.

6.2 Coste del software

El software utilizado para el desarrollo del sistema consta de sistema operativo, herramienta CAD para el diseño del circuito impreso, compilador C para el firmware del microcontrolador, entornos de desarrollo de C#, Microsoft .NET Framework SDK 2.0 y otras aplicaciones para el diseño de iconos y gráficos, tanto los mostrados por la pantalla LCD como los de la aplicación windows.

Se ha utilizado el sistemas operativo Windows XP para el desarrollo y pruebas del proyecto, aun que también se ha podido probar su funcionamiento en Windows Vista. El programa de CAD utilizado ha sido Eagle de Cadsoft, en concreto una versión gratuita con limitación a dos capas como máximo y al uso no comercial del diseño.

En cuanto a la programación, el compilador utilizado para el firmware del microcontrolador es PCWH de CSS, que también tiene una versión gratuita limitada, y para la programación de la librerías y la aplicación Windows se han utilizado el entorno Sharpdevelop 1.1 y el Visual Studio 2005. Gracias al proyecto DreamSpark de Microsoft los estudiantes universitarios españoles pueden obtener acceso gratuito a este software y por tanto no se ha contabilizado su coste.

Las aplicaciones utilizadas para programar el microcontrolador han sido IC-Prog y WinPic800, ambos gratuitos. La redacción de esta memoria se realiza con la aplicación, también gratuita, Open Office.

145

Page 146: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Además se han utilizado otras aplicaciones de carácter gratuito para tareas menores, como el programa GIMP y FastLCD Designer, aunque por su poco uso y carácter gratuito no se han añadido a la Tabla 6.1 donde aparecen desglosados el coste de los programas.

Programa Precio

Windows XP OEM (precio incluido en el coste del PC)

Eagle Demo 0.00€

Compilador PCWH 320€

Visual Studio 2005 0.00€

SharpDevelop 1.1 0.00€

WinPIC800 0.00€

IC-Prog 0.00€

Total 320€Tabla 6.1 Precio del Software

Hay que recordar que la Tabla 6.1 muestra el precio del producto, el coste depende del número de proyectos que hagan uso de él y por tanto de la amortización de cada uno.

6.3 Coste de las herramientas

Como herramientas se entiende todo el hardware utilizado para el desarrollo del proyecto, tanto los ordenadores como herramientas para el montaje y testeo del circuito impreso.

Para el desarrollo del proyecto se ha empleando un ordenador de sobremesa cuyas principales características son las siguientes:

Procesador AMD Athlon 64 X2 3800+ Memoria RAM 2GB Disco duro de 320 GB Monitor 17'' Sistema operativo Windows XP

En cuanto a las herramientas para el montaje, testeo y programación del circuito se han utilizado:

146

Page 147: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Herramientas de soldadura: soldador, base del soldador, estaño, flux y malla de desoldar.

Placa fotosensible para el primer prototipo y materiales de revelado y atacado. Microtaladro y brocas usadas en el primer prototipo Polímetro. Osciloscopio digital TekMeter THM550. Programador JDM Pilas recargables

Algunos elementos menores como pinzas para sujetar componentes, pinzas de extracción de chips, flexo para iluminar y similares no se han incluido. En la Tabla 6.2 se lista el precio de cada uno de los elementos indicados. Como en el caso del software se trata del precio íntegro de los elementos, el coste depende del uso que se haga de ellos en otros proyectos y de su amortización.

Elemento Precio

Ordenador de sobremesa 850€

Herramientas de soldadura 40€

Placa fotosensible y materiales de revelado/atacado 15€

Microtaladro y brocas 15€

Polímetro 10€

Osciloscopio 250€

Programador JDM 15€

Pilas recargables 5€

Total 1.200€Tabla 6.2 Precio de las herramientas

6.4 Coste de los componentes y PCB

Se han realizado dos prototipos de circuito impreso, el primero se realizó de forma “artesanal” como se indica en el capítulo del desarrollo hardware, el segundo tan solo modifica el circuito de alimentación del primer prototipo, y en esta ocasión se mandó fabricar la placa del circuito ya que se necesitaba un circuito de una mayor calidad.

Debido a la gran variedad de elementos discretos que se han utilizado en el circuito algunos se han agrupado, este es el caso por ejemplo de los condensadores y resistencias. Algunos elementos, como el módulo USB, se han empleado en ambos prototipos y no ha sido necesario adquirirlos por duplicado. Otros elementos, como el microcontrolador, han sido conseguidos como muestras gratuitas. En la Tabla 6.3 se lista el precio de todos los componentes.

147

Page 148: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Elemento Precio

Placa de circuito impreso 45€

PIC 18LF452 0€

Pantalla LCD 12€

Módulo USB 18€

Decodificador MP3 VS1001K 20€

MAX1675 0€

TC110 0€

Tarjeta de memoria 18€

Cable USB 2,50€

Cristales de 20MHz y 14MHz 1€

Condensadores 3,50€

Resistencias 0,60€

Inductancias 1,80€

Diodos 0,60€

Transistor Mosfet 0,50€

Conector MMC 3€

Conector de audio jack 3,5mm 0,30€

Interruptor 0,20€

Botones 3€

Separadores hexagonales 2€

Espadines 0,50€

Zócalo para integrado de 40 pines 0,40€

Portapilas 2 AA 0,50€

Total 133,40€Tabla 6.3 Precio de componentes

6.5 Planificación y mano de obra

Todas las tareas del presente proyecto han sido realizadas por el proyectista, no obstante el coste de la mano de obra se van a dividir dependiendo de su tipo en coste estimado de horas/hombre de ingeniero y de técnico. El coste de la hora de ingeniero se ha valorado en 20 €/hora y el de técnico en 12 €/hora46.

En la Imagen 6.1 se presenta el diagrama de Gantt de la estimación de la duración del proyecto integrando el tiempo, como si hubiese habido una dedicación exclusiva a éste. Desgraciadamente esto no ha sido posible debido a otras obligaciones académicas y, sobre todo, laborales. Inicialmente se muestra la tarea de búsqueda bibliográfica y documentación, no obstante la documentación y la consulta de manuales de referencia y especificaciones se ha realizado durante todas las partes del proyecto.

46 Valoración obtenida a partir de las tablas salariales del convenio laboral de “Empresas de ingeniería y estudios técnicos”

148

Page 149: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen 6.1 Diagrama de Gantt

149

Page 150: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Gran parte del desarrollo del firmware del microcontrolador se ha realizado simultáneamente con la aplicación ya que tareas como la comunicación comparten elementos que hacen necesario su desarrollo y depuración en paralelo. En la Tabla 6.4 se muestra el número de horas de ingeniero y técnico empleadas. No se han contabilizado fines de semana. Las horas de técnico corresponden a las tareas de montaje y testeo de las placas de circuito impreso.

Personal Horas/Hombre Coste

Ingeniero 1.350 27.000 €

Técnico 50 600 €

Total 1.400 27.600 € Tabla 6.4 Valoración del coste de mano de obra.

En la Tabla 6.5 se resumen el coste total del proyecto, no obstante hay que recordar que los costes de software y herramientas utilizadas son los precios de los mismos, y su coste real depende de los proyectos que se realicen con ellos y su amortización.

Concepto Coste

Software 320 €

Herramientas 1.200 €

Componentes 133,40€

Mano de obra 27.600 €

Total 29.253,40€ Tabla 6.5 Coste total del proyecto

150

Page 151: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

7. Conclusiones y trabajo futuro

7.1 Conclusiones

Después de realizar las pruebas sobre el reproductor y aplicación desarrollados se puede concluir que se han cumplido los objetivos planteados al inicio del proyecto.

Se ha conseguido desarrollar con éxito un circuito impreso microcontrolado capaz de acceder al sistema de archivos FAT16 y reproducir archivos de audio en formato MP3 almacenados en una tarjeta de memoria Multimedia Card o Secure Digital. El interfaz de usuario consta de una botonera para el control de reproductor y una pantalla gráfica LCD de 84x48 píxeles donde se muestra información del archivo en reproducción extraída de la etiqueta ID3. El reproductor permite además comunicarse con una aplicación en un ordenador mediante el interfaz USB, esta aplicación puede controlar por completo el reproductor, acceder al sistema de archivos y descargar archivos almacenados en la tarjeta de memoria. La aplicación desarrollada permite el control de distintos modos de reproducción:

Reproducción de archivos almacenados en la tarjeta de memoria. Reproducción en tiempo real (en el reproductor) de archivos almacenados en el

ordenador. Reproducción en tiempo real en la aplicación de archivos almacenados en la

tarjeta de memoria. Reproducción de flujos de audio descargados de internet (como radios a través

de internet y podcasting)

Se ha definido un protocolo de comunicación entre el reproductor y la aplicación, y se ha implementado una librería DLL que encapsula el protocolo para poder desarrollar más fácilmente aplicaciones futuras.

Los elementos principales del reproductor desarrollado son:

Un microcontrolador PIC18LF452, uno de los más potentes y con más memoria de su familia, debido a las necesidades del proyecto. No obstante se ha tenido que optimizar tanto la velocidad de ejecución del código como su tamaño para garantizar una reproducción sin cortes con archivos MP3 de tasas de bit altas.

La decodificación del audio MP3 se ha realizado mediante el integrado VS1001k, que incorpora además un decodificador D/A y un pequeño amplificador que permite conectarlo directamente a unos auriculares.

La comunicación USB se ha realizado mediante el integrado FT245BM de FTDI Chip, que proporciona unos drivers que facilitan la comunicación. Debido al tipo de encapsulado de este integrado, de difícil soldadura, se ha utilizado un módulo que facilita el desarrollo de prototipos al contener los elementos básicos que necesita y utilizar un formato DIP.

151

Page 152: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

La pantalla LCD utilizada es una pantalla gráfica monocromo de 84x48 píxeles con un interfaz serie de tan solo ocho líneas y fácil de obtener, ya que se utiliza en los teléfonos móviles Nokia 3310.

La alimentación, si no está conectada por USB a un ordenador, la proporcionan dos pilas AA que hacen del reproductor un dispositivo portátil. Si el reproductor está conectado por USB se deben utilizar pilas recargables ya que el reproductor, además de alimentarse por este puerto, recarga las pilas.

La tarjeta de memoria utilizada para el almacenamiento de los archivos MP3 puede ser tanto Multimedia Card como Secure Digital, ya que el protocolo utilizado es compartido por ambas. Se pueden utilizar tarjetas de hasta 2GB y han de estar formateadas en FAT16, que al ser un formato de archivos muy difundido pueden ser leídas y escritas por casi cualquier dispositivo.

En definitiva se han cumplido los objetivos planteados al inicio del proyecto, siendo un reproductor portable, con un interfaz de usuario fácil e intuitivo, capaz de cargar las pilas mediante el puerto USB y ser controlado por completo mediante una aplicación que permite, además de acceder al sistema de archivos de la memoria, la reproducción tanto de archivos almacenados localmente como de archivos almacenados en el ordenador y flujos de datos descargados de internet en tiempo real.

7.2 Trabajo futuro

Además de todas las funcionalidades incluidas tanto en el reproductor como en la aplicación, el uso tanto de una pantalla gráfica como de una conexión USB que permite la comunicación con el reproductor, y no es simplemente un dispositivo de almacenamiento masivo, ofrecen la posibilidad del desarrollo de más funcionalidades.

Un ejemplo de las mejoras futuras que se proponen son:

Permitir la grabación de archivos desde el PC.

Aumentar los modos de reproducción del reproductor, como por ejemplo: reproducción aleatoria dentro de un directorio, aleatoria en toda la memoria, modo shuffle, etc.

Posibilidad de crear listas de reproducción.

Añadir funciones de karaoke, que muestren la letra de la canción en la pantalla gráfica a partir de un archivo con los tiempos.

Desarrollar, a partir de la librería de comunicaciones, un servicio que permita el control del reproductor de forma remota, como una página web o desde una aplicación en una PDA. Esto puede ser interesante si, por ejemplo, se desea conectar el reproductor a un sistema de hilo musical y controlar de forma remota lo que se está reproduciendo.

152

Page 153: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Permitir la grabación de audio en formato MP3, para ello habría que cambiar el integrado de decodificación de MP3 por otro que permita también la codificación (por ejemplo el MAS3587F)

153

Page 154: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

APÉNDICE I Manual de usuario

1. Introducción

El reproductor de música utiliza memorias Multimedia Card o Secure Digital para almacenar los archivos de audio en formato MP3.

Las características principales son las siguientes:

Reproducción de archivos de audio MP3. Soporte ID3 versión 1 y 2. Almacenamiento en memoria Multimedia Card o Secure Digital Navegación por el árbol de directorios Pantalla gráfica LCD monocromo de 84x48 píxeles Seis botones Conexión al ordenador mediante USB Aplicación para el control del reproductor desde el ordenador. Descarga de archivos Reproductor->PC Reproducción directa de archivos almacenados en el ordenador Reproducción en la aplicación de archivos almacenados en la tarjeta de

memoria. Reproducción de radio a través de internet.

2. Especificaciones técnicas

A continuación se listan las especificaciones del reproductor:

Decodificación : Audio MPEG 1/2 Layer 3 CBR y VBR Hasta 320 kbps

Tarjeta de memoria : Multimedia Card y Secure Digital Sistema de archivos : FAT16 Pantalla : LCD monocromo de 84x48 pieles Alimentación : 2 pilas AA Interfaz USB : Compatible con USB 1.1 y 2.0 Resolución del DAC : 16 bits Canales : Estéreo Respuesta en frecuencia : 20 Hz – 20KHz Rango dinámico47 : 90 db Relación Señal/Ruido : 87 db Salida de audio : Mini-Jack 3 ½ (Auriculares/Salida en linea) Consumo48 : 100 mA (de las pilas)

: 300 mA (del USB si está cargando las pilas) Autonomía49 : 18 horas

47 Datos de rango dinámico y relación S/R según especificaciones del decodificador de MP3.48 Consumo máximo en reproducción, depende de varios factores, como el volumen del audio.49 Autonomía aproximada, depende principalmente de la capacidad de las pilas.

154

Page 155: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

3. Requisitos del sistema

Los requisitos del sistema son:

Sistema operativo Windows 98 / ME / 2000 / XP / Vista Framework .NET 2.0 Un puerto USB libre. Lector CD/DVD para la instalación de los drivers y la aplicación. Se recomienda tarjeta de sonido, para la reproducción local. Conexión a internet, para reproducir radio a través de internet y podcasting.

4. Reproductor

4.1 Vista general y controles

Imagen I.1 Visión general del reproductor

155

Page 156: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

En la Imagen I.1 puede verse una visión general del reproductor, en la que destacan lo siguientes elementos:

Botonera, compuesta de 6 botones (subir volumen, bajar volumen, opciones/archivos, anterior, reproducir/pausar y siguiente)

Pantalla LCD Pilas, dos pilas AA. Conector USB Interruptor de encendido/apagado Conector de salida de audio. Jumpers auriculares/salida en línea, seleccionan si en la salida de audio se van a

conectar unos auriculares (jumpers conectados) o se va a usar de salida en línea (jumpers sin conectar).

Tarjeta de memoria, del tipo Multimedia Card o Secure Digital.

En la Imagen I.2 se muestra la función de cada botón de la botonera.

Imagen I.2 Detalles de la botonera

Los botones pueden variar la funcionalidad según la pantalla en la que se encuentre en cada momento. Los botones de subir y bajar volumen son los únicos que mantienen una funcionalidad en todo momento. Las funcionalidades del resto de botones son las siguientes:

Opciones/Archivos: cuando el reproductor está parado este botón sirve para entrar en la pantalla del listado de archivos. Cuando está en reproducción se utiliza para entrar en el menú de opciones de sonido.

Anterior: dentro de la pantalla del listado de archivos sirve para seleccionar el archivo anterior, mientras que en la de opciones la opción anterior. Si el reproductor se encuentra reproduciendo pasa a reproducir el archivo de audio anterior.

156

Page 157: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Siguiente: equivalente al botón anterior, selecciona el archivo o la opción siguiente.

Reproducir: en el listado de archivos sirve para reproducir el archivo seleccionado o entrar en el directorio seleccionado. En el menú de opciones para activar o desactivar la opción seleccionada. Si se está reproduciendo un archivo, sirve para pausar o para detener la reproducción (si se mantiene el botón presionado un par de segundos)

4.2 Alimentación y recarga de pilas

El reproductor utiliza pilas de tipo AA, tanto recargables como no recargables. Si se utilizan pilas no recargables es importante extraerlas antes de conectar el reproductor al puerto USB, de lo contrario se podrían dañar tanto las pilas como el reproductor.

Cuando el reproductor está conectado mediante el puerto USB a un ordenador éste le suministra la alimentación necesaria para funcionar y además carga las pilas recargables, en caso de estar conectadas. Para la recarga de pilas es necesario que el interruptor de encendido esté en posición de encendido, en ese momento el reproductor comenzará la recarga de las pilas tanto si está en uso como si no (el ordenador debe estar encendido).

Hay que recordar que el reproductor no es un cargador de pilas y posee un circuito de carga muy básico. Es recomendable cargar las pilas en un cargador convencional si se dispone de él. En caso de no estar disponible el reproductor puede usarse para recargar pilas de tipo NiMH y NiCd de 1.5 voltios. El tiempo de carga dependerá de la capacidad de las pilas, para unas pilas de 1800mAh el tiempo de carga es de 8 horas. Es aconsejable no reproducir a la vez que se realiza la carga, de lo contrario el tiempo de carga aumenta.

Durante el tiempo que el reproductor está conectado al puerto USB de un ordenador alguno componentes del circuito pueden calentarse, esto es normal. Hay que evitar tocar los elementos del circuito cuando éste esté cargando las pilas.

4.3 Pantalla LCD

La pantalla LCD muestra tres pantallas principales dependiendo del estado del reproductor, estas son: pantalla de espera o reproducción (Imagen I.3), listado de archivos (Imagen I.4) y menú de opciones (Imagen I.5).

157

Page 158: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen I.3 Pantalla LCD con el reproductor en espera.

Imagen I.4 Pantalla del listado de archivos

Imagen I.5 Pantalla del listado de opciones

Durante la reproducción de un archivo MP3 en la pantalla aparece información tanto del formato del archivo como del contenido, leído de la etiqueta ID3. Si el archivo no posee una etiqueta ID3 aparece el nombre del archivo. En la Imagen I.6 aparece detallada la información que puede verse durante la reproducción.

A continuación se explican cada uno de los elementos que aparecen en la pantalla:

158

Page 159: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

El icono indica que estamos escuchando un archivo MP3. El icono indica el modo de reproducción, en este caso normal (reproducción

de los archivos según el orden en el directorio). A continuación aparece la tasa de bit, puede ir de 8 kbps a 320 kbps. Si se está

reproduciendo un archivo con tasa de bit variable (VBR) este número irá cambiando.

Debajo de la tasa de bit aparece la frecuencia de muestreo del archivo MP3, las valores posibles son: 8 kHz, 11 kHz, 12 kHz, 16 kHz, 22 kHz, 24 kHz, 32 kHz, 44 kHz, 48kHz .

Arriba a la derecha aparece un icono que indica si se trata de un archivo estéreo o monofónico. Si el archivo es estéreo aparece el icono , si es monofónico aparece . Si está activada la opción differential y el archivo es estéreo se crea un Virtual Surround y aparece el icono , si se trata de un archivo mono aparece .

Debajo de este icono aparece la palabra “BASS” o “NORM” dependiendo de si está activada la opción de realce de bajos o no.

En la siguiente línea aparece el número del archivo dentro del directorio, el tiempo de reproducción y un gráfico de barras que indican el nivel del volumen.

En las tres siguiente líneas aparece la información extraída de la etiqueta ID3 del archivo. En las dos primeras líneas aparece el título de la canción, y en la siguiente aparece el autor y el álbum entre paréntesis, mediante un texto deslizante.

Imagen I.6 Descripción de la información en pantalla

4.4 Utilización

Antes de empezar a utilizar el reproductor hay que asegurarse de que la tarjeta de memoria esté insertada y no extraerla mientras esté encendido. Se han de utilizar pilas de tamaño AA, si se va a conectar el reproductor al puerto USB del ordenador estas han de ser recargables. El reproductor puede utilizarse sin pilas si está conectado al puerto USB, ya que se alimenta de éste.

159

Page 160: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Reproducción de un archivo

Una vez encendido el reproductor la pantalla muestra la apariencia de la ImagenI.3. En este momento se puede presionar el botón de “Reproducir” para comenzar la reproducción del primer archivo MP3 del directorio raíz.

Si se desea reproducir un archivo en concreto se puede seleccionar accediendo a la lista de archivos. Para ello se ha de presionar el botón “Opciones/Archivos”, ésto abrirá un navegador que permite acceder al árbol de directorios y archivos de la memoria (Imagen I.4). Los botones “Siguiente” y “Anterior” cambian el elemento seleccionado, y el botón “Reproducir” inicia su reproducción en caso de que se trate de un archivo MP3. En caso de que el elemento seleccionado sea un directorio el botón “Reproducir” entra dentro de él.

Cuando finaliza la reproducción de un archivo comienza a reproducirse el siguiente archivo dentro del directorio, en caso de tratarse del último archivo dentro del directorio finaliza la reproducción.

Controles de reproducción

Durante la reproducción se puede cambiar de archivo presionando los botones “Siguiente” y “Anterior”, que inician la reproducción de los archivos siguiente y anterior respectivamente del archivo en ese momento en reproducción.

Para pausar la reproducción se ha de presionar el botón “Reproducir” una vez, esto pausa la reproducción y permite retomarla en el punto en el que se ha quedado. Para volver a retomar la reproducción hay que presionar de nuevo el botón “Reproducir”.

Si se desea detener totalmente la reproducción de un archivo se ha de presionar de forma continuada el botón “Reproducir” durante un par de segundos.

Control de volumen

Para aumentar o disminuir el volumen de audio del reproductor se ha de presionar los botones “Subir volumen” o “Bajar volumen”. No es necesario que el reproductor esté reproduciendo para cambiar el nivel de volumen. Los cambio realizados se almacenan de forma que serán recordados la próxima vez que se encienda el reproductor.

El nivel del volumen puede verse en la pantalla representado por un conjunto de barras, como podía verse en la Imagen I.6.

Menú de opciones

Para entrar en el menú de opciones se debe presionar el botón “Opciones/Archivo” durante la reproducción de un archivo. El menú de opciones puede verse en la Imagen I.5, las opciones son: “BASS”, “Virtual Surround” y “Reproducción

160

Page 161: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Normal”50. Al igual que con el listado de archivos, se utilizan los botones “Siguiente” y “Anterior” para cambiar el elemento seleccionado, y el botón “Reproducir” para activar o desactivar la opción. Para salir del menú de opciones sin efectuar ningún cambio se presiona de nuevo el botón “Opciones/Archivo”.

El icono delante del nombre de la opción indica si ésta está activada o desactivada. En caso de estar activada aparece el icono y si está desactivada .

5 Aplicación

5.1 Instalación

Antes de iniciar la instalación de la aplicación de control del reproductor MP3 han de estar instaladas una serie de drivers y librerías.

Instalación de Microsoft .NET Framework 2.0

En primer lugar se ha de instalar el .NET Framework 2.0 de Microsoft que se encuentra en el CD de instalación adjunto o se puede descargar la la página web de Microsoft:

http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&displaylang=es

Una vez descargado el programa de instalación de Microsoft .NET Framework 2.0 se ejecuta y se siguen los pasos indicados durante el proceso de instalación, que puede durar varios minutos. Para más información sobre la instalación de Microsoft .NET Framework 2.0 acudir a la web anteriormente mencionada o ponerse en contacto con el servicio técnico de Microsoft.

Instalación de los controladores de USB

El CD de instalación adjunto incluye un instalador de los drivers de USB necesarios que se han de instalar antes de la aplicación de control. Después de ejecutar el programa de instalación éste instala automáticamente todos los drivers necesarios sin necesidad de realizar ninguna acción. En la Imagen I.7 puede verse la ventana de instalación.

50 Solo está disponible el modo de reproducción normal, en futuras actualizaciones pueden incluirse otros modos de reproducción, como el aleatorio.

161

Page 162: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen I.7 Ventana de instalación del driver de USB.

Instalación de la aplicación

Una vez instalado el Framework .NET y los drivers del controlador USB se puede proceder a la instalación de la aplicación. Para ello se ejecuta el archivo de instalación y se siguen los pasos indicados. Se trata de una instalación estándar, las ventanas del proceso de instalación pueden verse en las imágenes: Imagen I.8, Imagen I.9, Imagen I.10 y Imagen I.11.

Imagen I.8 Asistente de instalación de la aplicación 1.

162

Page 163: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen I.9 Asistente de instalación de la aplicación 2.

Imagen I.10 Asistente de instalación de la aplicación 3.

Imagen I.11 Asistente de instalación de la aplicación 4.

163

Page 164: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

5.2 Ventana principal

Antes de iniciar la aplicación el reproductor ha de estar encendido y conectado a un puerto USB del ordenador. Durante el arranque la aplicación muestra una ventana como la de la Imagen I.12, indicando el paso de iniciación de la comunicación en el que se encuentra.

Imagen I.12 Iniciación de comunicación.

Una vez iniciada la comunicación se mostrará la ventana principal de la aplicación, que consta de dos regiones principales como puede verse en la Imagen I.13. La parte izquierda de la ventana es un menú en forma de árbol que permite seleccionar la acción que se desea realizar. En la parte derecha o zona principal se muestran los controles principales de la aplicación y su contenido variará dependiendo de la acción seleccionada en el menú izquierdo. Para facilitar el uso de la aplicación el interfaz simula una ventana del explorador de Windows, tanto en su apariencia como en sus utilización.

Imagen I.13 Regiones principales de la aplicación.

164

Page 165: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

5.3 Contenido de la tarjeta de memoria

Después de iniciar la comunicación el menú tiene seleccionada la opción de “Reproductor\Memoria”, esta opción muestra en la zona principal el listado de carpetas y archivos que contiene el reproductor de forma similar a como se muestra en el explorador de Windows, como muestra la Imagen I.14. La navegación entre carpetas es muy sencilla, tan solo hay que hacer doble clic sobre la carpeta a la que se quiere acceder.

Imagen I.14 Contenido de la tarjeta de memoria

Para descargar un archivo de la tarjeta de memoria al ordenador ha de arrastrarlo y soltarlo sobre la ventana de la carpeta donde se desea copiar, tal y como se hace con el explorador de Windows. Al hacerlo aparecerá una ventana que muestra la progresión de la descarga, tal y como muestra la Imagen I.15.

Imagen I.15 Ventana de copia de un archivo.

5.4 Reproducción de archivos en la tarjeta de memoria

Para reproducir en el reproductor un archivo que se encuentre en la tarjeta de memoria hay que acceder primero al listado de archivos de la tarjeta (opción “Reproductor\Memoria”), una vez en él se selecciona el archivo que se desea reproducir y se presiona el botón derecho del ratón. Aparecerá un menú como el de la Imagen I.16, se selecciona la opción “Reproducción remota”.

165

Page 166: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen I.16 Opción Reproducción remota.

Esto abrirá una ventana en la aplicación simulando un reproductor, con los controles típicos (Imagen I.17), además de un listado de los archivos del directorio donde se está reproduciendo, que permite iniciar la reproducción de otro archivo del mismo directorio.

Imagen I.17 Reproducción remota de archivos en la tarjeta.

5.5 Reproducción en la aplicación de archivos de la memoria

La aplicación permite reproducir en el ordenador archivos almacenados en la memoria del reproductor. Para ello hay que seguir los mismos pasos que en la reproducción de archivos en el reproductor, pero en este caso seleccionar la opción “Reproducción local” del menú (Imagen I.18).

Imagen I.18 Opción Reproducción local.

Esto abre en la aplicación una ventana con un reproductor con los controles básicos de reproducción y un pequeño analizador de espectro del audio que está sonando, tal y como se muestra en la Imagen I.19. Es necesario que el ordenador tenga una tarjeta de sonido y unos altavoces conectados para poder escuchar audio.

166

Page 167: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Imagen I.19 Reproductor local de audio.

5.6 Reproducción de archivos almacenados en el PC

El reproductor también es capaz de reproducir archivos almacenados en el ordenador sin necesidad de ser grabados en la tarjeta de memoria. Para ello hay se seleccionar en el menú de la izquierda la opción “Reproductor\Lista de reproducción”. En la zona principal aparece la lista de los archivos MP3 que se van a reproducir, y sobre este listado un pequeño control de reproducción, tal y como se muestra en la Imagen I.20.

Imagen I.20 Lista de reproducción

167

Page 168: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Para añadir archivos a la lista de reproducción tan solo hay que arrastrar los archivos deseados de una ventana del explorador a la aplicación. Se pueden añadir tanto archivos MP3 como archivos PLS (listas de reproducción) como se muestra en la ImagenI.21.

Imagen I.21 Añadiendo archivos al listado de reproducción

Además la lista de reproducción puede ser exportada a un archivo PLS, así esta misma lista puede ser utilizada en el futuro, tanto por la aplicación como por otros programas que lean este formato de archivo (por ejemplo el Winamp). Para hacer esto hay que pulsar sobre el botón rojo del control de reproducción.

Para reproducir un archivo hay que hacer doble clic sobre él o seleccionarlo y presionar el botón de reproducción del control de reproducción superior. El archivo en reproducción se mostrará con un icono de color verde a su izquierda, y los demás con un icono de color rojo, tal y como se muestra en la Imagen I.22. Cuando finaliza la reproducción de un archivo comienza la reproducción del siguiente de la lista.

Imagen I.22 Detalle de los iconos del estado del archivo

5.7 Streaming

El reproductor permite reproducir flujos de datos MP3 descargados de internet directamente, sin necesidad de ser almacenados ni en el ordenador ni en la tarjeta de memoria. Estos pueden ser archivos MP3 (podcast por ejemplo) o flujos de datos transmitidos en tiempo real, como una radio a través de internet. Para ello hay que seleccionar una de las opciones del menú dentro de la sección “Streaming”. Existen dos subsecciones dentro de “Streaming”: Podcasting e Internet Radio.

Podcasting

Dentro de la subsección “Podcasting” se encuentra la opción “Podcasters Favoritos”, aquí se guardan una lista de las direcciones de podcasting favoritas del

168

Page 169: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

usuario. En la Imagen I.23 puede verse la apariencia de la lista, que contiene enlaces para borrar y añadir direcciones.

Imagen I.23 Podcast Favoritos

Al presionar sobre el título de una dirección guardada se carga en el explorador de internet integrado en la aplicación la página web de dicha dirección. Una vez en la página web se puede navegar por ésta, al igual que en un navegador web habitual, con la peculiaridad que al presionar enlaces cuyos contenidos sean archivos MP3 estos serán reproducidos en el reproductor. La reproducción puede controlarse con los controles que se encuentran sobre el navegador web. Puede verse un ejemplo en la Imagen I.24.

Imagen I.24 Contenido de un Podcast.

169

Page 170: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Internet Radio

Además de archivos MP3 la aplicación puede mandar al reproductor flujos de audio en formato MP3 que descarga de la red a partir de fuentes que transmiten el contenido en tiempo real, como son las radios. El funcionamiento es similar al del Podcasting, pero esta vez los enlaces no apuntan a archivos MP3 sino a servidores que transmiten dicho contenido o a archivos PLS (listas de reproducción) que contienen la dirección de dichos servidores.

Dentro de la subsección “Internet Radio” hay dos opciones:

ShoutCast: Página web con cientos de radios que emiten codificando el audio en formato MP3.

Radios Favoritas: Similar a “Poscasters Favoritos” pero en este caso se almacena la dirección del servidor o archivo PLS de la radio en cuestión.

Ambas opciones funcionan de manera similar a la opción “Poscasters Favoritos”, cargando el contenido del enlace en el navegador web integrado. La reproducción se controla con los botones que se encuentran sobre el navegador web. En la Imagen I.25 puede verse la página web de SHOUTcast.

Imagen I.25 Página web de SHOUTcast.

170

Page 171: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

APÉNDICE II Estructura de FAT16

II.1 Introducción

En este apéndice se va a detallar la estructura del sistema de archivos FAT16 que se ha utilizado en el presente proyecto. A partir de la información aquí descrita se ha desarrollado la librería para el microcontrolador que fue explicada en el capítulo de Firmware.

II.2 Estructura de FAT16

En el primer sector del disco se encuentra el Master Boot Record (MBR) que a su vez guarda información de donde se encuentran cada una de las particiones del disco51. Es el primer sector que se debe leer antes de poder acceder a una partición.

II.2.1 Master Boot Record

Es la estructura más importante en un disco y se crea cuando éste es particionado. Contiene una pequeña cantidad de código ejecutable, llamado código de arranque maestro, la firma del disco y las tablas de partición del disco. Se puede ver la estructura en la Tabla II.1.

Posición Descripción Tamaño

0x000 Código ejecutable 446 bytes

0x1BE 1ª Partición 16 bytes

0x1CE 2ª Partición 16 bytes

0x1DE 3ª Partición 16 bytes

0x1EE 4ª Partición 16 bytes

0x1FE Firma de la unidad (0x55AA) 2 bytesTabla II.1 Estructura del Master Boot Record

Lo primero que se debe hacer es localizar la posición de la primera partición, que es donde se van a alojar los archivos y con la que se va a trabajar. Como se puede observar en la Tabla II.1 la información para localizar la primera partición se encuentra en la posición 0x1BE dentro del MBR, la estructura de este campo se puede ver en la TablaII.2, gracias a estos datos se puede localizar el principio y fin de la partición, el tipo de partición y su tamaño.

51 Se utilizará 'disco' de manera genérica, ya que la estructura es igual tanto en discos duros como en tarjetas de memoria.

171

Page 172: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Posición relativa

Descripción Tamaño

0x00 Estado de la partición (0x00=desactivo; 0x80=activo) 1 byte

0x01 Cabezal de inicio de la partición 1 byte

0x02 Cilindro/Sector de inicio de la partición(10 bits indican el cilintro y 6 el sector)

2 bytes

0x04 Tipo de partición (0x04=FAT16 de menos de 32MB; 0x08=FAT16 de más de 32MB)

1 byte

0x05 Cabezal de fin de la partición 1 byte

0x06 Cilindro/Sector de fin la partición(10 bits indican el cilindro y 6 el sector)

2 bytes

0x08 Número de sectores entre el principio del disco y el principio de la partición

4 bytes

0x0C Número total de sectores de la partición 4 bytesTabla II.2 Estructura del registro de partición en el MBR

II.2.2 Sector de arranque de la partición

La estructura de una partición FAT16 se compone de cuatro partes: el sector de arranque de la partición, dos copias de la tabla de partición, el directorio raíz y el área de datos, tal y como aparece en la Imagen II.1.

Imagen II.1 Estructura de una partición FAT16

El sector de arranque es el primer sector en la partición y su estructura depende del tipo de partición del que se trate. La estructura del sector de arranque de FAT16 se puede ver en la Tabla II.3.

172

Page 173: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Posición relativa

Descripción Tamaño

0x00 Código de salto 3 bytes

0x03 OEM ID 8 bytes

0x0B Bytes por sector (512 bytes) 2 bytes

0x0D Sectores por cluster 1 byte

0x0E Sectores reservados 2 bytes

0x10 Números de copias de FAT 1 byte

0x11 Número máximo de entradas en el directorio raíz 2 bytes

0x13 Número de sectores en la partición 2 bytes

0x15 Descripción del medio 1 byte

0x16 Sectores por FAT 2 bytes

0x18 Sectores por pista 2 bytes

0x1A Número de cabezales 2 bytes

0x1C Número de sectores ocultos en la partición 4 bytes

0x20 Número de sectores en la partición 4 bytes

0x24 Número de la unidad lógica de la partición 2 bytes

0x26 Firma extendida (0x29) 1 byte

0x27 Número de serie de la partición 4 bytes

0x2B Nombre de volumen de la partición 11 bytes

0x36 Nombre de la FAT (FAT16) 8 bytes

0x3E Código ejecutable 448 bytes

0x1FE Marca fin de sector (0x55AA) 2 bytesTabla II.3 Estructura del sector de arranque de FAT16

Gracias a los datos que se pueden extraer del sector de arranque de la partición podemos localizar las tablas de partición (FAT), el directorio raíz y el área de datos, así como conocer diferentes parámetros importantes, como el tamaño del sector, los sectores por cluster, número de sectores, etc. En la Tabla II.4 se describe como calcular la posición de los diferentes elementos de la partición a partir de los datos extraídos del sector de arranque.

Elemento Posición

Sector de arranque Inicio de la partición

Tablas FAT Inicio + Número de sectores reservados

Directorio raíz Inicio + Nº sectores reservados + (Nº sectores por FAT * Nº FATs)

Área de datos Posición directorio raiz + ((Max Nº de entradas en el dir. Raíz * 32) / bytes por sector)

Tabla II.4 Cálculo de la posición de los elementos de una partición

Hay que recordar que todas estas posiciones hacen referencia a sectores, por tanto hay que multiplicar por el número de bytes por sector para obtener la posición en bytes.

173

Page 174: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

II.2.3 Tabla de asignación de archivos (FAT)

Los ficheros son alojados en disco divididos en pequeños fragmentos, cada uno de estos fragmentos se almacenan en una unidad de asignación o cluster en el área de datos. La tabla de asignación de archivos utiliza una estructura encadenada donde cada cluster apunta al siguiente, y permite enlazar cada una de las partes de los archivos almacenados. La FAT se compone de un conjunto de celdas compuestas por 16 bytes, de forma que existe una correspondencia entre las celda de la FAT y los clusters del área de datos.

Las dos primeras celdas de la FAT contiene información especial y no se utilizan, por tanto se empieza utilizando la tercera celda. Cada celda contiene información sobre cuál es el siguiente cluster del fichero, el valor de la celda puede ser:

● 0x0002-0xFFEF El valor señala el número del siguiente cluster del fichero.

● 0x0000 Cluster libre● 0x0001 Valor no usado● 0xFFF0-0xFFF6 Reservados● 0xFFF7 Cluster erróneo● 0xFFF8-0xFFFF Último cluster del fichero

De esta forma se señala si un determinado cluster está en uso o no, y si lo está cuál es el siguiente cluster del archivo o si se trata del último cluster. En la Imagen II.2 puede verse un ejemplo simple de FAT, donde se observan tres ficheros no fragmentados de 3, 2 y 1 cluster. La información referente al nombre del archivo, primer cluster y otros parámetros se encuentran en las secciones de directorio raíz o en el área de datos como veremos posteriormente.

Imagen II.2 Ejemplo de tabla de asignación

El tamaño de cada cluster depende del tamaño del disco y se obtiene del sector de arranque de la partición. En la Tabla II.5 se muestran los tamaños de cluster asociados al tamaño de la partición.

174

Page 175: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Tamaño de la partición Sectores por cluster Tamaño del cluster

0 MB – 32 MB 1 512 bytes

33 MB – 64 MB 2 1 KB

65 MB – 128 MB 4 2 KB

129 MB – 255 MB 8 4 KB

256 MB – 511 MB 16 8 KB

512 MB – 1023 MB 32 16 KB

1024 MB – 2047 MB 64 32 KB

2048 MB – 4095 MB(solo compatible en algunos

sistemas)

128 64 KB

Tabla II.5 Tamaños de cluster según tamaño de partición

II.2.4 Directorio raíz

Después de las tablas FAT se encuentra el directorio raíz, que contiene información sobre los archivos y directorios que se encuentran en el directorio raíz del sistema de archivos. Cada archivo o directorio se representa como una entrada de 32 bytes en la cual se almacena la información necesaria para acceder a dicho archivo. Dependiendo del valor del primer byte de la entrada se puede saber si se trata de una entrada vacía (0x00), con un archivo borrado (0xE5) o una entrada en uso (cualquier otro valor). En la Tabla II.6 se puede ver la estructura de cada una de las entradas del directorio.

Posición Tamaño Descripción

0x00 8 bytes Nombre del archivo

0x08 3 bytes Extensión del archivo

0x0B 1 byte Atributos

0x0C 10 bytes Reservados

0x16 2 bytes Hora de la última modificación

0x18 2 bytes Fecha de la última modificación

0x1A 2 bytes Cluster inicial

0x1C 4 bytes Tamaño del archivo (0 si se trata de un directorio)Tabla II.6 Estructura de entrada de directorio

El byte de atributos está compuesto por un conjunto de bits, cada uno representa un atributo que puede tener o no el archivo. Los atributos son:

● Bits del 7-6: Reservados● Bit 5: Archivo. Si este bit es 1 significa que ha sido modificado desde la

última copia de seguridad.● Bit 4: Directorio. Es 1 si la entrada es de un directorio.● Bit 3: Nombre de volumen. El nombre del archivo es el nombre del

volumen.

175

Page 176: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

● Bit 2: Archivo del sistema.● Bit 1: Oculto.● Bit 0: Archivo de solo lectura.

La hora se codifica de la siguiente forma: los bits del 15-11 corresponden a la hora, del 10-5 los minutos y del 4-0 los segundos (divididos entre 2). La fecha de codifica: del 15-9 el año (comenzando desde 1980), del 8-5 el mes y del 4-0 el día.

En caso de que la entrada se trate de un directorio los datos almacenados en el cluster dentro de el área de datos corresponden a una estructura equivalente a la descrita en el directorio raíz.

II.2.5 Área de datos

A continuación del directorio raíz se encuentra el área de datos, que se compone de un conjunto de clusters donde se guardan los fragmentos de los ficheros tal y como se indica en la tabla de asignación de archivos. También se almacenan las estructuras de los directorios en el caso de que se trate de un directorio en lugar de un archivo.

176

Page 177: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

Bibliografía

[Aguayo04] Paul Aguayo, Introducción al Microcontrolador, Ingeniería LCI.

[AN232B02] AN232B02 Application Notes "FT232BM/FT245BM Power Control and Pin States". Future Technology Devices International

[AN232B03] AN232B-03 Application Notes "Optimising D2XX Data Throughput". Future Technology Devices International

[AN232B04] AN232B-04 Application Notes "Data Throughput, Latency & Handshaking". Future Technology Devices International

[AN232B06] AN232B-06 Application Notes "Debugging FT232BM and FT245BM Based Designs". Future Technology Devices International

[AN232B07] AN232B-07 Application Notes "Configuring FTDI's VCP Drivers to use Location IDs". Future Technology Devices International

[AN232R04] AN232R-04 Application Notes "Windows Combined Driver Model". Future Technology Devices International Ltd.

[Anderson01] Don Anderson, USB System Architectur (USB 2.0), 2001.MindShare, Inc. ISBN: 0-201-46137-4

[AmontecLCD] Amontec. Nokia 3310 LCD. http://www.amontec.com/lcd_nokia_3310.shtml

[Axelson05] Jan Axelson, USB Complete, Tercera edidion 2005Lakeview Research LLC, ISBN 978-1-931448-03-1

[Buchmann] Isidor Buchmann, Batteries in a portable world, Segunda edición.Codex Electronics Inc.

[BZX85C] Fairchild, Especificaciones del diodo zener BZX85C3V6, 2004

[DG245] DG245 Application Notes "FT245BM Designers Guide". Future Technology Devices International

[DLPUSB245M] DLP Design. DLP-USB245M User Manual, 2002.

177

Page 178: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

[Dobiash99] Jack Dobiash, FAT16 Structure Information, 1999http://home.teleport.com/~brainy/fat16.htm

[FraunHist] Fraunhofer IIS, The MP3 Historyhttp://www.iis.fraunhofer.de/EN/bf/amm/mp3history/mp3history01.jsp

[FT245BM] FT245BM Datasheet 1.8, 2005. Future Technology Devices International

[FTDID2XX] D2XX Programmer's Guide 3.4 (2006). Future Technology Devices International

[Fujitsu00] Soporte Técnico OEM Fujitsu España, Un paseo por USB-1, 2000.

[Hacker00] Scot Hacker, MP3: The Definitive Guide, 2000.Publisher: O'Relly, ISBN: 1-56592-661-7

[Harrison04] Pete Harrison, Micromouse Information Centre - Battery Chargers. 2004.http://micromouse.cannock.ac.uk/batteries/charging.htm

[HITACHI03] Hitachi, Multimedia Card User's Manual, 2003

[Hung] Hung-Chih Lai; Advisor: Dr. Jwo-Shen Hu, Real-Time Implementation of MPEG-1 Layer 3 Audio Decoder on a DSP Chip. Institute of Electrical and Control Engineering, National Chiao-Tung University, Taiwan.

[ID3ORG] Web oficial y especificaciones ID3http://www.id3.org

[IEEE97] IEEE, MPEG Digital Audio Coding, september 1997.IEEE Signal Process Magazine, pag. 59-81. September 1997.

[Lagerstöm01] Krister Lagerstöm, Design and Implementation of an MPEG-1 Layer III Audio Decoder, 2001. Master's Thesis, Computer Science and Engineering Program.Chalmers University of Technology, Gothenburg, Sweden.

[Linden02] David Linden and Thomas B. Reddy, Handbook of batteries, Tercera edición 2002.McGraw-Hill, ISBN 0-07-135978-8

[MAX1675] Maxim, Especificaciones del regulador de tensión MAX1675, 2000

178

Page 179: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

[Microsoft99] Microsoft, FAT: General Overview of On-Disk Format, 1999

[MP3RefHist] MP3 History - www.mp3reference.comhttp://www.mp3reference.com/history.htm

[MPManReview] MPManiac, Eiger Labs MPMan Review - Models F10 & F20,, 1999 http://business.fortunecity.com/tisch/493/MPManReview.htm

[Noll00] Peter Noll, MPEG Digital Audio Coding Standars, 2000.CRC Press LLC. Technical University of Berlin

[Pan93] Davis Yen Pan, Digital Audio Compression, 1993.Digital Technical Journal, Vol. 5 No. 2 Spring 1993

[Pan95] Davis Yen Pan, A Tutorial on MPEG/Audio CompressionIEEE Multimedia, Summer 1995, pag. 60-74

[PCD8544] Philips Semiconductors. PCD8544 48x84 pixels matrix LCD controller/driver, 1999.

[PIC18FXX2] Microchip Technology, PIC18FXX2 Datasheet

[PJB100] PJB-100 Info Sitehttp://www.mpython.com/pjb/index.htm

[PLSREF] Especificaciones del formato PLShttp://developer.apple.com/documentation/QuickTime/QT6WhatsNew/Chap1/chapter_1_section_58.html

[PODCASTREF] Especificaciones del formato Podcasthttp://www.apple.com/itunes/store/podcaststechspecs.html

[Samsung] Samsung Semiconductors, NAND Flashhttp://www.samsung.com/global/business/semiconductor/products/flash/Products_NANDFlash.html

[Samsung04] Samsung, Multimedia Card Specification, 2004

[SanDisk03] SanDisk, Multimedia Card Product Manual, 2003

[TC115] Microchip, Especificaciones del regulador de tensión TC115, 2003

[VargasDuque01] Alexander Vargas y Alejandro Duque, Codificador MP3 en Matlab, 2001. Universidad Pontificia Bolivariana de Medellín, Colombia. http://members.fortunecity.com/alex1944/index.html

179

Page 180: Reproductor de MP3 con almacenamiento en …tapec.uv.es/jboluda/projectes/proyectos_antiguos/Memoria...Reproductor de MP3 con almacenamiento en Multimedia Card y comunicación a través

[VS1001K] VSLI Solution, VS1001K Datasheet 4.14, 2004

[VS10XXANOUT] VSLI Solution, VS10XX AppNote: Connecting analog outputs, Rev 1.22, 2006

[ZXM61P03F] Zetex, Especificaciones del MOSFET de canal P ZXM61P03, 1999

180