Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Memoria Completa Reproductor MP3 PDF
Memoria Completa Reproductor MP3 PDF
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.
Índice de contenido
1.Introducción......................................................................................................................15
1.1 Presentación..............................................................................................................15
1.2 Objetivos...................................................................................................................16
1.3 Contenidos................................................................................................................17
2. Estado de la tecnología....................................................................................................18
2.1 Contenido..................................................................................................................18
2.2 Reproductores de MP3.............................................................................................18
2.2.1 Los primeros decodificadores...........................................................................18
2.2.1 Los primeros reproductores..............................................................................19
2.2.2 Clasificación de los reproductores....................................................................21
2.2.3 Reproductores no comerciales..........................................................................24
2.3 Formato MP3............................................................................................................25
2.3.1 Orígenes del MP3.............................................................................................25
2.3.2 Principios psicoacústicos..................................................................................26
2.3.3 Introducción a la compresión de audio MPEG ................................................29
2.3.4 Algoritmo de codificación MPEG-1 Layer 3....................................................30
2.3.5 Algoritmo de decodificación MPEG-1 Layer 3................................................33
2.4 Tarjetas de memoria no volátil..................................................................................36
2.4.1 Memorias Flash.................................................................................................36
2.4.2 Tipos de tarjetas................................................................................................38
2.5 El interfaz de comunicación USB.............................................................................42
2.5.1 Orígenes del USB.............................................................................................43
2.5.2 Características del USB....................................................................................43
2.5.3 Topología...........................................................................................................46
2.5.5 Nivel físico........................................................................................................46
2.5.6 Protocolo...........................................................................................................47
2.5.7 Tipos de transferencias en USB 2.0..................................................................48
2.6 Microcontroladores...................................................................................................50
2.6.1 Definición y características...............................................................................50
2.6.2 Selección del microcontrolador........................................................................51
2.6.3 Aplicaciones......................................................................................................51
3. Diseño y desarrollo del hardware....................................................................................52
3.1 Introducción..............................................................................................................52
3.2 Selección de componentes........................................................................................52
3.2.1 El microcontrolador..........................................................................................53
3.2.2 El módulo USB.................................................................................................55
3.2.3 La tarjeta de memoria.......................................................................................57
3.2.4 El chip decodificador de MP3...........................................................................58
3.2.5 La pantalla LCD................................................................................................58
3.3 Programa, herramientas y metodología utilizada.....................................................60
3.3.1 Diseño...............................................................................................................60
3.3.2 Fabricación........................................................................................................61
3.3.3 Testeo................................................................................................................62
3.4 Diseño de la PCB......................................................................................................63
3.4.1 Alimentación.....................................................................................................63
3.4.2 Microcontrolador..............................................................................................70
3.4.3 Módulo USB.....................................................................................................72
3.4.4 Decodificador VS1001k....................................................................................78
5
3.4.5 Tarjeta Multimedia Card...................................................................................82
3.4.6 Pantalla LCD.....................................................................................................83
3.4.7 Botonera............................................................................................................85
3.4.8 Otros elementos................................................................................................85
4. Diseño y desarrollo del firmware....................................................................................87
4.1 Introducción..............................................................................................................87
4.2 Herramientas de desarrollo utilizadas.......................................................................87
4.3 Librerías desarrolladas..............................................................................................89
4.3.1 Introducción......................................................................................................89
4.3.2 Librería VS1001K.............................................................................................89
4.3.3 Librería Multimedia Card.................................................................................96
4.3.4 Librería FAT16................................................................................................103
4.3.5 Librería de la pantalla LCD............................................................................109
4.3.6 Librería USB...................................................................................................114
4.3.7 Lectura de ID3v1 y ID3v2.............................................................................115
4.3.8 Funciones de visualización de datos y menú..................................................117
4.4 Protocolo de comunicación Reproductor-PC..........................................................118
4.4.1 Introducción....................................................................................................118
4.4.2 Sistema de mensajes........................................................................................119
4.4.3 Inicialización de la comunicación...................................................................121
4.4.4 Comandos de navegación...............................................................................122
4.4.5 Comandos de control......................................................................................124
4.4.6 Comandos de reproducción.............................................................................125
4.4.7 Comandos para el decodificador.....................................................................126
4.4.7 Errores.............................................................................................................127
4.5 Programa principal..................................................................................................127
4.5.1 Introducción....................................................................................................127
4.5.2 Función principal............................................................................................127
4.5.3 Función temporizada.......................................................................................128
4.5.4 Otras funciones...............................................................................................131
5. Diseño y desarrollo de la aplicación..............................................................................132
5.1 Introducción............................................................................................................132
5.2 Herramientas de desarrollo utilizadas.....................................................................132
5.3 Librería del módulo USB........................................................................................133
5.4 Librería de control del reproductor.........................................................................134
5.5 Modos de reproducción..........................................................................................136
5.5.1 Introducción....................................................................................................136
5.5.1 Reproducción remota de archivos en el reproductor......................................136
5.5.2 Reproducción remota de archivos en el ordenador.........................................137
5.5.3 Reproducción local de archivos en el reproductor..........................................137
5.5.4 Reproducción remota de streams de internet..................................................138
5.6 Podcasting y streaming a través de internet............................................................139
5.6.1 Introducción....................................................................................................139
5.6.2 Obtención e identificación del tipo de recurso................................................139
5.6.3 Streaming........................................................................................................140
5.6.4 Podcasting.......................................................................................................142
5.6.5 Emisoras favoritas...........................................................................................144
6. Presupuesto y planificación...........................................................................................145
6.1 Introducción............................................................................................................145
6.2 Coste del software...................................................................................................145
6.3 Coste de las herramientas.......................................................................................146
6
6.4 Coste de los componentes y PCB...........................................................................147
6.5 Planificación y mano de obra.................................................................................148
7. Conclusiones y trabajo futuro........................................................................................151
7.1 Conclusiones...........................................................................................................151
7.2 Trabajo futuro.........................................................................................................152
APÉNDICE I Manual de usuario......................................................................................154
1. Introducción..............................................................................................................154
2. Especificaciones técnicas..........................................................................................154
3. Requisitos del sistema...............................................................................................155
4. Reproductor..............................................................................................................155
4.1 Vista general y controles....................................................................................155
4.2 Alimentación y recarga de pilas.........................................................................157
4.3 Pantalla LCD......................................................................................................157
4.4 Utilización..........................................................................................................159
5 Aplicación..................................................................................................................161
5.1 Instalación..........................................................................................................161
5.2 Ventana principal................................................................................................164
5.3 Contenido de la tarjeta de memoria...................................................................165
5.4 Reproducción de archivos en la tarjeta de memoria..........................................165
5.5 Reproducción en la aplicación de archivos de la memoria................................166
5.6 Reproducción de archivos almacenados en el PC..............................................167
5.7 Streaming...........................................................................................................168
APÉNDICE II Estructura de FAT16..................................................................................171
II.1 Introducción...........................................................................................................171
II.2 Estructura de FAT16...............................................................................................171
II.2.1 Master Boot Record.......................................................................................171
II.2.2 Sector de arranque de la partición..................................................................172
II.2.3 Tabla de asignación de archivos (FAT)..........................................................174
II.2.4 Directorio raíz................................................................................................175
II.2.5 Área de datos..................................................................................................176
Bibliografía........................................................................................................................177
7
8
Índice de imágenes
Imagen 2.1 Primer chip decodificador de MP3 de Micronas (1994)..................................18
Imagen 2.2 Primer prototipo de un reproductor de MP3 sin partes móviles (1994)...........19
Imagen 2.3 Reproductor MPMan F10.................................................................................19
Imagen 2.4 Interior del reproductor MPMan F10...............................................................19
Imagen 2.5 Reproductor Diamon Rio PMP300..................................................................20
Imagen 2.6 Interior del reproductor Diamon Rio PMP300.................................................20
Imagen 2.7 Reproductor con disco duro PJB-100 (1999)...................................................20
Imagen 2.8 Reproductor MP3 de CDs Mambo-X...............................................................20
Imagen 2.9 Nevera Centrlpark de Whirpool, con reproductor de DVD y MP3..................21
Imagen 2.10 Umbrales de sensibilidad y auditivo [Hacker00]...........................................27
Imagen 2.11. Bandas críticas aproximadas [Pan93]............................................................27
Imagen 2.12 . Umbral en silencio y umbral de enmascaramiento ......................................28
Imagen 2.13 Umbrales de enmascaramiento temporal [Hung]...........................................28
Imagen 2.14 Estructura de codificación MP3[Lagerstöm01].............................................30
Imagen 2.15 Representación del filtro................................................................................30
Imagen 2.16 Anchos de banda del filtro MPEG/Audio vs ancho de las bandas
críticas[Pan95].....................................................................................................................31
Imagen 2.17 Ecuación de la transformación MDCT [Hung]..............................................31
Imagen 2.18 Formato del marco MP3.................................................................................32
Imagen 2.19 Ejemplo de bit reservoir.................................................................................33
Imagen 2.20 Diagrama de bloques del decodificador MPEG-1 Layer 3 ...........................33
Imagen 2.21 Diagrama de bloques de la decodificación del flujo de datos........................33
Imagen 2.22 Ecuación del calculo de desescalado de las líneas de frecuencia...................34
Imagen 2.23 Diagrama de bloques del Mapeo de la frecuencia al tiempo..........................35
Imagen 2.24 Expresión analítica del MDCT inverso..........................................................35
Imagen 2.24 Evolución prevista de la memoria NAND flash según la capacidad y tipo de
aplicación [Samsung]..........................................................................................................37
Imagen 2.25 Evolución prevista de la memoria NAND flashsegún la capacidad, el tamaño
y la velocidad [Samsung]....................................................................................................38
Imagen 2.26 Tarjeta CompactFlash.....................................................................................38
Imagen 2.27 Tarjeta SmartMedia........................................................................................39
Imagen 2.28 Tarjeta Memory Stick Pro Duo MagicGate....................................................40
Imagen 2.29 Tarjeta xD-Picture...........................................................................................41
Imagen 2.30 Tarjeta Multimedia Card.................................................................................41
Imagen 2.31 Tarjetas SD, MiniSD y MicroSD....................................................................42
Imagen 2.32 Terminales MicroUSB A y MicroUSB B.......................................................43
Imagen 2.33 Topología USB [Axelson05]..........................................................................46
Imagen 2.34 Cable para low speed[Anderson01]...............................................................47
Imagen 2.35 Cable para full y high speed[Anderson01].....................................................47
Imagen 3.3 Módulo DLP-USB245M-G..............................................................................57
Imagen 3.6 Pantalla LCD con controlador Philips PCD8544.............................................59
Imagen 3.7 Materiales para realizar el hardware.................................................................60
Imagen 3.8 Procesos para el diseño del circuito.................................................................61
Imagen 3.9 Diseño modular del circuito.............................................................................63
Imagen 3.10 Control de alimentación USB.........................................................................65
Imagen 3.11 Circuito de carga.............................................................................................66
Imagen 3.12 Funcionamiento del diodo Zener como regulador..........................................67
Imagen 3.13 Regulador de tensión TC115..........................................................................68
9
Imagen 3.14 Esquemático del regulador TC115 ................................................................68
Imagen 3.15 Regulador MAX1675.....................................................................................69
Imagen 3.16 Esquemático del regulador MAX1675...........................................................69
Imagen 3.17 Esquemático del módulo de alimentación......................................................70
Imagen 3.18 Microcontrolador 18LF452............................................................................71
Imagen 3.19 Configuración del cristal del microcontrolador..............................................72
Imagen 3.20 Diagrama de bloques del funcionamiento del FT245BM..............................73
Imagen 3.21 Esquemático del módulo DLP-USB245M.....................................................74
Imagen 3.22 Configuración de la alimentación del USB....................................................76
Imagen 3.23 Control de alimentación según especificaciones............................................76
Imagen 3.24 Conexión del módulo USB con el microcontrolador.....................................77
Imagen 3.25 Cronograma del ciclo de lectura USB............................................................77
Imagen 3.26 Cronograma del ciclo de escritura USB.........................................................78
Imagen 3.27 Funcionamiento del decodificador VS1001k.................................................79
Imagen 3.31 Circuito recomendado del VS1001k..............................................................80
Imagen 3.32 Circuito implementado del VS1001k.............................................................80
Imagen 3.28 Cronograma del interfaz SDI.........................................................................81
Imagen 3.29 Ciclo de lectura SCI.......................................................................................82
Imagen 3.30 Ciclo de escritura SCI.....................................................................................82
Imagen 3.31 Conexión de la tarjeta MMC..........................................................................83
Imagen 3.32 Pinout de la pantalla LCD..............................................................................84
Imagen 3.33 Circuito usado con la pantalla LCD...............................................................84
Imagen 3.34 Cronograma de comunicación con la pantalla................................................85
Imagen 3.35 Circuito de la botonera...................................................................................85
Imagen 3.36 Esquemático de los interfaces ICSP y UART................................................86
Imagen 4.1 Esquemático usado con el MAX3232..............................................................88
Imagen 4.2 Programador de PICs........................................................................................88
Imagen 4.3 Esquema de librerías........................................................................................89
Imagen 4.4 Pinout de la tarjeta MMC.................................................................................97
Imagen 4.5 Diagramas de los protocolos MMC y SPI........................................................98
Imagen 4.6 Estructura de las respuestas R1 y R2..............................................................100
Imagen 4.7 Diagrama de inicialización.............................................................................101
Imagen 4.10 Mapeo de la memoria DDRAM en la pantalla. Extraído de las
especificaciones del controlador PCD8544.......................................................................110
Imagen 4.11 Diagrama de tiempos del envío de un byte...................................................112
Imagen 4.12 Estructura del mensaje..................................................................................119
Imagen 4.13 Diagrama de inicialización de la comunicación...........................................121
Imagen 4.14 Diagrama de funcionamiento del comando USB_DIR_LIST......................122
Imagen 4.15 Diagrama del funcionamiento del comando USB_DIR_GET.....................123
Imagen 4.16 Diagrama de flujo de la función principal....................................................128
Imagen 4.17 Diagrama de flujo de la función temporizada..............................................129
Imagen 4.18 Diagrama de flujo de la comprobación de la botonera.................................131
Imagen 5.1 Arquitectura del uso del driver USB D2XX..................................................133
Imagen 5.2 Estructura interna de la librería de comunicación..........................................135
Imagen 5.3 Reproducción remota de archivos en el reproductor......................................136
Imagen 5.4 Reproducción remota de archivos en el PC....................................................137
Imagen 5.5 Reproducción local de archivos remotos........................................................138
Imagen 5.6 Reproducción de audio de Shoutcast..............................................................141
Imagen 5.6 Podcast cargado en el navegador de la aplicación..........................................142
Imagen 5.7 Listado de Podcast favoritos...........................................................................144
Imagen 6.1 Diagrama de Gantt..........................................................................................149
10
Imagen I.1 Visión general del reproductor........................................................................155
Imagen I.2 Detalles de la botonera....................................................................................156
Imagen I.3 Pantalla LCD con el reproductor en espera.....................................................158
Imagen I.4 Pantalla del listado de archivos.......................................................................158
Imagen I.5 Pantalla del listado de opciones......................................................................158
Imagen I.6 Descripción de la información en pantalla......................................................159
Imagen I.7 Ventana de instalación del driver de USB.......................................................162
Imagen I.8 Asistente de instalación de la aplicación 1......................................................162
Imagen I.9 Asistente de instalación de la aplicación 2......................................................163
Imagen I.10 Asistente de instalación de la aplicación 3....................................................163
Imagen I.11 Asistente de instalación de la aplicación 4....................................................163
Imagen I.12 Iniciación de comunicación..........................................................................164
Imagen I.13 Regiones principales de la aplicación...........................................................164
Imagen I.14 Contenido de la tarjeta de memoria..............................................................165
Imagen I.15 Ventana de copia de un archivo.....................................................................165
Imagen I.16 Opción Reproducción remota.......................................................................166
Imagen I.17 Reproducción remota de archivos en la tarjeta.............................................166
Imagen I.18 Opción Reproducción local...........................................................................166
Imagen I.19 Reproductor local de audio...........................................................................167
Imagen I.20 Lista de reproducción....................................................................................167
Imagen I.21 Añadiendo archivos al listado de reproducción............................................168
Imagen I.22 Detalle de los iconos del estado del archivo.................................................168
Imagen I.23 Podcast Favoritos..........................................................................................169
Imagen I.24 Contenido de un Podcast...............................................................................169
Imagen I.25 Página web de SHOUTcast...........................................................................170
Imagen II.1 Estructura de una partición FAT16................................................................172
Imagen II.2 Ejemplo de tabla de asignación.....................................................................174
11
12
Índice de tablas
Tabla 2.1 Diferencias entre las tecnologías NOR y NAND................................................37
Tabla 2.2 Comparación de los interfaces más populares [Axelson05]................................45
Tabla 2.3 Comparación de los tipos de transferencia [Axelson05].....................................49
Tabla 3.1 Características de la familia 18Fxx2...................................................................55
Tabla 3.2 Comparación de diferentes integrados para el interfaz USB...............................56
Tabla 3.4 Comparación de tarjetas de memoria..................................................................57
Tabla 3.5 Comparación de decodificadores de MP3...........................................................58
Tabla 3.6 Comparativa de pantallas LCD............................................................................59
Tabla 3.7 Rango de tensiones de los componentes..............................................................64
Tabla 3.8 Consumo máximo de los componentes...............................................................64
Tabla 3.9 Conexiones del microcontrolador........................................................................72
Tabla 3.10 Explicación del pinout del módulo USB...........................................................75
Tabla 3.11 Pinout de la tarjeta Multimedia Card.................................................................82
Tablas 4.1 Funciones SDI....................................................................................................91
Tabla 4.2 Registros internos del decodificador...................................................................91
Tabla 4.3 Descripción de los bits del registro MODE.........................................................92
Tabla 4.4 Frecuencias según los bits del registro AUDATA...............................................93
Tabla 4.5 Bits de los registros HDAT0 y HDAT1...............................................................94
Tabla 4.6 Funciones SCI......................................................................................................96
Tabla 4.7 Comandos más utilizados del protocolo SPI.......................................................99
Tabla 4.8 Comparación de las versiones de FAT...............................................................104
Tabla 4.15 Líneas de comunicación de la pantalla LCD...................................................109
Tabla 4.16 Juego de instrucciones de la pantalla LCD......................................................111
Tabla 4.17 Estructura de la etiqueta ID3v1.......................................................................116
Tabla 4.18 Comandos del protocolo de comunicación......................................................120
Tabla 6.1 Precio del Software............................................................................................146
Tabla 6.2 Precio de las herramientas.................................................................................147
Tabla 6.3 Precio de componentes......................................................................................148
Tabla 6.4 Valoración del coste de mano de obra...............................................................150
Tabla 6.5 Coste total del proyecto.....................................................................................150
Tabla II.1 Estructura del Master Boot Record...................................................................171
Tabla II.2 Estructura del registro de partición en el MBR................................................172
Tabla II.3 Estructura del sector de arranque de FAT16.....................................................173
Tabla II.4 Calculo de la posición de los elementos de una partición................................173
Tabla II.5 Tamaños de cluster según tamaño de partición.................................................175
Tabla II.6 Estructura de entrada de directorio...................................................................175
13
14
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.
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.
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
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:
2 La elección del USB como interfaz de conexión será discutida en posteriores apartados.
16
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:
17
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.
18
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)
19
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].
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 Imagen 2.8 Reproductor MP3 de CDs Mambo-X
(1999)
20
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.
21
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
Interfaz
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
Codificaciones soportadas
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
altos o no soportar VBR9. No obstante los chips decodificadores actuales suelen soportar
todas estas variantes.
Funcionalidades
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
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.
25
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]
26
Imagen 2.10 Umbrales de sensibilidad y auditivo [Hacker00]
Enmascaramiento simultáneo10
27
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].
Enmascaramiento temporal
28
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
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
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.
30
Imagen 2.16 Anchos de banda del filtro MPEG/Audio vs ancho de las bandas críticas[Pan95]
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:
Bloque FFT
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
Escalado y cuantizado
Codificación Huffman
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
Imagen 2.19 Ejemplo de bit reservoir.
33
Sincronización
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.
34
Imagen 2.23 Diagrama de bloques del Mapeo de la frecuencia al tiempo
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
Inversión de frecuencia
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
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.
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
Característica NOR NAND
Capacidad Hasta 256 MB Hasta 16GB
XIP* Si No
Velocidad Borrados muy lentos Borrado rápido
Escrituras lentas Escritura rápida
Lecturas rápidas Lectura rápida
Fiabilidad Estándar: Baja:
Tiene problemas de inversión Requiere algoritmos de detección y
de bits, menos de 10% que las corrección de errores debido a la
NAND inversión de bits.
Requiere control de sectores erróneos
Ciclos de borrado 10.000 - 100.000 100.000 – 1.000.000
Tiempo de vida Menos de un 10% que las 10 veces más que las NOR
NAND
Método de acceso Aleatorio Secuencial
Uso − Almacenamiento de − Almacenamiento de datos
código
− Almacenamiento de datos
(baja capacidad)
Precio Alto Bajo
Tabla 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
Imagen 2.25 Evolución prevista de la memoria NAND flashsegún la capacidad, el tamaño y la velocidad
[Samsung]
Tarjeta CompactFlash
38
Sus características principales son:
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
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.
La tarjeta Memory Stick (Imagen 2.28) fue lanzada por Sony en octubre de 1998,
describe una familia de tarjetas:
39
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
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
40
Imagen 2.29 Tarjeta xD-Picture
41
Tarjeta Secure Digial
42
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.
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:
14 USB Implementers Forum, es una organización sin ánimo de lucro formada por varias empresas que
promueve el uso del USB.
43
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.
Velocidad
Fiabilidad
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
44
Comunicaciones sin cables
45
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.
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) (Imagen
2.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
Imagen 2.34 Cable para low speed[Anderson01] Imagen 2.35 Cable para full y high
speed[Anderson01]
2.5.6 Protocolo
47
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.
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
Interrupción
48
Isócrona
49
2.6 Microcontroladores.
50
2.6.2 Selección del microcontrolador
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
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.
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:
52
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
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.
53
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.
54
Tabla 3.1 Características de la familia 18Fxx2
55
PDIUSBD12D FT232BM FT245BM
Comunicación con el Paralelo (8 bits) Serie (RS-232) Paralelo (8 Bits)
microcontrolador
Número de pines 28 32 32
Velocidad de
transferencia Max.con 2 MB/s 1 Mbit/s 1 MB/s
el microcontrolador
Cantidad de
componentes externos Baja Baja Baja
Obtención Relativamente difícil Fácil Fácil
Flexibilidad Alta (se pueden diseñar Baja Baja
gran variedad de
dispositivos)
Sistemas Operativos y Debes crear tus propios Tiene diferentes drivers oficiales para varios
Drives Drivers sistemas operativos: Windows
(98/2000/ME/XP/Vista...), Linux y MAC OS
(8/9/X)
Complejidad de Alta Baja Baja
utilización
Cantidad de
documentación y Baja Alta Alta
ejemplos de uso
Módulo para No Si Si
prototipos
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.
56
Imagen 3.3 Módulo DLP-USB245M-G
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.
57
3.2.4 El chip decodificador de MP3
58
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.
59
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.
3.3.1 Diseño
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
Imagen 3.8 Procesos para el diseño del circuito
3.3.2 Fabricación
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
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.
3.3.3 Testeo
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
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.
3.4.1 Alimentación
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
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,3V
Tabla 3.7 Rango de tensiones 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.
64
Alimentación por USB
Circuito de carga
27 En este transistor la resistencia fuente-drenador depende del fabricante, pudiendo ser de hasta 14 ohmios
65
Imagen 3.11 Circuito de carga
R = (Vp – Vb) / Ic
Fó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Ω.
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
Imagen 3.12 Funcionamiento del diodo Zener como regulador.
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 Ω.
V −V Z
R=
I ZminI Lmax
Fórmula 3.2
V −V Z
R=
I Zmax I Lmin
Formula 3.3
67
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.
68
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.
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Ω.
69
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.
3.4.2 Microcontrolador
30 Para más información sobre las características y arquitectura del microcontrolador consultar las hojas de
especificaciones [PIC18FXX2].
70
Imagen 3.18 Microcontrolador 18LF452
71
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 pilas
Tabla 3.9 Conexiones del microcontrolador.
72
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.
73
Imagen 3.21 Esquemático del módulo DLP-USB245M
74
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/ Bits de datos.
Salida
Tabla 3.10 Explicación del pinout del módulo USB
Configuración de alimentación
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.
75
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.
Protocolo de comunicación
76
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.
77
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.
78
Imagen 3.27 Funcionamiento del decodificador VS1001k
31 No a todas las frecuencias se pueden decodificar los MP3 con tasas de bit más altas.
79
Imagen 3.31 Circuito recomendado del VS1001k
80
Protocolo de comunicación
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
Imagen 3.29 Ciclo de lectura SCI
82
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].
Protocolo de comunicación
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
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
Protocolo de comunicación
84
Imagen 3.34 Cronograma de comunicación con la pantalla
3.4.7 Botonera
85
Imagen 3.36 Esquemático de los interfaces ICSP y UART
86
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.
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
Imagen 4.1 Esquemático usado con el MAX3232
88
4.3 Librerías desarrolladas
4.3.1 Introducción
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
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_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.
37 Para más información sobre las tablas de frecuencias y muestras consultar las hojas de especificaciones
del decodificador VS1001k
90
Tablas 4.1 Funciones SDI
Funciones SCI
91
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
AUDATA
WRAM
WRAMADDR
93
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
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
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]
void vs1001_swreset()
Genera un reset software del decodificador.
void get_vol()
Devuelve el valor del volumen del decodificador.
95
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.
96
Imagen 4.4 Pinout de la tarjeta MMC
97
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.
98
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 R1 SET_BLOCKLEN Cambia el tamaño del bloque
del bloque utilizado por los comandos
CMD17 y CMD2439
CMD17 [31:0] Dirección R1 READ_SINGLE_B Comando para leer datos de la
LOCK 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_ST Establece la dirección del primer
AR sector del rango que se va a borrar
CMD33 [31:0] Dirección R1 TAG_SECTOR_EN Establece la dirección del último
D 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 R1 CRC_ON_OFF Activa o desactiva la opción de
[0:0] CRC CRC.
Si CRC=1 se activa
Si 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
Imagen 4.6 Estructura de las respuestas R1 y R2
Funciones de la librería
Comunicación básica
Es la función más básica, que envía un byte por el puerto SPI del
microcontrolador y devuelve la respuesta.
100
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
101
El proceso de inicialización es el siguiente:
Configuración
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
byte LeeChar(int32 dir)
int16 LeeInt16(int32 dir)
int MMCLeeBloque(int32 dir, byte *Gbuffer)
Escritura
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.
No obstante el sistema de archivos FAT16 tiene una serie de limitaciones que hay
que tener en cuenta, éstas son:
103
FAT12 FAT16 FAT32
Máximo tamaño de 32 MB 2 GB 4 GB
archivo
Número máximo de 4,077 65,517 268,435,437
archivos
Longitud máxima del 8.3 8.3 (Sin LFN) 255 usando LFN
nombre de archivo
Tamaño máximo de 32 MB 2 GB (4GB con 8 TB
volumen clusters de 64KB)
Tabla 4.8 Comparación de las versiones de FAT
Estructura de FAT16
Funciones de la librería
Inicialización
104
int1 IsFichero(int32 dir)
105
void MMCFileExt(int32 dir, byte *ext)
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;
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:
106
byte MMCResetFile(byte hand)
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.
107
entradas dentro de un directorio de forma secuencial mediante llamadas a las funciones
MMCNextReg o MMCNextFile.
108
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:
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 Reset
Tabla 4.15 Líneas de comunicación de la pantalla LCD
Estructura de la memoria
109
Imagen 4.10 puede verse como se mapean los datos contenidos en la memoria DDRAM
en la pantalla.
Imagen 4.10 Mapeo de la memoria DDRAM en la pantalla. Extraído de las especificaciones del controlador
PCD8544.
Comunicación
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
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.
111
Imagen 4.11 Diagrama de tiempos del envío de un byte
Inicialización
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:
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()
112
void LCD_gotoxy(byte x_pos, byte y_pos)
void LCD_clean_ddram()
113
4.3.6 Librería USB
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.
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()
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()
114
void put_USB(byte data)
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.
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.
115
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
116
4.3.8 Funciones de visualización de datos y menú
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:
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:
117
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:
Menú de opciones
4.4.1 Introducción
118
4.4.2 Sistema de mensajes
En la Tabla 4.18 se listan todos los comandos y mensajes de los que hace eso el
protocolo de comunicación.
119
Nombre Código Explicación
hexadecimal
USB_NULL 0x00 Comando nulo, no realiza ninguna acción.
USB_PC_PRESENT* 0x01 Comando de inicialización que envía el PC
USB_USB_PRESENT* 0x02 Comando de inicialización que envía el dispositivo USB
USB_PC_ASKINI* 0x03 Petición de inicialización por parte del PC
120
4.4.3 Inicialización de la comunicación
121
4.4.4 Comandos de navegación
USB_DIR_GOTO_ROOT
USB_DIR_GOTO
USB_DIR_LIST
122
USB_DIR_FILE
USB_DIR_ENDDIR
USB_DIR_GET
123
USB_DIR_GETDATA
USB_DIR_ENDGET
USB_DIR_STOPGETDATA
USB_OP_RESET
USB_OP_SETVOL
124
USB_OP_GETVOL
USB_PLAY_PLAY
USB_PLAY_PAUSE
USB_PLAY_STOP
USB_PLAY_ENDPLAY
125
4.4.7 Comandos para el decodificador
USB_VS_HRESET
USB_VS_SRESET
USB_VS_SEND
USB_VS_BEEP1
USB_VS_TEST_SEND
126
4.4.7 Errores
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.
127
Imagen 4.16 Diagrama de flujo de la función principal
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
Imagen 4.17 Diagrama de flujo de la función temporizada
129
130
Imagen 4.18 Diagrama de flujo de la comprobación de la botonera
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
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:
40 Existen drivers para todas las versiones de windows superiores al 98, MAC OS X, Linux, Windows CE y
Windows Mobile entre otros.
132
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.
133
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:
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
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.
135
La librería también incluye varias clases de ayuda para facilitar la utilización de
la clase de comunicación, estas son:
5.5.1 Introducción
136
5.5.2 Reproducción remota de archivos en el ordenador
137
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.
138
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.1 Introducción
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.
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
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
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.
140
[playlist]
NumberOfEntries=2
File1=http://ejemplodeservidor.com:80
Title1=Radio que emite en formato MP3
Length1=-1
File2=http://miservidor.com/cancion.mp3
Title2=Archivo MP3 remoto
Length2=230
Version=2
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.
141
5.6.4 Podcasting
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.
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].
142
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" />
<channel>
<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>
143
5.6.5 Emisoras favoritas
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.
144
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:
Por último indicar que el coste de los componentes y materiales de esta sección
corresponden a precios sin IVA.
145
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.
146
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
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
147
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
46 Valoración obtenida a partir de las tablas salariales del convenio laboral de “Empresas de ingeniería y
estudios técnicos”
148
Imagen 6.1 Diagrama de Gantt
149
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.
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
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.
151
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.
152
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
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.
2. Especificaciones técnicas
A continuación se listan las especificaciones del reproductor:
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
3. Requisitos del sistema
Los requisitos del sistema son:
4. Reproductor
155
En la Imagen I.1 puede verse una visión general del reproductor, en la que
destacan lo siguientes elementos:
156
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)
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
Imagen I.3 Pantalla LCD con el reproductor en espera.
158
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.
4.4 Utilización
159
Reproducción de un archivo
Controles de reproducción
Control de volumen
Menú de opciones
160
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”.
5 Aplicación
5.1 Instalación
http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-
4b0d-8edd-aab15c5e04f5&displaylang=es
50 Solo está disponible el modo de reproducción normal, en futuras actualizaciones pueden incluirse otros
modos de reproducción, como el aleatorio.
161
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.
162
Imagen I.9 Asistente de instalación de la aplicación 2.
163
5.2 Ventana principal
164
5.3 Contenido de la tarjeta de memoria
165
Imagen I.16 Opción Reproducción remota.
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
Imagen I.19 Reproductor local de audio.
167
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 Imagen
I.21.
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.
5.7 Streaming
Podcasting
168
usuario. En la Imagen I.23 puede verse la apariencia de la lista, que contiene enlaces para
borrar y añadir direcciones.
169
Internet Radio
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.
170
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.
51 Se utilizará 'disco' de manera genérica, ya que la estructura es igual tanto en discos duros como en
tarjetas de memoria.
171
Posición Descripción Tamaño
relativa
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 2 bytes
(10 bits indican el cilintro y 6 el sector)
0x04 Tipo de partición 1 byte
(0x04=FAT16 de menos de 32MB; 0x08=FAT16 de más de
32MB)
0x05 Cabezal de fin de la partición 1 byte
0x06 Cilindro/Sector de fin la partición 2 bytes
(10 bits indican el cilindro y 6 el sector)
0x08 Número de sectores entre el principio del disco y el principio de 4 bytes
la partición
0x0C Número total de sectores de la partición 4 bytes
Tabla II.2 Estructura del registro de partición en el MBR
172
Posición Descripción Tamaño
relativa
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 bytes
Tabla 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
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.
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
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 128 64 KB
(solo compatible en algunos
sistemas)
Tabla II.5 Tamaños de cluster según tamaño de partición
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:
175
● Bit 2: Archivo del sistema.
● Bit 1: Oculto.
● Bit 0: Archivo de solo lectura.
176
Bibliografía
177
[Dobiash99] Jack Dobiash, FAT16 Structure Information, 1999
http://home.teleport.com/~brainy/fat16.htm
[Fujitsu00] Soporte Técnico OEM Fujitsu España, Un paseo por USB-1, 2000.
178
[Microsoft99] Microsoft, FAT: General Overview of On-Disk Format, 1999
[MPManReview] MPManiac, Eiger Labs MPMan Review - Models F10 & F20,,
1999 http://business.fortunecity.com/tisch/493/MPManReview.htm
179
[VS1001K] VSLI Solution, VS1001K Datasheet 4.14, 2004
180