Está en la página 1de 180

Reproductor de MP3 con almacenamiento

en Multimedia Card y comunicacin


a travs de USB

David Martn de Vidales Maez

Tutor del proyecto: Jos Antonio Boluda Grau


David Martn de Vidales Maez, 1 Julio 2008

Agradecimientos
A mis padres, por su apoyo, nimo y paciencia, y por haber soportado
estoicamente el desorden de mi habitacin todos estos meses.
A Paola, por apoyarme en todo momento, estar conmigo y soportar esos largos
meses sin apenas salir.
A mis compaeras de trabajo y todos los amigos que insistieron, casi a diario, en
que fuese constante, siento no haberos hecho ms caso.
Muy especialmente a mis abuelos, que no han podido ver este proyecto
concluido.

ndice de contenido
1.Introduccin......................................................................................................................15
1.1 Presentacin..............................................................................................................15
1.2 Objetivos...................................................................................................................16
1.3 Contenidos................................................................................................................17
2. Estado de la tecnologa....................................................................................................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 Clasificacin de los reproductores....................................................................21
2.2.3 Reproductores no comerciales..........................................................................24
2.3 Formato MP3............................................................................................................25
2.3.1 Orgenes del MP3.............................................................................................25
2.3.2 Principios psicoacsticos..................................................................................26
2.3.3 Introduccin a la compresin de audio MPEG ................................................29
2.3.4 Algoritmo de codificacin MPEG-1 Layer 3....................................................30
2.3.5 Algoritmo de decodificacin MPEG-1 Layer 3................................................33
2.4 Tarjetas de memoria no voltil..................................................................................36
2.4.1 Memorias Flash.................................................................................................36
2.4.2 Tipos de tarjetas................................................................................................38
2.5 El interfaz de comunicacin USB.............................................................................42
2.5.1 Orgenes del USB.............................................................................................43
2.5.2 Caractersticas del USB....................................................................................43
2.5.3 Topologa...........................................................................................................46
2.5.5 Nivel fsico........................................................................................................46
2.5.6 Protocolo...........................................................................................................47
2.5.7 Tipos de transferencias en USB 2.0..................................................................48
2.6 Microcontroladores...................................................................................................50
2.6.1 Definicin y caractersticas...............................................................................50
2.6.2 Seleccin del microcontrolador........................................................................51
2.6.3 Aplicaciones......................................................................................................51
3. Diseo y desarrollo del hardware....................................................................................52
3.1 Introduccin..............................................................................................................52
3.2 Seleccin de componentes........................................................................................52
3.2.1 El microcontrolador..........................................................................................53
3.2.2 El mdulo 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 metodologa utilizada.....................................................60
3.3.1 Diseo...............................................................................................................60
3.3.2 Fabricacin........................................................................................................61
3.3.3 Testeo................................................................................................................62
3.4 Diseo de la PCB......................................................................................................63
3.4.1 Alimentacin.....................................................................................................63
3.4.2 Microcontrolador..............................................................................................70
3.4.3 Mdulo 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. Diseo y desarrollo del firmware....................................................................................87
4.1 Introduccin..............................................................................................................87
4.2 Herramientas de desarrollo utilizadas.......................................................................87
4.3 Libreras desarrolladas..............................................................................................89
4.3.1 Introduccin......................................................................................................89
4.3.2 Librera VS1001K.............................................................................................89
4.3.3 Librera Multimedia Card.................................................................................96
4.3.4 Librera FAT16................................................................................................103
4.3.5 Librera de la pantalla LCD............................................................................109
4.3.6 Librera USB...................................................................................................114
4.3.7 Lectura de ID3v1 y ID3v2.............................................................................115
4.3.8 Funciones de visualizacin de datos y men..................................................117
4.4 Protocolo de comunicacin Reproductor-PC..........................................................118
4.4.1 Introduccin....................................................................................................118
4.4.2 Sistema de mensajes........................................................................................119
4.4.3 Inicializacin de la comunicacin...................................................................121
4.4.4 Comandos de navegacin...............................................................................122
4.4.5 Comandos de control......................................................................................124
4.4.6 Comandos de reproduccin.............................................................................125
4.4.7 Comandos para el decodificador.....................................................................126
4.4.7 Errores.............................................................................................................127
4.5 Programa principal..................................................................................................127
4.5.1 Introduccin....................................................................................................127
4.5.2 Funcin principal............................................................................................127
4.5.3 Funcin temporizada.......................................................................................128
4.5.4 Otras funciones...............................................................................................131
5. Diseo y desarrollo de la aplicacin..............................................................................132
5.1 Introduccin............................................................................................................132
5.2 Herramientas de desarrollo utilizadas.....................................................................132
5.3 Librera del mdulo USB........................................................................................133
5.4 Librera de control del reproductor.........................................................................134
5.5 Modos de reproduccin..........................................................................................136
5.5.1 Introduccin....................................................................................................136
5.5.1 Reproduccin remota de archivos en el reproductor......................................136
5.5.2 Reproduccin remota de archivos en el ordenador.........................................137
5.5.3 Reproduccin local de archivos en el reproductor..........................................137
5.5.4 Reproduccin remota de streams de internet..................................................138
5.6 Podcasting y streaming a travs de internet............................................................139
5.6.1 Introduccin....................................................................................................139
5.6.2 Obtencin e identificacin del tipo de recurso................................................139
5.6.3 Streaming........................................................................................................140
5.6.4 Podcasting.......................................................................................................142
5.6.5 Emisoras favoritas...........................................................................................144
6. Presupuesto y planificacin...........................................................................................145
6.1 Introduccin............................................................................................................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 Planificacin y mano de obra.................................................................................148
7. Conclusiones y trabajo futuro........................................................................................151
7.1 Conclusiones...........................................................................................................151
7.2 Trabajo futuro.........................................................................................................152
APNDICE I Manual de usuario......................................................................................154
1. Introduccin..............................................................................................................154
2. Especificaciones tcnicas..........................................................................................154
3. Requisitos del sistema...............................................................................................155
4. Reproductor..............................................................................................................155
4.1 Vista general y controles....................................................................................155
4.2 Alimentacin y recarga de pilas.........................................................................157
4.3 Pantalla LCD......................................................................................................157
4.4 Utilizacin..........................................................................................................159
5 Aplicacin..................................................................................................................161
5.1 Instalacin..........................................................................................................161
5.2 Ventana principal................................................................................................164
5.3 Contenido de la tarjeta de memoria...................................................................165
5.4 Reproduccin de archivos en la tarjeta de memoria..........................................165
5.5 Reproduccin en la aplicacin de archivos de la memoria................................166
5.6 Reproduccin de archivos almacenados en el PC..............................................167
5.7 Streaming...........................................................................................................168
APNDICE II Estructura de FAT16..................................................................................171
II.1 Introduccin...........................................................................................................171
II.2 Estructura de FAT16...............................................................................................171
II.2.1 Master Boot Record.......................................................................................171
II.2.2 Sector de arranque de la particin..................................................................172
II.2.3 Tabla de asignacin de archivos (FAT)..........................................................174
II.2.4 Directorio raz................................................................................................175
II.2.5 rea de datos..................................................................................................176
Bibliografa........................................................................................................................177

ndice de imgenes
Imagen 2.1 Primer chip decodificador de MP3 de Micronas (1994)..................................18
Imagen 2.2 Primer prototipo de un reproductor de MP3 sin partes mviles (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 crticas 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 codificacin MP3[Lagerstm01].............................................30
Imagen 2.15 Representacin del filtro................................................................................30
Imagen 2.16 Anchos de banda del filtro MPEG/Audio vs ancho de las bandas
crticas[Pan95].....................................................................................................................31
Imagen 2.17 Ecuacin de la transformacin 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 decodificacin del flujo de datos........................33
Imagen 2.22 Ecuacin del calculo de desescalado de las lneas de frecuencia...................34
Imagen 2.23 Diagrama de bloques del Mapeo de la frecuencia al tiempo..........................35
Imagen 2.24 Expresin analtica del MDCT inverso..........................................................35
Imagen 2.24 Evolucin prevista de la memoria NAND flash segn la capacidad y tipo de
aplicacin [Samsung]..........................................................................................................37
Imagen 2.25 Evolucin prevista de la memoria NAND flashsegn la capacidad, el tamao
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 Topologa 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 Mdulo 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 diseo del circuito.................................................................61
Imagen 3.9 Diseo modular del circuito.............................................................................63
Imagen 3.10 Control de alimentacin USB.........................................................................65
Imagen 3.11 Circuito de carga.............................................................................................66
Imagen 3.12 Funcionamiento del diodo Zener como regulador..........................................67
Imagen 3.13 Regulador de tensin TC115..........................................................................68
9

Imagen 3.14 Esquemtico del regulador TC115 ................................................................68


Imagen 3.15 Regulador MAX1675.....................................................................................69
Imagen 3.16 Esquemtico del regulador MAX1675...........................................................69
Imagen 3.17 Esquemtico del mdulo de alimentacin......................................................70
Imagen 3.18 Microcontrolador 18LF452............................................................................71
Imagen 3.19 Configuracin del cristal del microcontrolador..............................................72
Imagen 3.20 Diagrama de bloques del funcionamiento del FT245BM..............................73
Imagen 3.21 Esquemtico del mdulo DLP-USB245M.....................................................74
Imagen 3.22 Configuracin de la alimentacin del USB....................................................76
Imagen 3.23 Control de alimentacin segn especificaciones............................................76
Imagen 3.24 Conexin del mdulo 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 Conexin 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 comunicacin con la pantalla................................................85
Imagen 3.35 Circuito de la botonera...................................................................................85
Imagen 3.36 Esquemtico de los interfaces ICSP y UART................................................86
Imagen 4.1 Esquemtico usado con el MAX3232..............................................................88
Imagen 4.2 Programador de PICs........................................................................................88
Imagen 4.3 Esquema de libreras........................................................................................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 inicializacin.............................................................................101
Imagen 4.10 Mapeo de la memoria DDRAM en la pantalla. Extrado de las
especificaciones del controlador PCD8544.......................................................................110
Imagen 4.11 Diagrama de tiempos del envo de un byte...................................................112
Imagen 4.12 Estructura del mensaje..................................................................................119
Imagen 4.13 Diagrama de inicializacin de la comunicacin...........................................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 funcin principal....................................................128
Imagen 4.17 Diagrama de flujo de la funcin temporizada..............................................129
Imagen 4.18 Diagrama de flujo de la comprobacin de la botonera.................................131
Imagen 5.1 Arquitectura del uso del driver USB D2XX..................................................133
Imagen 5.2 Estructura interna de la librera de comunicacin..........................................135
Imagen 5.3 Reproduccin remota de archivos en el reproductor......................................136
Imagen 5.4 Reproduccin remota de archivos en el PC....................................................137
Imagen 5.5 Reproduccin local de archivos remotos........................................................138
Imagen 5.6 Reproduccin de audio de Shoutcast..............................................................141
Imagen 5.6 Podcast cargado en el navegador de la aplicacin..........................................142
Imagen 5.7 Listado de Podcast favoritos...........................................................................144
Imagen 6.1 Diagrama de Gantt..........................................................................................149
10

Imagen I.1 Visin 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 Descripcin de la informacin en pantalla......................................................159
Imagen I.7 Ventana de instalacin del driver de USB.......................................................162
Imagen I.8 Asistente de instalacin de la aplicacin 1......................................................162
Imagen I.9 Asistente de instalacin de la aplicacin 2......................................................163
Imagen I.10 Asistente de instalacin de la aplicacin 3....................................................163
Imagen I.11 Asistente de instalacin de la aplicacin 4....................................................163
Imagen I.12 Iniciacin de comunicacin..........................................................................164
Imagen I.13 Regiones principales de la aplicacin...........................................................164
Imagen I.14 Contenido de la tarjeta de memoria..............................................................165
Imagen I.15 Ventana de copia de un archivo.....................................................................165
Imagen I.16 Opcin Reproduccin remota.......................................................................166
Imagen I.17 Reproduccin remota de archivos en la tarjeta.............................................166
Imagen I.18 Opcin Reproduccin local...........................................................................166
Imagen I.19 Reproductor local de audio...........................................................................167
Imagen I.20 Lista de reproduccin....................................................................................167
Imagen I.21 Aadiendo archivos al listado de reproduccin............................................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 Pgina web de SHOUTcast...........................................................................170
Imagen II.1 Estructura de una particin FAT16................................................................172
Imagen II.2 Ejemplo de tabla de asignacin.....................................................................174

11

12

ndice de tablas
Tabla 2.1 Diferencias entre las tecnologas NOR y NAND................................................37
Tabla 2.2 Comparacin de los interfaces ms populares [Axelson05]................................45
Tabla 2.3 Comparacin de los tipos de transferencia [Axelson05].....................................49
Tabla 3.1 Caractersticas de la familia 18Fxx2...................................................................55
Tabla 3.2 Comparacin de diferentes integrados para el interfaz USB...............................56
Tabla 3.4 Comparacin de tarjetas de memoria..................................................................57
Tabla 3.5 Comparacin 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 mximo de los componentes...............................................................64
Tabla 3.9 Conexiones del microcontrolador........................................................................72
Tabla 3.10 Explicacin del pinout del mdulo 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 Descripcin de los bits del registro MODE.........................................................92
Tabla 4.4 Frecuencias segn 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 ms utilizados del protocolo SPI.......................................................99
Tabla 4.8 Comparacin de las versiones de FAT...............................................................104
Tabla 4.15 Lneas de comunicacin 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 comunicacin......................................................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 Valoracin 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 particin en el MBR................................................172
Tabla II.3 Estructura del sector de arranque de FAT16.....................................................173
Tabla II.4 Calculo de la posicin de los elementos de una particin................................173
Tabla II.5 Tamaos de cluster segn tamao de particin.................................................175
Tabla II.6 Estructura de entrada de directorio...................................................................175

13

14

1.Introduccin
1.1 Presentacin
Actualmente los sistemas multimedia estn teniendo una gran importancia y una
amplia variedad de dispositivos incluyen entre sus caractersticas la reproduccin de audio
y/o vdeo. Cada vez ms 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 utilizacin de formatos comprimidos que permitan almacenar estos elementos
multimedia con una calidad aceptable y en muchos casos sin prdida aparente de sta.
De la necesidad de obtener un formato de audio comprimido de alta calidad
surgi el estndar MP3, gracias a l se puede obtener audio comprimido a un ratio
aproximado de 1:12 con respecto al audio en PCM1 y con perdidas poco apreciables.
Gracias a este nivel de compresin han surgido gran cantidad de dispositivos que pueden
ser utilizados como reproductores porttiles de audio, como telfonos mviles, PDAs y
gran cantidad de reproductores de alta capacidad basados en memoria Flash, disco duro o
CD. Pero el formato MP3 no ha sido slo utilizado en dispositivos porttiles, hoy en da
puede encontrarse en reproductores para coche, mini cadenas, reproductores de DVD,
duchas, frigorficos, centralitas telefnicas, etc.
Otra ventaja del tamao reducido es que es muy adecuado para transmisiones
entre dispositivos ya sea a travs de USB, redes cableadas o inalmbricas. Esto permite al
MP3 ser reproducido de forma remota, de hecho el MP3 es uno de los principales
formatos para la transmisin de audio por Internet.
El propsito general de este proyecto es el desarrollo de un dispositivo hardware
capaz de reproducir audio en formato MP3 almacenado de forma local en el propio
dispositivo y de forma remota siendo transmitido desde el ordenador a travs del interfaz
USB.

1 Pulse Code Modulation, representacin digital de una seal analgica donde la magnitud de la seal 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 aplicacin para el control y transmisin de datos desde el ordenador. El
objetivo principal de este proyecto es:
El desarrollo de un dispositivo hardware que reproduzca ficheros en formato
MP3 y pueda ser utilizado tanto como reproductor porttil como perifrico conectado a
un ordenador. El desarrollo de una aplicacin a travs de la cual se podr controlar el
dispositivo desde el ordenador cuando est conectado a ste, y el diseo del protocolo de
comunicacin entre el dispositivo y la aplicacin.
A continuacin se enumeran las caractersticas que tendr el dispositivo:

Al tratarse de un dispositivo que puede funcionar de forma autnoma estar


alimentado por pilas cuando no est conectado al ordenador y por USB cuando
lo est. Estas pilas sern recargables y podrn cargarse mediante USB cuando el
dispositivo est conectado.
Tendr un interfaz de usuario compuesto por una botonera y una pantalla, que
permitan un control sencillo e intuitivo del dispositivo.
En la pantalla se mostrar el ttulo y dems informacin del fichero MP3
obtenida de las etiquetas ID3 cuando estn disponibles.
Almacenar los ficheros MP3 en tarjetas de memoria Flash intercambiables y
que podrn ser ledas y grabadas en cualquier otro dispositivo.
Podr conectarse a un ordenador mediante el interfaz USB 2 y ser controlado por
la aplicacin que se desarrollar para este propsito.

Las caractersticas de la aplicacin que se ejecutar en el ordenador son las


siguientes:

La aplicacin tendr acceso a la estructura de ficheros de la tarjeta introducida


en el reproductor, de modo que podr navegar por ella.
Se podr controlar la reproduccin de los ficheros MP3 de la tarjeta de
memoria.
Podrn transmitirse flujos de datos MP3 que sern reproducidos en tiempo real
por el dispositivo. De este modo se podrn enviar para su reproduccin ficheros
que se encuentren en el ordenador, ficheros a los que se acceda a travs de
Internet o flujos de audio procedentes de una radio a travs de Internet.
La aplicacin podr obtener ficheros que se encuentren en la tarjeta de
memoria, para su almacenamiento en el ordenador o para su reproduccin en
tiempo real.
Podr crear listas de reproduccin de ficheros locales que ser reproducidos por
el dispositivo.

En cuanto a las caractersticas del protocolo de comunicacin, este deber


permitir un control total de la reproduccin de ficheros almacenados en la tarjeta de
memoria, acceso a la estructura de ficheros y control de diferentes caractersticas y
2 La eleccin del USB como interfaz de conexin ser discutida en posteriores apartados.

16

configuraciones, como el control del volumen. En lneas generales deber permitir realizar
las caractersticas de la aplicacin descritas.

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

Captulo 1: Enunciado y objetivos del proyecto, especificaciones del


reproductor y resumen del contenido de la memoria.
Captulo 2: Estado de la tecnologa, donde se relata los inicios del sistema de
codificacin MP3, los primeros reproductores, las tarjetas de memoria
existentes, y se da una visin general del funcionamiento de las diferentes
tecnologas de las que se compone el dispositivo realizado.
Captulo 3: Explica el diseo hardware del dispositivo desarrollado; seleccin
de componentes, herramientas utilizadas y diseo de cada uno de los mdulos
de los que se compone el sistema (alimentacin, microcontrolador, USB,
decodificador de MP3, pantalla, etc.).
Captulo 4: Diseo del firmware del microcontrolador. Se detallan las
herramientas utilizadas, las diferentes libreras implementadas (decodificador,
tarjeta de memoria, FAT16, pantalla, USB, ID3, etc.) y el protocolo de
comunicacin desarrollado para el control del reproductor desde una aplicacin
en el ordenador.
Captulo 5: Diseo de la aplicacin. Explicacin de las herramientas utilizadas,
y de la aplicacin implementada para el control del reproductor.
Captulo 6: Estimacin econmica de los costes del proyecto y planificacin
temporal de ste.
Captulo 7: Conclusiones y valoracin del resultado del proyecto, y posibles
desarrollos y mejoras futuras.
Apndice I: Manual de usuario.
Apndice II: Estructura del sistema de archivos FAT16.
Bibliografa.

17

2. Estado de la tecnologa
2.1 Contenido
En este captulo se har una pequea explicacin de las tecnologas utilizadas en
el presente proyecto. Primero se hablar de los reproductores MP3 existentes, con un
resumen de su historia y una clasificacin segn caractersticas. Despus se explicar el
funcionamiento de la codificacin MP3, con una pequea introduccin a su origen, los
principios psicoacsticos en los que se basa y un resumen del algoritmo de codificacin y
decodificacin del formato.
Los tres siguientes apartados hacen referencia al hardware utilizado, el USB
como interfaz de comunicacin, las tarjetas de memoria como medio de almacenamiento
y el microcontrolador, utilizado para gobernar el sistema.

2.2 Reproductores de MP3


El formato MP3 ha sido y sigue siendo el formato de audio ms extendido y el
nmero de reproductores3 que se ha desarrollado y comercializado es enorme, lo que hace
imposible una enumeracin de todos. Por tanto se har una pequea introduccin con los
primeros dispositivos capaces de decodificar este formato y, posteriormente, una
clasificacin de los reproductores segn diferentes caractersticas.
2.2.1 Los primeros decodificadores
El formato de audio MPEG-1 Layer 3, ms conocido como MP3 se convirti en
estndar ISO/IEC a finales de 1991, los primeros equipos capaces de reproducirlo fueron
Racks de 19'' creados y distribuidos por Fraunhofer IIS para uso profesional, inicialmente
se crearon para transmisin de audio de alta calidad por lneas telefnicas RDSI y para
estaciones de radio.

Imagen 2.1 Primer chip decodificador de MP3 de Micronas (1994)


y tarjeta de PC codificadora (1996)

En 1992 Micronas4, un fabricante de circuitos integrados, comenz el desarrollo


junto con del IIS el primer chip decodificador de MP3,el MAS3507 (Imagen 2.1), que fue
3 Cuando nos referimos a reproductores en este texto hacemos referencia a los dispositivos hardware
capaces de reproducir MP3, salvo que se indique lo contrario (reproductores software, de DVD, etc.)
4 Realmente fue diseado por ITT Intermetall, adquirido por Micronas.

18

presentado en el verano de 1994, Micronas se encarg del hardware y el IIS desarroll el


software. Con l se pretenda que el MP3 llegase a la electrnica de consumo. Aunque
todava tardaran unos aos 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 genrico y otros en PCs de tamao reducido con
un reproductor software [FraunHist].

Imagen 2.2 Primer prototipo de un reproductor de MP3 sin partes mviles (1994)

2.2.1 Los primeros reproductores.


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

Imagen 2.3 Reproductor


MPMan F10

Imagen 2.4 Interior del reproductor MPMan F10.


1. DSP y DAC de Phillips; 2. Controlador del LCD de Samsung; 3.
Controlador de interfaces de Microchip; 4. Decodificador MP3
hardware de Micronas; 5. NAND flash de Samsung.

19

A pesar de ser el primer reproductor en salir al mercado poco meses despus salio
el reproductor que fue lder en ventas y regalo por excelencia las navidades de ese ao, el
Diamon Rio PMP300 (Imagen 2.5 e Imagen 2.6). Su popularidad se debi a un mejor
diseo, una pantalla LCD mayor y unos mejores controles. Utiliza tambin el MAS3507 y
posee una memoria interna de 32MB y, al igual que el MPMan F20, un slot de expansin
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 violacin del Audio Home Recording Act y lleg a paralizar la
distribucin del dispositivo, los jueces fallaron a favor de Diamon allanando el camino de
los reproductores MP3 porttiles [MPManReview].

Imagen 2.5 Reproductor Diamon


Rio PMP300

Imagen 2.6 Interior del reproductor Diamon Rio PMP300

El primer reproductor basado en disco duro fue el PJB-100 (Imagen 2.7) diseado
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 decodificacin MP3 la hace la misma CPU que
funciona a 33MHz y posee una pantalla LCD de 12864 pxeles [PJB100]. Poco despus
aparecieron otros reproductores de Creative y Archos tambin basados en disco duro. En
ese mismo ao, 1999, sali al mercado el Mambo-X (Imagen 2.8), primer reproductor de
MP3 que usaba el CD como almacenamiento y que permite adems reproducir CDs de
audio.

Imagen 2.7 Reproductor con disco duro PJB-100


(1999)

20

Imagen 2.8 Reproductor MP3 de CDs Mambo-X

2.2.2 Clasificacin de los reproductores


Existe una gran cantidad de reproductores de MP3, en pocos aos han sustituido
al walkman y los reproductores porttiles de CD al igual que los telfonos mviles
incorporan la posibilidad de leer este formato. A continuacin se realiza una clasificacin
segn las caractersticas de cada uno.
Podramos hacer una primera divisin entre los reproductores creados
expresamente con ese propsito, como los analizados en el apartado anterior, y los
dispositivos cuyo propsito principal es otro distinto a la reproduccin de audio e
incorporan la reproduccin de MP3 como caracterstica adicional. Entre estos ltimos
dispositivos podramos encontrar:
Telfonos mviles: inicialmente surgieron con la posibilidad de reproducir
pequeos ficheros como tono de llamada y se han convertidos en autnticos
dispositivos multimedia capaces de reproducir audio y vdeo, y con una
capacidad de almacenamiento muy elevada gracias a las tarjetas de memoria.
Reproductores DVD, que al igual que los mviles cada vez incorporan ms
variedad de caractersticas, como la posibilidad de ver FotoCDs, reproducir
vdeos almacenados de forma remota por red (cableada o no) y en diferentes
formatos. Y por supuesto pueden reproducir audio MP3, esto es as
precisamente porque la codificacin de audio utilizada los VideoCDs es
MPEG1 Layer 3, aunque en la prctica suelen ser utilizados para este fin.
Navegadores GPS, algunos modelos de alta gama tienen la posibilidad de
reproducir audio y vdeo.
Consolas de vdeo juegos, tanto las de sobremesa como las porttiles incluyen
esta capacidad en sus ltimos modelos.
En general cualquier electrodomstico puede tener un reproductor integrado,
existen: neveras (Imagen 2.9), columnas hidromasaje, microondas, marcos de
fotos digitales, etc.

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

En cuanto a los dispositivos cuya funcin principal es la reproduccin de audio se


puede diferenciar entre los que la reproduccin de MP3 es su caracterstica principal y
aquellos que la incorporan como un soporte ms de audio que son capaces de reproducir,
como los AutoCDs o las cadenas musicales.
Sea cual sea el propsito por el cual un dispositivo tiene la capacidad de
reproducir audio MP3 se pueden hacer distintas clasificaciones basndonos en sus
caractersticas internas, esto es: el soporte de almacenamiento, interfaz de conexin con el
ordenador, la variedad de codificaciones de audio admitidas, otras funcionalidades, etc.
21

Adems de otras caractersticas menos evidentes como si la decodificacin la hace un


integrado especifico, se realiza mediante un DSP de propsito general o el reproductor se
basa en un SoC5.
Almacenamiento
Dependiendo del almacenamiento utilizado se pueden clasificar los dispositivos
segn utilicen:
Memoria interna, en concreto utilizan NAND Flash.
Disco duro.
Un soporte ptico, ya sea CD o DVD.
Tarjetas de memoria
Sin almacenamiento, reproduciendo el audio que les llega mediante USB,
puerto paralelo, ethernet, etc.

La mayora de dispositivos actuales creados especficamente para la reproduccin


de MP3 utilizan memoria interna o un disco duro como almacenamiento. La ventaja de la
memoria interna es que permite hacer dispositivos de menor tamao, mientras que con el
disco duro se obtiene un almacenamiento mayor. El soporte ptico lo utilizan los
reproductores de CD y DVD que tienen la capacidad de reproducir MP3, las tarjetas de
memoria suelen usarse como ampliacin de la capacidad de almacenamiento de los
reproductores con memoria interna y los dispositivos sin almacenamiento son los menos
comunes. Adems de estos soportes muchos reproductores disponen de un interfaz USB
en el que se puede conectar un dispositivo de almacenamiento masivo, normalmente un
pendrive.
Interfaz
No todos los reproductores disponen de un interfaz de conexin al ordenador, esto
depende principalmente del tipo de almacenamiento utilizado ya que el interfaz suele
usarse para acceder a la memoria y transferirle los archivos MP3. Los dispositivos que
suelen disponer de interfaz de conexin son aquellos que utilizan memoria interna o disco
duro, mientras que los que utilizan como medio de almacenamiento un soporte ptico no
suelen tenerlos. Los interfaces normalmente utilizados son:
Puerto

paralelo, utilizado en los primeros reproductores, algunos usaban


interfaces paralelo propietario.
USB, la mayora de los reproductores con memoria interna o disco duro usan
este interfaz para poder acceder a la memoria.
Firewire, aunque son pocos existen algunos reproductores que lo utilizan.
Ethernet, algunos reproductores de sobremesa pueden conectarse a la red
mediante cable o de forma inalmbrica, pudiendo reproducir ficheros remotos o
radios que emiten por Internet.
Sin interfaz de conexin, como la mayora de los reproductores de CD o DVD.

5 System on a Chip, es la inclusin de todo un sistema o dispositivo dentro de un circuito integrado. Los
sistemas basados en SoC suelen necesitar tan solo un pequeo nmero de elementos pasivos externos.

22

Codificaciones soportadas
La codificacin de audio ms utilizada y extendida en los reproductores es el
MP3 pero existen otros formatos con calidades similares o superiores que, cada vez ms,
estn siendo soportadas por los reproductores. De hecho es muy comn que las ltimas
versiones de los integrados decodificadores de MP3 incluyan alguno de estos otros
formatos. Entre los formatos de codificacin soportados por los reproductores podemos
encontrar adems del MP3:
RealAudio, es un formato de audio propiedad de RealNetworks utilizado
principalmente para la retransmisin de audio en tiempo real por Internet.
Windows Media Audio, es un formato propiedad de Microsoft conocido como
WMA, es un competidor directo del MP3 y segn Microsoft con una calidad
superior a este. Adems este formato posee otras caractersticas como el poder
incluir tecnologa DRM6 en los ficheros. Tiene una variante de compresin sin
perdidas denominada WMA Lossless.
AAC o Advanced Audio Coding, es un formato desarrollado entre varias
compaas, entre ellas: Dolby, Fraunhofer IIS, AT&T, Sony y Nokia. Fue
declarado oficialmente estndar en 1997 y est incluido en las especificaciones
MPEG2 parte 7 y MPEG4 parte 3 aunque se suele hacer referencia a ella como
MPEG4 AAC o simplemente AAC. Puede incluir DRM pero no es muy comn.
Vorbis, formato de audio de cdigo abierto surgido a partir del anuncio en 1998
de Fraunhofer Gesellschaft de cobrar royaltys por todos los codificadores o
decodificadores de MP3 fuesen gratuitos o no.
MusePack o MPC, otro formato de cdigo abierto especialmente desarrollado
para bitrates altos.
Formatos sin prdida como: Apple Lossless y FLAC.
Otros formatos menos comunes como: Speex, WavPack, Shorten, etc. pueden
ser reproducidos en un iPod7 cambindole el firmware por uno no oficial
denominado Rockbox.

En la actualidad muchos reproductores que se comercializan dicen reproducir


MP4, esto en realidad no es del todo cierto ya que el MP4 no es una formato de
codificacin de audio, sino un contenedor multimedia estandarizado como parte del
MPEG4 (MPEG4 parte 14) y se usa como contenedor de audio y vdeo. Los ficheros de
audio con el contenedor MP4 suelen usar las extensiones .m4a o .mp4 y normalmente
utilizan como codificacin AAC o MP3 (aunque soporta otras). Por tanto estos
reproductores lo que reproducen adems del MP3 es el formato AAC.
Otro factor a tener en cuenta respecto a la codificacin de audio es que es posible
que un reproductor no pueda reproducir todos los archivos MP3. Un archivo con
extensin .mp3 puede ser en realidad un MP2 (codificado con MPEG1 Layer 2) o estar
codificado con unas tasas de bits o una frecuencia de muestreo no incluido en el estndar 8,
tambin es posible que el reproductor no tenga la capacidad de decodificar tasas de bits
6 Digital Rights Management o Gestin de derechos digitales, hace referencia a un conjunto de tecnologas
dirigidas al control de los contenidos con el objetivo de proteger los derechos de autor.
7 Lnea de reproductores porttiles de gran xito desarrollados por Apple Inc.
8 En el estndar MPEG2 se aadieron nuevas tasas de bits y muestreos, al igual que en el estndar 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
Adems de todas estas clasificaciones podemos ordenar los reproductores segn
tengan o no alguna funcionalidad especifica, stas pueden ser muy variadas. Algunos
ejemplos de estas son:
Capacidad de leer ID3
Funcin de Karaoke para ver la letra de las canciones.
Conexin a red y posibilidad de reproducir radio por Internet.
Organizaciones especiales automticas: por lbum, autor, gnero o ao.
Etc.

2.2.3 Reproductores no comerciales


Existen varios reproductores de MP3 no comerciales, algunos han sido realizados
como partes de proyectos o tesis y otros por personas con buenos conocimientos de
electrnica que, basndose en otros proyectos, han decidido construir su propio
reproductor (en estos casos suele ser muy bsico). De hecho existen reproductores que
surgieron como un proyecto personal y han terminado comercializndose u otros en los
que el autor vende un kit con todos los componentes y el firmware del microcontrolador
para montarlo. Un ejemplo es el reproductor Yampp-3, basado en un microcontrolador
Atmel y el decodificador VS1001k.
La mayora de estos reproductores suelen estar controlados por un
microcontrolador (los mas utilizados PIC, Atmel y Motorola), un chip para la
decodificacin del audio (de Micronas, ST microelectronics, VLSI Solutions o Texas
Instruments) y como almacenamiento, al igual que muchos comerciales, un disco duro,
tarjeta de memoria o CD.
El reproductor desarrollado en el presente proyecto implementa funcionalidades
que no estn presentes en ninguno de ellos, como el control total de la reproduccin
mediante el puerto USB. Son pocos los reproductores no comerciales que incluyen
conexin USB, y los que lo hacen lo utilizan exclusivamente para acceder a los archivos
almacenados en la memoria. Adems se ha incluido la opcin de reproducir audio en
formato MP3 descargada en tiempo real de internet (como archivos de Podcast y radio).

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

24

2.3 Formato MP3


El formato de codificacin de audio MPEG1 Layer 3, ms comnmente conocido
como MP3 debido a la extensin .mp3 que utilizan sus archivos, es un algoritmo de
compresin con perdidas diseado para reducir la cantidad de datos necesaria para
almacenar audio sin degradacin apreciable del sonido para el odo humano.

2.3.1 Orgenes del MP3


En 1987 se forma una alianza de investigacin entre la universidad ErlangenNuremberg y el Fraunhofer Institute for Integrated Circuits bajo el marco de un proyecto
de la Union Europea denominado EUREKA para la radiodifusin de audio digital (DAB).
Este equipo de investigacin cre un codificador funcional en tiempo real del algoritmo
LC-ATC (Low Complexity Adaptive Transform Coding) como base de su investigacin,
hasta ese momento el LC-ATC exista solo como simulacin por ordenador. El sistema
hardware estaba compuesto por mltiples mdulos DSP y varias tarjetas de entrada y
salida de audio y datos.
En 1989 Karlheinz Brandenburg termina su tesis doctoral sobre el OCF
(Optimum Coding in the Frequency Domain), que posee un gran nmero de
caractersticas que se encuentran en la tecnologa MP3, como banco de filtrado de
resolucin de alta frecuencia, cuantizacin no uniforme, codificacin Huffman y su
estructura de informacin. La parte software del sistema de tiempo real es desarrollada
por Bernhard Grill bajo la supervisin del profesor Gerhuser que lidera el grupo de
trabajo del Fraunhofer IIS.
En 1991 una nueva codificacin de audio de altas prestaciones denominado
ASPEC (Adaptive Spectral Perceptual Entropy Coding) es presentada como resultado de
diferentes mejoras del OCF y con contribuciones de la universidad de Hannover, AT&T y
Thomson. Esta codificacin se propone como nuevo estndar de audio al subcomit
MPEG (Movin Picture Experts Group), creado en enero de 1988 por ISO/IEC con la
finalidad de desarrollar estndares de compresin de audio y vdeo digital.
MPEG recibi un total de 14 propuestas de codificacin de audio que son
combinadas finalmente en cuatro propuestas entre las que se encuentran incluidas ASPEC
y MUSICAM. Despus de varias pruebas se sugieren tres esquemas de codificacin de
audio basados en ASPEC y MUSICAM: Layer 1 es una variante de MUSICAM de baja
complejidad, Layer 2 es una versin optimizada de MUSICAM y Layer 3 est basado en
ASPEC.
Debido a su menor complejidad Layer 2 es elegido como formato de audio para la
radiodifusin de servicios de audio digital mientras que ASPEC/Layer 3, que ofrece una
codificacin ms eficiente al tiempo que una mayor complejidad, pasa a ser la clave en las
transmisiones de audio de alta calidad en las lneas RDSI. Fraunhofer IIS fabrica y vende
racks a estaciones de radio profesionales con su codificacin ASPEC de forma que la
transmisin de audio de alta calidad por RDSI en tiempo real entre estudios de
radiodifusin fue la primera aplicacin real de este algoritmo de codificacin.

25

Al fin en 1992 MPEG concluye su primer estndar de compresin, MPEG1, para


el uso en VideoCDs. En la seccin de audio se especifican tres familias genricas de
formatos de codificacin (Layer 1, 2 y 3). Siendo el ms eficiente de las tres
codificaciones Layer 3 pronto se convierte en una popular manera de almacenar msica en
los relativamente pequeos discos duros de los ordenadores y transferir ficheros de
msica a travs de Internet mediante los modems de ordenador de 28.8Kbps. [FraunHist]

2.3.2 Principios psicoacsticos.


La audicin humana es un proceso extraordinariamente complejo, que comienza
cuando el sonido golpea el tmpano y es convertido de variaciones en la presin del aire a
impulsos nerviosos. De ah en adelante la psicologa se convierte en factor ms importante
para estudiar y analizar los sonidos, as como las reacciones de las personas ante stos. La
psicoacstica puede ser definida simplemente como el estudio psicolgico de la audicin.
El objetivo de la investigacin psicoacstica es averiguar cmo funciona la audicin. En
otras palabras, el objetivo es descubrir cmo los sonidos que entran en el odo son
procesados por ste y el cerebro, con el fin de dar a la persona que escucha informacin
til acerca del mundo exterior.[VargasDuque01]
La mayora de codificaciones de audio actuales consiguen la compresin
aprovechndose del hecho de que informacin irrelevante de la seal no es detectable por
el oyente [Lagerstm01]. Los cuatro aspectos ms relevantes en el desarrollo de
codificaciones de audio a lo que psicoacstica se refiere son: el mnimo umbral auditivo,
las bandas crticas, los enmascaramientos y joint stereo.
Mnimo umbral auditivo y bandas crticas
Nuestros rganos auditivos estn preparados para sentir slo un rango de
frecuencias de vibraciones de todo el espectro. Por lo general los seres humanos no
pueden or frecuencias por debajo de los 20Hz ni por encima de los 20kHz. Adems, los
humanos perciben el rango intermedio de frecuencias mejor que las altas y bajas
frecuencias (Imagen 2.10 ), y esta sensibilidad a altas frecuencias disminuye con la edad y
con la exposicin prolongada a volmenes altos. De hecho la mayora de los adultos no
pueden or por encima de los 16kHz. El rango de mayor sensibilidad se encuentra entre
los 2kHz y los 4kHz hecho probablemente relacionado con la evolucin, ya que la voz
humana se encuentra entre el rango de los 500Hz y los 2kHz. [Hacker00]

26

Imagen 2.10 Umbrales de sensibilidad y auditivo [Hacker00]

Enmascaramiento simultneo10
El odo realiza pequeos anlisis de las bandas crticas donde se realizan
transformaciones tonotpicas en la membrana basilar11. Los espectros de energa no se
representan en una escala de frecuencias lineal sino en bandas de frecuencia limitada
llamadas bandas crticas (Imagen 2.11). El sistema de audicin puede describir como un
banco de filtros pasa banda, consistentes en filtros pasa banda fuertemente solapados con
anchos de banda del orden de los 50Hz a 100Hz para seales por debajo de 500Hz y hasta
5kHz para seales de frecuencias altas.

Imagen 2.11. Bandas crticas aproximadas [Pan93]

10 Enmascaramiento simultaneo o en frecuencia, depende del autor.


11 Teora del funcionamiento del odo interno iniciada por Helmholtz y continuada por Bksy segn la cual
la zona de mayor estimulacin de la membrana basilar depende de la frecuencia, es decir que a cada
frecuencia corresponde una posicin especfica en la membrana basilar.

27

El enmascaramiento simultneo es un fenmeno del dominio de la frecuencia


donde una seal con nivel bajo (la enmascarada) se hace inaudible (enmascarada) debido
a una seal mas fuerte que ocurre simultneamente (la enmascaradora), si la enmascarada
y la enmascaradora estn muy cercana la una a la otra en frecuencia (Imagen 2.12). Este
enmascaramiento es mayor en la banda crtica en la que se encuentra el enmascarador, y
su efecto es menor en las bandas vecinas [IEEE97].

Imagen 2.12 . Umbral en silencio y umbral de enmascaramiento


(sonidos por debajo de los umbrales de las mascaras no son audibles) [Lagerstm01]

Enmascaramiento temporal
Adems del enmascaramiento simultneo en el domino de la frecuencia, el
enmascaramiento temporal, tambin llamado enmascaramiento no simultneo, juega un
rol importante en la percepcin auditiva humana en el domino del tiempo. Cuando dos
seales aparecen en un corto intervalo de tiempo la seal ms fuerte puede enmascarar a
la ms dbil incluso si la enmascarada precede a la enmascaradora.
Dos efectos de enmascaramiento temporal ocurren antes y despus de una seal
fuerte. Si la seal es enmascarada despus de una seal fuerte se llama postenmascaramiento, y si es enmascarada a continuacin se le denomina preenmascaramiento. Los tiempos del pre y post enmascaramiento son diferentes, la zona de
pre-enmascaramiento es aproximadamente 20ms antes de la seal enmascaradora, y la
zona de post-enmascaramiento 160ms despus [Hung], como puede verse en la Imagen
2.13.

Imagen 2.13 Umbrales de enmascaramiento temporal [Hung]

28

El pre-enmascarado puede ayudar a enmascarar la aparicin de pre-ecos. Si se


considera el caso en el que un periodo de silencio es seguido por un sonido de percusin,
estos sonidos transitorios causan una gran cantidad de errores de cuantizacin
instantneos. 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 duracin.
Joint Stereo
En realidad el Joint Stereo no es un principio psicoacstico sino una tcnica usada
para la compresin de audio estereofnico aprovechndose de la correlacin entre los dos
canales de audio y la irrelevancia de la diferencia de fase entre canales [Pan95]

2.3.3 Introduccin a la compresin de audio MPEG 12


El algoritmo MPEG/Audio consiste en un algoritmo de compresin de audio con
prdidas que se aprovecha de principios psicoacsticos de forma que no hayan prdidas
aparentes para que al odo humano, por tanto es perceptualmente sin perdidas. El estndar,
desarrollado por el subcomit MPEG de ISO/IEC, fue el primer algoritmo de compresin
de audio estandarizado. El estndar es rgido nicamente donde es necesario para asegurar
la interoperabilidad, especfica la sintaxis del flujo de bits codificados y define el proceso
de decodificacin. Esto deja total libertad en la implementacin del codificador
ofreciendo un gran potencial de diversidad.
La codificacin MPEG/Audio tiene las siguientes caractersticas:
La frecuencia de muestreo puede ser de 32, 44.1 o 48kHz13
Soporte para canales de audio. Soporta uno o dos canales de audio en cuatro
posibles modos:
Modo monotnico con un nico canal de audio.
Modo dual-monotnico con dos canales de audio independientes
Modo estreo, con dos canales que comparten bits.
Modo Joint Stereo, que aprovecha la correlacin entre los canales de audio
y la irrelevancia de la diferencia de fase entre canales
Tasas de bit predefinidas, el flujo de bits puede utilizar una de las tasas de bit
predefinidas entre los rangos 32 y 224kbps por canal. Adems en estndar tiene
un modo de tasa de bits libre para soportar otras tasas de bits diferentes a las
predefinidas.
Capas de compresin (layers), MPEG ofrece tres capas de compresin
independientes. Esto ofrece un mayor rango de compromiso entre complejidad
de la codificacin y la calidad del audio comprimido. Las capas son:
Layer 1, la ms simple.
Layer 2, con una complejidad intermedia y tasas de bit alrededor de
128kbps por canal. Usado para DAB y VideoCD.
Layer 3, la ms compleja y la que ofrece una mayor calidad de audio, se

12 La explicacin de la codificacin MP3 se realiza como referencia ya que en este caso se ha utilizado un
circuito integrado para la decodificacin MP3.
13 En el estndar MPEG-2 se aadieron las frecuencias 16, 22,05 y 24kHz para tasas de bit bajas, y en el
estndar no oficial MPEG 2.5 se aadieron 8.000, 12.000 y 11.025Hz para tasas an ms bajas.

29

suele usar con tasas de bit de 64kbps por canal.


Deteccin de errores, soporta de manera opcional CRC para la deteccin de
errores.
Datos complementarios, no utilizados en la decodificacin.
2.3.4 Algoritmo de codificacin MPEG-1 Layer 3
El algoritmo de codificacin sigue la estructura que puede verse en la Imagen
2.14. La entrada del codificador son datos normalmente codificados con PCM y separados
en marcos de 1152 muestras. Cada marco se divide a su vez en dos grnulos de 576
muestras cada uno. Cada uno de ellos se enva al banco de filtros polifsico (o de anlisis)
y al bloque de transformada de fourier rpida (FFT).

Imagen 2.14 Estructura de codificacin MP3[Lagerstm01]

Banco de filtros polifsico


El banco de filtros divide la seal de entrada en 32 subbandas de frecuencia del
mismo tamao, como puede verse en la Imagen 2.15. Los filtros proveen una buena
resolucin temporal con una razonable resolucin en frecuencia (Imagen 2.16). El igual
tamao de las subbandas no refleja el sistema auditivo humano dependiente de la
frecuencia. Sin embargo el tamao de las bandas crticas en funcin de la frecuencia es un
buen indicador de su comportamiento. Muchos efectos psicoacsticos son constantes con
la escala de frecuencias de una banda crtica [Pan95].

Imagen 2.15 Representacin del filtro

30

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

Transformacin discreta del coseno modificada


Despus de este proceso las muestras en cada subbanda estn an en el dominio
del tiempo. A travs de un transformacin discreta del coseno modificada (MDCT), cuya
ecuacin puede verse en la Imagen 2.17, las muestras de cada subbanda son mapeadas en
el dominio de la frecuencia que provee una mejor resolucin espectral. El uso del
procesado MDCT proporciona las siguientes mejoras:
Reduccin del aliasing
Cuantizacin no uniforme
Bandas factor de escala, se aproxima a los tamaos de las bandas crticas.
Codificacin de entropa de los valores de los datos

Imagen 2.17 Ecuacin de la transformacin MDCT [Hung]

Bloque FFT
Al mismo tiempo el bloque FFT transforma los grnulos de 567 muestras al
dominio de la frecuencia mediante una trasformada de Fourier.
Umbrales de enmascaramiento
Las muestras en el dominio del tiempo procedentes del bloque FFT pasan a travs
de un modelo psicoacstico para determinar la tasa de energa de cada umbral de
enmascaramiento para cada subbanda. Esto es utilizado por el cuantizador para determinar
cuantos bits son necesarios para codificar cada muestra. Tambin se utilizan para
determinar si se necesitan cambios en las ventanas del bloque MDCT.

31

Escalado y cuantizado
Los umbrales de enmascaramiento se usan para determinar iterativamente cuantos
bits son necesarios en cada banda crtica para codificar las muestras y por tanto el ruido de
cuantizacin no sea audible. Generalmente el codificador tiene que satisfacer unos
requerimientos de tasa de bits fijados [Lagerstm01].
Codificacin Huffman
En este bloque se realiza una codificacin de entropa de las lneas de frecuencia
cuantizadas usando el algoritmo de codificacin Huffman basado en 32 tablas Huffman.
Esta codificacin realiza una compresin sin prdidas y por tanto reduce la cantidad de
datos sin prdida de calidad [Hung].
Formateo del flujo de bits
El ltimo bloque del proceso de codificacin se encarga de producir un flujo de
bits que cumpla con MPEG-1 Layer 3. El flujo de bits est particionado en marcos, cada
uno representa 1152 muestras de audio. Cada marco esta compuesto por las lneas de
frecuencia codificadas con Huffman, informacin secundaria y una cabecera del marco
(Imagen 2.18).

Imagen 2.18 Formato del marco MP3

Cabecera: Tiene un tamao de 4 bytes y contiene informacin de la capa, la tasa


de bits, frecuencia de muestreo y modo de estreo. Tambin contiene 12 bits de
sincronismo usado para encontrar un marco dentro de un flujo de bits.
Side information o informacin secundaria: Contiene informacin necesaria
para la decodificacin de los datos principales, como la seleccin de la tabla
Huffman, factor de escalado, etc. Esta seccin tiene un tamao de 17 bytes con
canal simple y 32 bytes en modo de doble canal.
Datos principales: Esta seccin contiene los valores de factor escalado
codificados y las lneas de frecuencia codificadas con Huffman. El tamao
depende de la tasa de bits.
Datos auxiliares

Los marcos pueden no ser totalmente independientes entre s debido al uso de bit
reservoir que es un buffer o deposito comn de bits de los que se puede disponer para
codificacin 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 decodificacin. El codificador puede donar bits al bit reservoir cuando
necesita menos bits que la media de nmero de bits para codificar el marco. A su vez
cuando el codificador necesita ms nmero de bits puede tomarlos del bit reservoir.

32

Imagen 2.19 Ejemplo de bit reservoir.

2.3.5 Algoritmo de decodificacin MPEG-1 Layer 3


El decodificador est compuesto por tres partes principales: decodificacin del
flujo de bits, cuantizacin inversa y mapeo del tiempo a la frecuencia (Imagen 2.20). El
flujo de bits de entrada pasa a travs del primer bloque para sincronizarse, extraer las
lneas de frecuencia cuantizadas y la informacin de cada marco. El bloque de
cuantizacin inversa decuantiza las lneas de frecuencia procedentes del bloque anterior.
Finalmente el ltimo bloque es un conjunto de operaciones inversas del MDCT y el banco
de filtros de polifase del codificador. La salida es una seal en formato PCM [Hung].

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

2.3.5.1 Decodificacin del flujo de bits


Este bloque de decodificacin realiza la sincronizacin y extraccin de las lneas
de frecuencia cuantizadas y de otra informacin de cada marco. Es necesaria la
sincronizacin al inicio del marco y donde se encuentran los datos. El diagrama de este
bloque puede verse en la Imagen 2.21.

Imagen 2.21 Diagrama de bloques de la decodificacin del flujo de datos

33

Sincronizacin
El propsito de este bloque es recibir el flujo de datos de entrada, identificar el
contenido y pasar la informacin a los siguientes bloques del decodificador.
Decodificacin Huffman
En este bloque se realiza la decodificacin de los bits de cdigo Huffman. Debido
a que el cdigo Huffman es de longitud variable, una nica palabra del cdigo en medio
del los bits del cdigo no puede ser identificada sin empezar a decodificar desde un punto
en el cdigo de bits conocido por ser el principio de la palabra del cdigo.
Informacin para la decodificacin Huffman
Este bloque sirve para iniciar todos los parmetros necesarios en el bloque de
decodificacin Huffman para que la decodificacin pueda efectuarse correctamente. La
primera tarea a realizar es obtener todas las caractersticas de los bits del cdigo Huffman
de la informacin secundaria.
Decodificacin del factor de escalado
Decodifica los factores de escalado, la entrada del bloque es la informacin de los
factores de escalado y la salida se utiliza en el bloque de cuantizacin inversa.
2.3.5.2 Cuantizacin inversa.
Este bloque restablece los datos perceptualmente idnticos de las lneas de
frecuencia generados por el bloque MDCT del codificador. El desescalado se basa en las
lneas de frecuencia cuantizadas y escaladas procedentes de la codificacin Huffman y del
factor de escalado reconstruido en el bloque de decodificacin. La ecuacin de
desescalado puede verse en la Imagen 2.22.

Imagen 2.22 Ecuacin del calculo de desescalado de las lneas de frecuencia

2.3.5.3 Mapeo de la frecuencia al tiempo.


Este bloque contiene varios subbloques (Imagen 2.23) para la transformacin de
las lneas de frecuencia decuantizada en una seal de audio PCM.

34

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

Reduccin del aliasing


Dentro del bloque de MDCT del codificador se aplican reduccin del aliasing.
Para obtener una reconstruccin correcta los artefactos del aliasing deben ser aadidos de
nuevo en el proceso de decodificacin
MDCT inverso
A las lneas de frecuencia procedentes del bloque de reduccin de aliasing se le
aplica una inversin del MDCT. La expresin analtica puede verse en la Imagen 2.24.

Imagen 2.24 Expresin analtica del MDCT inverso.

Inversin de frecuencia
Sntesis del banco de filtro de polifase
Cada vez que a las 32 muestras de cada 32 subbandas se le aplica la sntesis del
banco de filtro de polifase se calculan 32 muestras de audio consecutivas.

35

2.4 Tarjetas de memoria no voltil


Las tarjetas de memoria no voltil se basan en memoria flash, un tipo de memoria
muy utilizada en los ltimos aos para el almacenamiento de datos en dispositivos
porttiles como reproductores de msica, cmaras de fotos y vdeo, telfonos mviles,
PDAs, etc. Lo que ha hecho avanzar mucho la tecnologa haciendo memorias cada vez
ms rpidas y baratas y de tamaos cada vez ms pequeos.

2.4.1 Memorias Flash


La memoria flash es un tipo de memoria EEPROM (memoria de solo lectura
programable y borrable elctricamente) que permiten el borrado o la escritura de varias
posiciones de memoria en una nica operacin. Son bsicamente memorias de estado
slido que permiten el almacenamiento de informacin en ausencia de corriente
(memorias no voltiles). En las primeras versiones era necesario borrar todo el chip, las
posteriores versiones permiten el borrado individual de bloques ms pequeos.
La principal ventaja de estas memorias frente a otros sistemas de almacenamiento
para dispositivos porttiles es su gran capacidad en un espacio muy reducido y muy poco
peso. Por ejemplo, las tarjetas MMC (multimedia card) permiten almacenar, en el tamao
de un sello, hasta 4GB de informacin, y con un peso que no alcanza los 2g. Otra
caracterstica de este tipo de memorias es su bajo consumo y alta velocidad de datos. Todo
esto hace que no solo se utilice este tipo de memorias para tarjetas, sino que se empiezan a
construir discos duros con este tipo de memoria, consiguiendo que sean ms resistentes a
condiciones ambientales duras o a golpes que los hacen ideales para algunos tipos de
sistemas.
Existen dos tipos de tecnologas de memorias Flash, segn se basen en puertas
NOR o NAND, ambas tienen caractersticas diferentes:
Las memorias NOR poseen una alta velocidad de lectura y acceso aleatorio, son
capaces de leer y escribir datos en una posicin especfica de memoria sin
necesidad de acceder a la memoria de forma secuencial, pueden obtener un
nico byte de la memoria.
Las memorias NAND tambin pueden leer y escribir a alta velocidad pero su
acceso es secuencial, accediendo a los datos en pequeos bloques o pginas.
Estas memorias pueden acceder a una nica pgina, pero no a un nico byte
como las NOR.

Las tarjetas de memoria flash que se comercializan hoy en da utilizan NAND


flash, debido a que esta memoria es ms rpida en operaciones de borrado y escritura, y
posee ms densidad y menor coste, puede verse la evolucin de esta tecnologa en la
Imagen 2.24 e Imagen 2.25. En la Tabla 2.1 se comparan las tecnologas NOR y NAND.

36

Caracterstica
Capacidad
XIP*
Velocidad
Fiabilidad

Ciclos de borrado
Tiempo de vida
Mtodo de acceso
Uso

Precio

NOR

NAND

Hasta 256 MB
Si
Borrados muy lentos
Escrituras lentas
Lecturas rpidas
Estndar:
Tiene problemas de inversin
de bits, menos de 10% que las
NAND

Hasta 16GB
No
Borrado rpido
Escritura rpida
Lectura rpida
Baja:
Requiere algoritmos de deteccin y
correccin de errores debido a la
inversin de bits.
Requiere control de sectores errneos
100.000 1.000.000
10 veces ms que las NOR

10.000 - 100.000
Menos de un 10% que las
NAND
Aleatorio
Almacenamiento de
cdigo
Almacenamiento de datos
(baja capacidad)
Alto

Secuencial
Almacenamiento de datos

Bajo

Tabla 2.1 Diferencias entre las tecnologas NOR y NAND.


*eXecute In Place, habilidad de una memoria de permitir la ejecucin del cdigo que almacena.

Imagen 2.24 Evolucin prevista de la memoria NAND flash segn la capacidad y tipo de aplicacin
[Samsung].

37

Imagen 2.25 Evolucin prevista de la memoria NAND flashsegn la capacidad, el tamao y la velocidad
[Samsung]

2.4.2 Tipos de tarjetas


Existen varios tipos de tarjetas de memoria, cada una la ha desarrollado una
empresa o un grupo de empresas. En este apartado se har un pequeo resumen de las
caractersticas de las ms importantes.
Tarjeta CompactFlash
Fue inicialmente especificado y producido por SanDisk Corp. en 1994, su
formato fsico es utilizado en una gran variedad de dispositivos. Existen dos subdivisiones
de CF, el tipo I y el tipo II. Ofrecen compatibilidad PCMCIA-ATA y es funcionalmente
compatible con TrueIDE con ATA/ATAPI-4.

Imagen 2.26 Tarjeta CompactFlash

38

Sus caractersticas principales son:


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

Son tarjetas que actualmente estn siendo muy utilizadas, tanto en computadores
porttiles como en cmaras de vdeo, por lo que su uso est muy extendido y el precio es
relativamente bajo.
Tarjeta SmartMedia
La tarjeta SmartMedia (Imagen 2.27) lanzada en el verano de 1995 creada por
Toshiba, originalmente llamada Solid State Floppy Disk Card (SSFDC). Se utilizan en
dispositivos de porttiles, sobre todo en cmaras de fotos, pero Actualmente su uso est
poco extendido. Fue respaldada por Fuji y Olympus, pero ambas la han sustituido, Fuji se
ha pasado a xD y Olympus a Secure Digital.

Imagen 2.27 Tarjeta SmartMedia

Sus caractersticas son:


Tamao reducido (45.037.00.76mm)
Capacidad limitada (hasta 256MB)
Terminales planos con 22 pins.
Interfaz entrada/salida de 8 bits
Dos versiones, a 3.3V y 5V
Tasa de transferencia de 2MB/s

Aunque este tipo de tarjetas an se siguen fabricando por Toshiba y Samsung


estn en claro retroceso y es previsible que en poco tiempo desaparezcan.
Tarjeta Memory Stick
La tarjeta Memory Stick (Imagen 2.28) fue lanzada por Sony en octubre de 1998,
describe una familia de tarjetas:

39

Original Memory Stick


Memory Stick
Memory Stick Select
Memory Stick MagicGate
Memory Stick Select MagicGate
Memory Stick Pro
Memory Stick Pro
Memory Stick Pro High-Speed
Memory Stick Duo
Memory Stick Duo
Memory Stick Duo MagicGate
Memory Stick Duo Adapter
Memory Stick Pro Duo
Memory Stick Pro Duo
Memory Stick Pro Duo High Speed
Memory Stick Micro
Memory Stick Pro-HG

Imagen 2.28 Tarjeta Memory Stick Pro Duo MagicGate

Se utilizan en todo tipo de dispositivos porttiles, con capacidades de hasta 8GB.


Se trata de un formato propietario, por lo que Sony monopoliza este tipo de productos.
Cada tipo de memoria posee unas caractersticas, segn las necesidades del dispositivo,
como pueden ser mayor capacidad o mayor velocidad de transferencia (en Memory Stick
Pro hasta 20 MB/s). Las tarjetas MagicGate poseen adems un sistema de encriptacin,
pensado para el mundo discogrfico, de forma que solo puedan ser ledas por dispositivos
autorizados. En cuanto a su interfaz, Memory Stick usa un conector de tan solo 10 pines.
Debido a ser una tarjeta usada casi exclusivamente por Sony, y la necesidad de
cumplir con una licencia hace complicado el diseo de dispositivos que utilicen este tipo
de tarjetas.
Tarjeta xD-Picture
El formato xD-Picture (Imagen 2.29) fue introducido en Julio de 2002 por
Olympus y Fujifilm para ser usadas en sus cmaras fotogrficas digitales. Est pensada
para que sea utilizada exclusivamente en cmaras digitales, y hasta el momento se usa
exclusivamente en cmaras Olympus y Fuji. Existen adems, nuevos modelos de tarjeta,
llamados Tipo M y Tipo H que no son compatibles con el formato anterior y presentan
una capacidad de hasta 8GB.

40

Imagen 2.29 Tarjeta xD-Picture

Las caractersticas de esta tarjeta son:


Reducido tamao (20x25x1.7mm)
Tasas de transferencia de hasta 5MB/s
Capacidad de hasta 8GB en xD-Picture Tipo M
Uso exclusivo en cmaras digitales

Tarjetas Multimedia Card (MMC)


Desarrolladas por SanDisk y Siemens AG en 1995, las tarjetas MMC (Imagen
2.30) han sido utilizadas en una gran variedad de dispositivos porttiles, destacan por su
reducido tamao (24 x 32x 1.5mm). Una caracterstica muy importante es su
compatibilidad con las tarjetas Secure Digital, de hecho estas ltimas aparecieron a partir
de las especificaciones de la MMC.

Imagen 2.30 Tarjeta Multimedia Card

Las caractersticas principales de estas memorias son:


Reducido tamao (24 x 32x 1.5mm)
Tasas de transferencia de hasta 52MB/s (Especificaciones v4)
Capacidad de hasta 8GB
Diferentes modos de bus: 1, 4 y 8 bits
Rango de voltaje de 1.65V a 3.6V (segn versiones)
Posibilidad de proteccin por contrasea
Uso de protocolo MMC y SPI (para compatibilidad con SD)

Existen gran cantidad de variantes de la multimedia card, como secureMMC, RSMMC, MMCmicro, MMCmobile y MMCplus. Dependientes todas de Multimedia Card
Association. Adems, a partir de ella se desarroll la tarjeta secure digital, con sus
correspondientes variantes. El nmero de pines va desde los 7 de la multimedia card
original hasta los 14 de la tarjeta MMCplus.
41

Tarjeta Secure Digial


En 1999 Matsushita Electric, SanDisk y Toshiba anunciaron un acuerdo de
colaboracin para desarrollar tarjetas de memoria con un sistema de proteccin del
copyright para la industria discogrfica. En 2000 anunciaron el nuevo estndar de tarjeta
de memoria que parta del estndar de la ya existente MMC y era compatible con esta.
Secure Digital est cubierto por una gran cantidad de patentes y marcas registradas y slo
se puede licenciar a travs de la Secure Digital Card Association, es necesario licencia
para el desarrollo de tarjetas y del host (excluyendo la comunicacin SPI compatible con
MMC). Existen tres versiones publicadas del estndar de SD y varios formatos que han
aparecido a partir de ella: miniSD y microSD tambin llamada Transflash. En la Imagen
2.31 puede verse una comparacin de los distintos formatos.

Imagen 2.31 Tarjetas SD, MiniSD y MicroSD

Las caractersticas principales de estas memorias son:


Tamao compatible con MMC (son solo algo ms gruesas)
Tasas de transferencia de hasta 200 Mbit/s
Capacidad con especificaciones SDHC 8GB (hasta el momento)
Diferentes modos de bus: 1 y 4 bits
Rango de voltaje de 1.65V a 3.6V (segn versiones)
Proteccin de contenidos DRM (digital rights management).
Uso de protocolo SD y SPI (para compatibilidad con MMC)

2.5 El interfaz de comunicacin USB


Existen varios interfaces de comunicacin usados en la actualidad para la
comunicacin entre un perifrico y un ordenador. Los interfaces de comunicacin ms
comunes en un ordenador son:
Puerto serie (RS-232)
Puerto paralelo (Centronics)
USB
Firewire
SCSI
Bluetooth

42

En captulos posteriores de discutir el por qu de la eleccin del interfaz USB,


podemos resumir que la eleccin se debe a que todos los ordenadores actuales poseen
dicho interfaz, a la necesidad de velocidad en las comunicaciones y por ser el ms
utilizado por los perifricos actuales.
A continuacin se realiza una exposicin de las caractersticas y una pequea
introduccin al funcionamiento del interfaz USB.

2.5.1 Orgenes del USB


El USB o Universal Serial Bus (bus serie universal) es un estndar de interfaz de
comunicaciones entre dispositivos. Fue desarrollado en 1996 por IBM, Intel, Northern
Telecom, Compaq, Microsoft, Digital Equipment Corporation y NEC. La versin 1.1 sali
en septiembre de 1998 aadiendo un nuevo tipo de transferencia, interrupt Out. Las
especificaciones del USB 2.0 fueron liberadas en abril de 2000 y estandarizadas por el
USB-IF14 en 2001. La principal caracterstica de USB 2.0 es que aade la opcin de una
nueva velocidad de transferencia, la High Speed, manteniendo la compatibilidad con las
versiones anteriores.
En la actualidad la ltima versin es el USB 2.0 con diversas revisiones, como el
soporte de USB On-the-Go que permite que un dispositivo pueda actuar como maestro o
como esclavo, y nuevos conectores, el ltimo es el MicroUSB (Imagen 2.32) cuyas
especificaciones fueron liberadas en abril de 2007.

Imagen 2.32 Terminales MicroUSB A y MicroUSB B

2.5.2 Caractersticas del USB


Los objetivos que se buscaban durante el diseo del USB fueron la facilidad de
uso, transferencias de datos rpidas y fiables, flexibilidad, bajo coste y ahorro de energa.
El resultado de dicho desarrollo result en un interfaz con las siguientes caractersticas:
Un interfaz para mltiples dispositivos, el interfaz USB es muy verstil y se
puede utilizar para gran variedad de dispositivos con caractersticas diferentes.
Configuracin automtica, cuando un perifrico se conecta al ordenador

14 USB Implementers Forum, es una organizacin 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.


Fcil conexin, no es necesario abrir el ordenador para conectar un perifrico,
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 perifrico y el ordenador.
Conexiones en caliente, no es necesario apagar el equipo para conectar el
perifrico.
Sin ajustes del usuario, el usuario no necesita configurar puertos ni
interrupciones (IRQ)
No se necesitan fuentes de energa, el interfaz proporciona una alimentacin de
5V y corriente de hasta 500ma.
Adems de estas caractersticas de facilidad de uso, el USB posee otras
prestaciones que lo hacen ser el ms utilizado en los perifricos actuales. En la Tabla 2.2
se comparan los interfaces ms populares.
Velocidad
Permite una transmisin de datos de alta velocidad, en concreto soporta tres
velocidades: low speed a 1,5 Mb/s, full speed a 12 Mb/s y high speed a 480 Mb/s. No
obstante el bus debe transmitir ms datos adems de los usados por el perifrico como
datos de control, estado y chequeo de errores. Esto hace que el caudal efectivo para la
transmisin de datos sea algo menor, en concreto la velocidad mxima terica sera
aproximadamente: 424 Mb/s para high speed, 9,6 Mb/s para full speed y 6,4 Kb/s para
low speed [Axelson05].
Fiabilidad
La fiabilidad se debe a dos elementos, el hardware y los protocolos
transmisin. Los controladores, receptores y cables estn diseados para eliminar
mayor cantidad de ruido que causa errores en los datos. Adems, el protocolo
transmisiones puede detectar posibles errores en los datos y notificarlo para
retransmisin. Esto se hace a nivel de hardware y no requiere programacin
intervencin del usuario.

de
la
de
su
ni

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 ms antiguo.
Bajo consumo
El cdigo y circuitos de ahorro de energa pueden apagar automticamente un
perifrico USB cuando no se est utilizando.
44

Comunicaciones sin cables


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

Formato

N de
dispositivos
(Mximos)

Distancia
(Mximo,
metros)

Velocidad
(Mxima, bps)

Uso comn

USB

Serie,
asncrona

127

Ethernet

Serie

1024

488 m

10G

Red de
comunicaciones

IEEE-1394b
(FireWire 800)

Serie

64

91 m

3.2G

Vdeo y sistemas de
almacenamiento

IEEE-488
(GPIB)

Paralelo

15

18 m

8M

Instrumentacin

IrDA

Serie
infrarrojos,
asncrona

2m

16M

Impresoras y PDAs

I2C

Serie, sncrona

40

5.5 m

3.4M

Comunicacin de
microcontroladores

Microwire

Serie, sncrona

3m

2M

Comunicacin de
microcontroladores

MIDI

Bucle de
corriente

15 m

31.5k

Msica

Puerto
paralelo

Paralelo

2 (8 con daisychain)

3-9 m

8M

Impresoras,
escneres, unidades
de disco.

RS-232

Serie,
asncrona

15-30 m

20k - 115k

Mdem, ratn e
instrumentacin

RS-485

Serie,
asncrona

32

1220 m

10M

Adquisicin de
datos y control de
sistemas

SPI

Serie, sincrona

3m

2.1M

5 (hasta 29 m) 1.5M, 12M, 480M Ratn, teclado, HD,


audio, impresora,
otros perifricos

Comunicacin de
microcontroladores.
Tabla 2.2 Comparacin de los interfaces ms populares [Axelson05]

45

2.5.3 Topologa
La topologa 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 nmero 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 (Raz o Root) se encuentra el Controlador USB que controla todo
el trfico de informacin en el bus. Solo un dispositivo puede comunicarse con el
controlador del host a la vez, por lo que se suelen tener varios controladores de host para
incrementar el ancho de banda disponible.

Imagen 2.33 Topologa USB [Axelson05]

2.5.5 Nivel fsico


A nivel fsico, el USB utiliza un cable de 4 conductores para transmitir una seal
diferencial (D+ y D-) y alimentacin (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 caractersticas elctricas) (Imagen
2.34), mientras que los full speed pueden ir equipados con un cable o utilizar cables
independientes de hasta 5 m (tambin dependiendo de sus caractersticas elctricas)
(Imagen 2.35).

46

Imagen 2.34 Cable para low speed[Anderson01]

Imagen 2.35 Cable para full y high


speed[Anderson01]

La comunicacin es bidireccional y utiliza codificacin autoreloj NRZI (la lnea


cambia de nivel si se transmite un 0 y no cambia si transmite un 1) con "bit stuffing"
(insercin de un cero tras la transmisin de 6 unos, para asegurar transiciones en la lnea).
Los dispositivos disponen de un transmisor diferencial, receptores diferencial y I/O y
resistencias de terminacin con los que pueden transmitir y detectar varios estados
elctricos distintos en la lnea [Fujitsu00]:
Transmisin/Recepcin diferencial de bits: Estados DIFF0 y DIFF1,
denominados tambin estados J y K.
SE0 (Single-Ended 0): Ambas seales D+ y D- a 0V. Se utiliza para detectar la
conexin/desconexin de dispositivos, para indicar el EOP (fin de paquete) y
para generar reset.
IDLE: reposo o lnea en alta impedancia, necesario para permitir transferencias
semi-dplex, detectar la conexin y desconexin de dispositivos y discriminar
entre dispositivos FS y LS.
El SOP (principio de paquete) se indica mediante una transicin IDLE a K.
El EOP (fin de paquete) se indica mediante una secuencia SE0 (2 bits) + J
(1 bit) + IDLE.

2.5.6 Protocolo
El protocolo de nivel fsico se basa en tokens (testigos). El controlador USB
transmite tokens que incluyen la direccin del dispositivo destino, y el dispositivo que
detecta su direccin en el token responde y lleva a cabo la transferencia de datos con el
controlador. De esta manera, el Controlador USB maneja la parte ms compleja del
protocolo, generando los tokens de transferencias de datos a 480 Mbps, 12 Mbps o a 1,5
Mbps, y controlando la conexin lgica entre el sistema y las funciones internas de cada
dispositivo. El controlador USB tambin maneja el consumo en el bus a travs de las
funciones Suspender/Continuar, por medio de las cuales controla los modos
Reposo/Activo de los dispositivos. Esta arquitectura permite el diseo de dispositivos
extremadamente simples y de bajo coste.
USB divide el tiempo en espacios de 1 ms denominados marcos, durante las
cuales se llevan a cabo las comunicaciones a travs de Transacciones, las cuales se
componen a su vez de Paquetes. Existen tres tipos de paquetes: Token, Dato y Validacin
(Handshake):
47

El paquete Token contiene los campos:


PID (identifica el tipo de paquete). Todos los PIDs van protegidos por bits
redundantes,
Direccin 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 transaccin se enva un paquete de Validacin indicando que no
ha habido errores.

Adicionalmente, el Controlador USB indica el principio de cada Trama y la


transmisin hacia dispositivos low speed mediante tokens especiales [Fujitsu00].
2.5.7 Tipos de transferencias en USB 2.0
El interfaz USB fue diseado para ser usado por una gran cantidad de perifricos
distintos con distintos requerimientos en cuanto a tasa de transferencia, tiempo de
respuesta y correccin 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 perifricos.
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 informacin
sobre el dispositivo, fijar su direccin y seleccionar otras configuraciones y opciones.
Todos los dispositivos USB deben soportar las transferencias de control.
Masiva
Las transferencias masivas se utilizan cuando la tasa de transferencia no es
crucial, como enviar un fichero a la impresora, recibir datos de un escaner o acceder a
ficheros en un disco. Para este tipo de transferencias tener una rpida tasa de transferencia
es bueno, pero se puede esperar si es necesario en el caso de que el bus est ocupado. Si el
bus est libre las transferencias masivas son muy rpidas. Solo los dispositivos full y high
speed pueden realizar este tipo de transferencias
Interrupcin
Las transferencias de interrupcin son para aquellos dispositivos que necesitan la
atencin del host peridicamente. Este tipo de transferencia solo estn en los dispositivos
low speed. Se usa para teclados, ratones, etc.

15 Dispositivo maestro que inicia la comunicacin, generalmente el ordenador.

48

Iscrona
Las transferencias iscronas tienen garantizado el tiempo de entrega de los datos
pero no la correccin de errores. Se utiliza para la transmisin de vdeo y audio en tiempo
real. Esta transferencia es la nica que no soporta retransmisin automtica de los datos
recibidos con errores ya que errores ocasionales son aceptables. Solo los dispositivos full
speed y high speed tienen este tipo de transferencia.

Tipo de transferencia

Control

Masiva

Interrupcin

Iscrona

Uso comn

Identificacin y
configuracin

Impresoras,
escaneres y
discos

Ratones,
teclados

Flujo de audio y
vdeo

Necesario

Si

No

No

No

Permite baja velocidad

Si

No

Si

No

15.872

53.248

24.576

24.576

Bytes/milisegundos de datos
por transferencia. Mximo
posible por tubera (low speed)*

832

2116

64

1023

Bytes/milisegundos de datos
por transferencia. Mximo
posible por tubera (low speed)*

24

No permitida

0,8

No permitida

Bytes/milisegundos de datos
por transferencia. Mximo
posible por tubera (high
speed)*

Direccin del flujo de datos

Entrada y salida Entrada o salida Entrada o salida


(USB 1.0 solo
entrada)

Ancho de banda reservado


para todas las transferencias
del tipo

10% en low/full
speed, 20% en
high speed

Ninguno

Si

Si

Si

No

Mensaje

Flujo

Flujo

Flujo

Tiempo de entrega garantizado

No

No

No

Si

Latencia garantizada (mximo


tiempo entre transferencias)

No

No

Si

Si

Correccin de errores
Mensajes o flujos de datos

Entrada o salida

90% en low/full speed, 80% en


high speed (combinando iscrona e
interrupcin)

*Asume que las transferencias utilizan el tamao mximo de paquete.


Tabla 2.3 Comparacin de los tipos de transferencia [Axelson05]

49

2.6 Microcontroladores.
2.6.1 Definicin y caractersticas
Un controlador el dispositivo que se emplea para gobernar de uno o varios
procesos. Aunque el concepto de controlador ha permanecido invariable a travs del
tiempo, su implementacin fsica ha variado frecuentemente. Inicialmente los
controladores se construan exclusivamente con componentes de lgica discreta,
posteriormente se emplearon los microprocesadores, que se rodeaban con chips de
memoria y unidades de E/S sobre una tarjeta de circuito impreso. Actualmente todos los
elementos del controlador se han podido incluir en un circuito integrado que recibe el
nombre de microcontrolador.
El microcontrolador es un circuito integrado que incorpora la mayor parte de los
elementos que configuran un controlador. Aunque sus prestaciones son limitadas, adems
de dicha integracin, su caracterstica principal es su alto nivel de especializacin. Un
microcontrolador dispone normalmente de los siguientes componentes:
Procesador o CPU (Unidad Central de Proceso).
Memoria RAM para Contener los datos.
Memoria ROM/PROM/EPROM para almacenar el programa.
Diversos mdulos para el control de perifricos :
Temporizadores
Interfaces UART, SPI, I2C, USB, etc.
Conversores Analgico/Digital y Digital/Analgico
Watchdog
Comparadores analgicos
Modulador de anchura de pulsos PWM
Puertas de E/S digitales de propsito general
Generador de impulsos de reloj que sincronizan el funcionamiento de todo el
sistema, aunque muchos utilizan un reloj externo.

Las principales
microcontroladores son:

ventajas

que

se

pueden

encontrar

con

el

uso

de

Gestin eficiente de procesos.


Aumento de fiabilidad.
Reduccin del tamao, consumo y coste.
Mayor flexibilidad.

Existe una gran diversidad de microcontroladores, la clasificacin ms importante


que se puede realizar es segn sean de 4, 8, 16 o 32 bits. Los microcontroladores ms
utilizados hoy en da son los de 8 bits ya que son apropiados para la mayora de
aplicaciones. No obstante los microcontroladores de 16 y 32 bits van ganando terreno a
medida que las aplicaciones se van haciendo ms complejas.

50

2.6.2 Seleccin del microcontrolador


A la hora de escoger el microcontrolador a emplear en un diseo concreto hay que
tener en cuenta multitud de factores, como la documentacin y herramientas de desarrollo
disponibles y su precio, la cantidad de fabricantes que lo producen y por supuesto las
caractersticas del microcontrolador (tipo de memoria de programa, nmero de
temporizadores, interrupciones, etc.)
Las caractersticas principales a tener en cuenta en la eleccin de un
microcontrolador son:
Procesamiento de datos: puede ser necesario que el microcontrolador realice
clculos crticos en un tiempo limitado. En ese caso debemos asegurarnos de
seleccionar un dispositivo suficientemente rpido para ello. Por otro lado, habr
que tener en cuenta la precisin de los datos a manejar: si no es suficiente con
un microcontrolador de 8 bits, puede ser necesario acudir a microcontroladores
de 16 32 bits.
Entrada Salida: Realizar un anlisis de las lneas requeridas de entrada/salida.
Consumo: muchas aplicaciones utilizan bateras y un consumo bajo es un factor
muy importante.
Memoria: debemos realizar una estimacin de la cantidad de memoria, tanto de
RAM como ROM, necesaria para nuestra aplicacin.
Ancho de palabra: se debe seleccionar el microcontrolador de menor ancho de
palabra que satisfaga los requerimientos de la aplicacin. Usar un
microcontrolador de 4 bits supondr una reduccin en los costes importante,
mientras que uno de 8 bits puede ser el ms adecuado si el ancho de los datos es
de un byte. Los microcontroladores de 16 y 32 bits, debido a su elevado coste,
deben reservarse para aplicaciones que requieran sus altas prestaciones.
Diseo de la placa: la seleccin de un microcontrolador concreto condicionar
el diseo de la placa de circuitos. Debe tenerse en cuenta que quiz usar un
microcontrolador barato encarezca el resto de componentes del diseo.

2.6.3 Aplicaciones
Cada vez existen ms productos que incorporan un microcontrolador con el fin de
aumentar sustancialmente sus prestaciones, reducir su tamao y coste, mejorar su
fiabilidad y disminuir el consumo. Los microcontroladores estn siendo empleados en
multitud de sistemas presentes en nuestra vida diaria, como pueden ser juguetes, hornos
microondas, frigorficos, televisores, ordenadores, impresoras, mdems, el sistema de
arranque de nuestro coche, etc. Y otras aplicaciones algo menos comunes como
instrumentacin electrnica, control de sistemas en una nave espacial, etc. Una aplicacin
tpica podra emplear varios microcontroladores para controlar pequeas partes del
sistema. Estos pequeos controladores podran comunicarse entre ellos y con un
procesador central, probablemente ms potente, para compartir la informacin y coordinar
sus acciones [Aguayo04].

51

3. Diseo y desarrollo del hardware


3.1 Introduccin
Una de las partes ms importantes en la creacin de un perifrico es el diseo del
hardware ya que condiciona el desarrollo del firmware, las caractersticas finales del
dispositivo y su coste. Primero se va ha realizar una seleccin de componentes y de las
herramientas utilizadas para el diseo, la creacin y el testeo del hardware. Una vez
seleccionados los componentes principales se realiza una exposicin del diseo del
dispositivo dividido en mdulos ms simples. Al final se explican los problemas surgidos
durante la implementacin del dispositivo y las modificaciones realizadas al diseo final.

3.2 Seleccin de componentes


Como se ha dicho una de las partes ms importantes en la creacin de un
perifrico es el diseo del hardware, y en este diseo la primera tarea es la seleccin de
unos componentes adecuados. En esta seleccin de componentes se van a tener diversos
factores en cuenta:
Cumplir los requisitos para la realizacin de la aplicacin que se quiere disear
es el primer y ms importante factor a tener en cuenta.
Simplicidad, una vez seleccionados aquellos elementos componentes que
cumplan los requisitos se han de seleccionar aquellos que posean una mayor
simplicidad, ya que complejidad extra no aporta nada. En cuanto a la
simplicidad los elementos que se evalan son:
Protocolos de comunicacin simples.
Mnimo nmero de componentes, tanto de circuitos integrados como de
elementos pasivos.
Encapsulados de fcil soldadura, ya que la soldadura se realizar a mano.
Fciles de conseguir y econmicos, se descartarn aquellos componentes que
sean de muy difcil obtencin.

Lo primero por tanto ser recordar los requisitos del reproductor y ver como
afectan al diseo. Debe ser un reproductor alimentado por pilas, capaz de reproducir MP3
y con conexin al ordenador suficientemente rpida como para que pueda reproducir un
fichero enviado en tiempo real (en nuestro caso hemos elegido el USB que adems
permite la carga de pilas), debe almacenar los ficheros en un tarjeta de memoria y mostrar
los datos en una pantalla. Por tanto el dispositivo se compondr de:
Un microcontrolador para gobernarlo.
Un integrado que se encargue de decodificar el MP3.
Con conversor D/A y, si es necesario, un pequeo amplificador para la salida de
audio.
Un integrado que se encargue de la comunicacin USB si el microcontrolador
no incorpora este interfaz.
Una tarjeta de memoria, donde se almacenarn los ficheros.

52

Una pantalla LCD para mostrar los datos.


Un regulador de tensin para alimentar al circuito a partir de las pilas.

3.2.1 El microcontrolador
Lo primero que se ha de realizar es seleccionar entre un microcontrolador de 8,
16 o 32 bits (los de 4 parecen claramente insuficientes). Como debemos seleccionar aquel
ms simple que cumpla con los requisitos se decide usar uno de 8 bits, ya que tienen unas
prestaciones suficientes para implementar el control del reproductor. El microcontrolador
ser el responsable de leer los ficheros de la tarjeta de memoria, enviar el flujo de datos al
chip decodificador de MP3, de la comunicacin con el ordenador, de controlar la botonera
y de refrescar los datos en la pantalla LCD.
Los principales microcontroladores que se han considerado son la familia
ATMega de Atmel , PIC de Microchip y Motorola. Los pros y contras que se han
encontrado para cada uno son:
Los microcontroladores PIC de microchip soportan un amplio rango de voltajes,
son rpidos pero algo menos que los ms rpidos de Atmel o Motorola, son
econmicos y fciles de conseguir, poseen gran variedad de interfaces de
comunicacin, como el SPI, utilizado en algunas tarjetas de memoria. Adems
su lenguaje ensamblador me es conocido y existe gran cantidad de
documentacin disponible.
Los microcontroladores Motorola tambin son rpidos y poseen gran variedad
de interfaces, pero no son tan econmicos y fciles de conseguir como los PIC
de Microchip, no tienen un rango de voltajes tan flexible y no existe tanta
documentacin, ejemplos y herramientas como en los PIC o los
microcontroladores Atmel.
Los ATMega de Atmel son rpidos, poseen gran variedad de interfaces, un
amplio rango de voltajes, gran cantidad de RAM, son econmicos y fciles de
conseguir.

Tanto los microcontroladores PIC como los ATMega parecen los ms apropiados.
Los ATMega son algo ms potentes y poseen mayor cantidad de ROM y RAM, pero los
PIC poseen un lenguaje ensamblador y arquitectura conocida, ya que se han estudiado y
utilizado durante la carrera, ello disminuye en gran medida el coste de aprendizaje por lo
que finalmente se selecciona este tipo de microcontrolador.
Los requisitos para el microcontrolador son:
Al menos 16 KB de memoria Flash para el cdigo de programa.
Al menos 1KB de memoria RAM, es necesaria al menos esa cantidad de
memoria ya que las lecturas y escrituras de tarjetas de memoria suelen ser en
bloques de 512 bytes.
Poseer memoria EEPROM para almacenar informacin no voltil como el
volumen actual. Como la cantidad de datos a guardar es muy baja son
suficientes unos pocos bytes.
Poseer suficientes lneas de entrada/salida para la conexin de todos los
elementos del dispositivo, esto depender del resto de elementos seleccionado.

53

Entre los microcontroladores PIC de 8 bits podemos encontrar cuatro familias


principales, las PIC10, PIC12, PIC16 y PIC18. Tan slo los microcontroladores de la
familia PIC18 poseen los requisitos necesarios, ya que ninguno de los microcontroladores
del resto de las familias poseen la suficiente memoria Flash y RAM.
El microcontrolador elegido ha sido el 18F45216 ya que es uno de los ms
potentes de la familia PIC18 y los microcontroladores PIC con bus USB incorporado no
estn disponibles con memoria Flash17. En la Tabla 3.1 puede verse una comparativa de
las caractersticas de la familia 18Fxx2. El microcontrolador 18F452 en cuestin tiene las
siguientes caractersticas:
32kB de memoria Flash para el cdigo del programa.
1536 Bytes de memoria RAM.
256 Bytes de memoria EEPROM.
Frecuencia de reloj de hasta 40MHz (10 MIPS) usando multiplicador de reloj.
Multiplicacin por hardware en un nico ciclo de instruccin.
3 lneas de interrupcin.
34 lneas de entrada/salida.
4 temporizadores/contadores, con diferentes caractersticas como ser de 8 o 16
bits, tener preescalador, etc.
18
2 mdulos CCP (Capturador/Comparador/PWM )
Modulo MSSP (Puerto serie maestro sncrono) con dos modos de operacin:
Como puerto SPI (soporta los 4 modos SPI)
Como puerto I2C (modo maestro y esclavo)
Modulo USART (Transmisor-Receptor asncrono universal)
Modulo PSP (puerto paralelo esclavo)
Conversor analgico/digital de 10 bits.
Otras caractersticas como: Watchdog Timer (WDT), Brown-out Reset (BOR),
Power-on Reset (POR), Power-up Timer (PWRT), Oscillator Start-up Timer
(OST), ICSP, etc.

16 Actualmente para nuevos diseos Microchip recomienda usar el PIC 18F4520.


17 Actualmente hay microcontroladores PIC con interfaz USB y memoria Flash, pero no haba en el
momento de la eleccin de componentes de este proyecto.
18 Modulador de anchura de pulsos.

54

Tabla 3.1 Caractersticas de la familia 18Fxx2

En concreto se va a usar el PIC 18LF452 que es la versin de bajo voltaje ya que,


como se ver posteriormente, se va a utilizar un voltaje de 3,3 V para alimentarlo debido a
las necesidades del resto de componentes. En cuanto a la frecuencia del reloj se utilizar
la ms baja posible que sea suficiente para el funcionamiento correcto del dispositivo,
despus de realizar varias pruebas se ha decidido utilizar una frecuencia de 20 Mhz,
adems no se deben usar frecuencias mayores con voltajes tan bajos, pese a ser la versin
de bajo voltaje. En cuanto al encapsulado se decide utilizar el encapsulado DIP ya que es
ms adecuado para prototipos al no necesitar estar soldado pudiendo ser sustituidos
fcilmente, y sus adaptadores son econmicos y fciles de encontrar.

3.2.2 El mdulo USB


Como se ha indicado en el apartado anterior el microcontrolador no posee un
interfaz USB por lo que necesitamos un integrado que proporcione esta funcionalidad. Las
caractersticas de este integrado deben ser:
Interfaz sencillo para facilitar la comunicacin con el microcontrolador
Mnimo nmero de componentes externos.
Que sea un componente fcil de conseguir.
Ha de poseer drivers para windows y a ser posible para otros sistemas
operativos, con ejemplos de su utilizacin.

Los integrados considerados para esta funcin han sido el PDIUSBD12D de


Philips y de FTDI Chip los integrados FT232MB y FT245MB, todos compatibles con
USB 2.0. Las caractersticas de cada uno se pueden ver en la tabla comparativa 3.2.
55

PDIUSBD12D

FT232BM

FT245BM

Comunicacin con el
microcontrolador

Paralelo (8 bits)

Serie (RS-232)

Paralelo (8 Bits)

Nmero de pines

28

32

32

Velocidad de
transferencia Max.con
el microcontrolador

2 MB/s

1 Mbit/s

1 MB/s

Cantidad de
componentes externos

Baja

Baja

Baja

Obtencin

Relativamente difcil

Fcil

Fcil

Flexibilidad

Alta (se pueden disear


gran variedad de
dispositivos)

Baja

Baja

Sistemas Operativos y Debes crear tus propios


Drives
Drivers

Complejidad de
utilizacin
Cantidad de
documentacin y
ejemplos de uso

Tiene diferentes drivers oficiales para varios


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

Alta

Baja

Baja

Baja

Alta

Alta

Mdulo para
No
Si
prototipos
Tabla 3.2 Comparacin de diferentes integrados para el interfaz USB

Si

El integrado PDIUSBD12D tiene la ventaja de ser ms flexible que los de FTDI,


pudindose realizar casi cualquier tipo de clase de dispositivo e implementando el driver a
medida. Por contra es mucho ms complicado de utilizar y la necesidad de
implementacin de drivers propios hace mucho ms costosa la realizacin del dispositivo.
Los integrados de FTDI son mucho ms simples y cmodos de usar pero menos flexibles,
sin embargo para el diseo 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 comunicacin con el
microcontrolador, uno serie y el otro paralelo, siendo ms rpido este ltimo. La mayor
rapidez en las transferencias del integrado con interfaz paralelo (FT245BM) y la mayor
facilidad de uso con respecto al desarrollado por Philips hacen que sea el elegido para
usarse en este dispositivo.
Cabe destacar otra importante caracterstica de los modelos de FTDI, ambos
cuentan con mdulos para el desarrollo de prototipos de forma ms rpida sin necesidad
de preocuparse de los componentes externos necesarios ni de la soldadura del integrado
(bastante compleja de realizar a mano), ya que todo est montado en un pequeo circuito
en formato DIP. En concreto se va a utilizar el modulo DLP-USB245M-G que monta el
integrado FT245BM, puede verse en la Imagen 3.3.

56

Imagen 3.3 Mdulo DLP-USB245M-G

3.2.3 La tarjeta de memoria


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

Compact Flash

Multimedia Card

Secure Digital

Nmero de pines

50

Tamao bus de datos

16 bits

1 bit

1 o 4 bits

Velocidad de
transferencia

56 MBytes/s

20 Mbits/s

200 Mbit/s

Modo SPI

No

Opcional

Si

Licencia para hacer un


dispositivo

No

No

Si

Alimentacin

3,3 5 V
2,7 3,6 V
Tabla 3.4 Comparacin de tarjetas de memoria

2,7 3,6 V

La desventaja principal de las tarjetas Compact Flash frente a los otros dos tipos
es el elevado nmero de pines, ya que el nmero de puertas de entrada/salida del
microcontrolador es limitado. Por contra tanto las tarjetas MMC como SD tienen un
nmero de pines muy reducido y la posibilidad de acceder mediante el protocolo SPI, que
est implementado por hardware en el microcontrolador. Adems, las tarjetas MMC y SD
son compatibles entre s, tanto fsica como elctricamente, por tanto un dispositivo que
utilice el modo SPI en una tarjeta MMC podr utilizar tarjetas SD y viceversa.
Debido a que es necesario el pago de una licencia para implementar un
dispositivo que utilice tarjetas SD (al menos si usan el protocolo SD) en este proyecto se
utilizar como medio de almacenamiento tarjetas MMC que incorporen el modo SPI
(actualmente todas las tarjetas que se comercializan incorporan este modo de acceso).
Adems, en el reproductor se podr utilizar tarjetas SD y, mediante adaptadores, tarjetas
RS-MMC, MMCmicro, miniSD y microSD.

57

3.2.4 El chip decodificador de MP3


Para la reproduccin del audio en formato MP3 es necesario un chip que
decodifique los datos MP3, un conversor digital/analgico y un pequeo amplificador
para que la seal analgica pueda escucharse en unos auriculares. Los chips
decodificadores candidatos analizados son: STA013 de ST Microelectronics, VS1001K de
VLSI Solutions y MAS3507D de Micronas. En la Tabla 3.5 se puede ver una
comparacin de estos decodificadores.

STA013

VS1001K

MAS3507D

Nmero de pines

28

28

44

Necesita inicializacin

Si

No

No

Informacin disponible

Poca

Mucha

Poca

Incluye conversor A/D

No

Si

No

Tensin de alimentacin

2,1-3,6v

2,8-3,6v

2,85-3,6v

Comunicacin

I2C
SPI
Tabla 3.5 Comparacin de decodificadores de MP3.

I2C

El decodificador STA013 tiene la principal desventaja en su inicializacin, ya que


es necesario el envo de un fichero de 2 kB cada vez que se inicia, lo que hace ms
compleja su utilizacin y el uso de 2 kB de memoria del microcontrolador es este fichero
de inicializacin. En cuanto a la informacin disponible para el diseo el VS1001K,
adems de disponer de las especificaciones, existen varias application notes y un buen
soporte del fabricante (se pueden hacer consultas a los diseadores en un foro) lo que hace
el diseo de dispositivos ms sencillo. Adems, este decodificador no necesita un
conversor analgico/digital externo, ya que lo incluye en el propio integrado, y con una
seal de salida suficiente para ser usada directamente en unos auriculares. El
decodificador MAS3507D tiene la desventaja de usar un encapsulado ms difcil de soldar
que el resto, menos informacin disponible y con la necesidad de un conversor A/D
externo. Es por todo esto que se decide utilizar el decodificador VS1001K en este
proyecto.

3.2.5 La pantalla LCD


Como interfaz de usuario se va a utilizar una botonera y una pantalla LCD en la
que se le mostrar al usuario informacin sobre las msica que est escuchando, as como
tambin se facilitar la navegacin por el rbol de directorios de la tarjeta de memoria.
Existen dos tipos principales de pantallas, las pantallas de caracteres y las
pantallas grficas. Las ventajas de las pantallas de caracteres son la facilidad para
adquirirlas, utilizan un interfaz estndar19, existe mucha documentacin sobre su uso e
incluyen un mapa de caracteres interno, aunque tambin admiten caracteres definidos por
el usuario. Las principales desventajas son el nmero de pines necesarios (14 funcionando
en modo de 8 bits y 10 en modo 4 bits) y menos versatilidad que una pantalla grfica.
19 Interfaz HD44780 desarrollado por Hitachi y utilizado por la mayora de fabricantes.

58

En cuanto a las pantallas grficas, son normalmente mucho ms caras que las de
caracteres, ms complejas de usar y necesitan el envo de todos los pxeles, aun cuando se
desean mostrar caracteres. Sin embargo son mucho ms verstiles que las de caracteres,
pudiendo mostrar cualquier dibujo e icono junto al texto, diferentes tamaos y fuentes de
texto, por lo que son ms apropiadas para un interfaz de usuario donde se desea mostrar
mucha informacin, sustituyendo parte de esta informacin por pequeos iconos.
Afortunadamente se ha encontrado un LCD grfico econmico, muy fcil de adquirir,
muy documentado y con un interfaz serie de tan solo 8 lneas que utiliza el bus SPI. Se
trata de las pantallas utilizadas por Nokia en sus telfonos mviles 3310 y 3210 que
utilizan el controlador Philips PCD8544. En la Tabla 3.6 se puede comparar las
caractersticas de la pantalla grfica con controlador PCD8544 y una pantalla de
caracteres de 20x4.

LCD 20x4

LCD grfico PCD8544

Nmero de pines

14 (10 en modo 4 bits)

Mapa de caracteres

Si

No

Interfaz

Estndar HD44780

Comunicacin sencilla, acceso por


SPI

Documentacin

Muy documentado

Muy documentado

Tamao

20x4 carcteres

84x48 pxeles, equivalente a 14x6


caracteres de tamao 6x8

Tensin de alimentacin

5V

2.7-3.3 V

Facilidad de adquirir

Muy fcil

Fcil (como recambio de telfono


mvil)

Precio

Econmica
Tabla 3.6 Comparativa de pantallas LCD

Econmica

Finalmente se decide la utilizacin de la pantalla grfica con el controlador


Philips PCD8544, que puede verse en la Imagen 3.6, por la posibilidad de ofrecer mayor
informacin en pantalla de forma ms intuitiva (mediante iconos), por necesitar menos
puertos de comunicacin del microcontrolador, ser econmica y estar suficientemente
documentada.

Imagen 3.6 Pantalla LCD con controlador Philips PCD8544

59

3.3 Programa, herramientas y metodologa


utilizada
Para el diseo, fabricacin 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 creacin, stos son: diseo, implementacin y testeo. En la Imagen 3.7 se
puede ver un resumen de los materiales utilizados para cada una de las fases del desarrollo
del hardware del reproductor.

Imagen 3.7 Materiales para realizar el hardware

3.3.1 Diseo
Para el diseo del esquemtico y el trazado o layout del circuito impreso se ha
utilizado el programa Eagle de CadSoft, se trata de un programa muy utilizado para el
diseo de circuitos impresos y que posee una versin gratuita (con algunas limitaciones
como el uso de como mximo dos capas y el uso no comercial de los diseos). Las
principales ventajas de este programa son: su facilidad de uso, que muchos de los
componentes utilizados ya se encuentran en su librera o en Internet y pueden ser
importados, y que muchas compaas de fabricacin de circuitos impresos admiten su
formato directamente, sin necesidad de exportarlos a formato Gerber20. En la Imagen 3.8
se puede ver el proceso seguido para el diseo del circuito impreso.

20 Formato de fichero estndar usado para la fabricacin de circuitos impresos que contiene informacin de
patrones de pistas, vas, informacin corte, mscaras de soldadura, etc.

60

Imagen 3.8 Procesos para el diseo del circuito

El primer paso en el diseo del circuito impreso es la colocacin en el diagrama


esquemtico de los componentes que van a ser utilizados y dibujar las conexiones entre
ellos. Para una mejor comprensin del esquema en su conjunto se divide en diferentes
mdulos, de forma que las lneas de un mdulo se interconectan con otro mediante
etiquetas, para hacer ms claro el sistema. Una vez finalizado el diseo del esquemtico se
realiza una comprobacin de las conexiones mediante el sistema automtico de
comprobacin de reglas elctricas ERC (Electrical Rule Check).
Una vez que se ha comprobado que el esquemtico est bien interconectado se
pasa ha realizar el trazado del circuito impreso. Lo primero es la colocacin de los
componentes en el circuito, colocando cerca aquellos componentes que estn
interconectados, teniendo especial importancia los condensadores de desacoplo y los
cristales. Despus se procede al enrutado del circuito, este paso se realiza tanto de forma
manual como automtica, realizando de forma manual aquellas lneas que se consideren
ms crticas o que no sean fcilmente enrutables por el sistema automtico.
Finalmente se realiza una comprobacin de las reglas de diseo o DCR (Design
Rule Check), esto comprueba que no existan solapamientos y que se cumplan las
especificaciones definidas para el circuito, como un mnimo grosor de pistas y vas, las
distancias entre pistas y componentes, etc.

3.3.2 Fabricacin
Se han realizado dos implementaciones del circuito, la primera fue realizada
ntegramente de forma manual a partir de placas fotosensibles, y la segunda se encarg a
una empresa que hizo la placa de circuito impreso, soldndose posteriormente a mano los
componentes. Los motivo de realizar dos prototipos fueron algunos cambios en el diseo
inicial, principalmente en el circuito de alimentacin ya que no cumpla con las
expectativas, y el deterioro por oxidacin del prototipo inicial, que lo hizo muy inestable.
Para la fabricacin 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 disolucin de sosa custica y un 'atacador' a partir de perxido de
hidrgeno y cido clorhdrico. El proceso es el siguiente:

61

1. Se imprime el circuito en las transparencias, teniendo en cuenta su orientacin.


2. Se sujetan las transparencias (fotolitos) mediante cristales a la placa
3.

4.

5.

6.
7.

fotosensibilizada en condiciones de baja iluminacin, teniendo especial


cuidado en la concordancia de las dos caras del circuito.
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 lumnica21. Para el clculo 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.
Despus de la insolacin 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 disolucin de sosa custica aproximadamente a un
1% y a unos 25C. A mayor concentracin y temperatura ms rpido ser el
revelado.
El siguiente paso es el atacado de la placa: existen dos tipos de atacado, rpido
y lento. El lento consiste en una disolucin de cloruro frrico, y el rpido, que
es el que se ha utilizado, es una mezcla a partes iguales de agua, perxido de
hidrgeno al 33% (agua oxigenada de 110 volmenes) y cido clorhdrico
(salfumn). La velocidad del atacado variar segn la concentracin de la
mezcla y su temperatura22. El proceso de atacado elimina la capa de cobre no
protegida por la pintura fotosensible.
Una vez atacada la placa se elimina la pintura fotosensible con acetona.
El ltimo paso es el mecanizado de la placa. Para ello se utiliza un minitaladro
y brocas de distinto tamao con las que se realizaran cada una de las vas.

Para la soldadura de los componentes, tanto en la placa fabricada como en la


encargada, se ha utilizado un soldador de 11W y punta muy fina, soldadura de
estao/plomo y flux para facilitar la soldadura. En el primer prototipo, fabricado mediante
el proceso anteriormente descrito, es necesario tambin la conexin elctrica de ambas
caras a travs de las vas, para lo que se usa el hilo de cobre de un cable fino que se pasar
por la va y se soldar en cada una de las caras.

3.3.3 Testeo
Para la comprobacin de las conexiones elctricas del circuito se utiliza un
polmetro, con el que se comprueba la continuidad de todas las pistas, vas y soldaduras.
Para la comprobacin lgica y depuracin se utiliza tanto el polmetro como un
osciloscopio. En concreto se utiliza un osciloscopio digital con una frecuencia de
muestreo de 50 MHz, suficiente para este diseo.

21 Son ms econmicas que los tubos y bombillas para insoladora, emiten menor cantidad de luz
ultravioleta que stas pero la suficiente como para realizar la insolacin en pocos minutos.
22 Es de extrema importancia tomar precauciones cuando se trabaja con estos productos qumicos, en
especial con el perxido de hidrgeno. Se deben utilizar guantes y gafas protectores, y el atacado se
realizar en un lugar muy ventilado debido a los gases txicos que se desprenden.

62

3.4 Diseo de la PCB


Para realizar el diseo esquemtico del circuito ste se ha dividido en diferentes
mdulos interconectados, para simplificar su diseo y la compresin del esquema
completo. En la Imagen 3.9 se puede observar el diseo modular y la interconexin de
cada mdulo, estos mdulos sern explicados en cada una de las secciones de este
apartado.

Imagen 3.9 Diseo modular del circuito

3.4.1 Alimentacin
La alimentacin es un elemento fundamental del circuito, se debe asegurar que el
circuito de alimentacin sea capaz de suministrar suficiente corriente al resto del circuito
con una tensin lo ms estable posible. Debido a la naturaleza del circuito hay que
intentar que la alimentacin genere el menor ruido, ya que de lo contrario este ruido,
aunque no afectase al funcionamiento de los elementos digitales, puede ser audible en la
salida analgica de los auriculares.
As pues lo primero a determinar ser la tensin con la que se debe alimentar el
circuito y la corriente mxima que consumir. En la Tabla 3.7 podemos observar cada
unos de los componentes digitales con sus respectivos rangos de tensiones de
alimentacin, 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 lmite inferior lo marca la
parte analgica del circuito VS1001K y la superior la pantalla LCD, quedando el rango
entre 2,8-3,3V. Debido a que 3,3V es una tensin estndar para la que existen diferentes
reguladores de tensin, diodos Zener, etc. es la elegida para alimentar el circuito.
63

Componente

Tensin de alimentacin

PIC 18LF452

2-5,5V23

VS1001K (analgico)

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 cuanto a la corriente necesaria para alimentar el circuito, en la Tabla 3.8


podemos observar los consumos mximos de los distintos componentes del circuito. El
resultado de la suma de los consumos mximos de todos los componentes es de 95mA,
aunque el consumo real del circuito ser mucho menor ya que los consumos tpicos de los
componentes, sobre todo de la parte analgica de integrado VS100K, son menores que el
mximo. En el caso de la parte analgica del VS100K su consumo tpico es de 5,5mA, y
los picos de corriente son paliados por la inductancia que se coloca en la entrada de
alimentacin de este circuito, esto se explicar en la seccin dedicada al diseo del
circuito del VS1001K. Por tanto se decide que la fuente de alimentacin ha de poder
suministrar una corriente de 100mA, lo que asegura una correcta alimentacin de todo el
circuito aun coincidiendo picos de consumo simultneo de todos los componentes.
Componente

Consumo mximo

PIC 18LF452

4,70mA24

VS1001K (analgico)

40mA25

VS1001K (digital)

15mA

MMC

35mA26

LCD
300uA
Tabla 3.8 Consumo mximo de los componentes

En todos estos clculos no hemos tenido en cuenta el mdulo USB ya que este se
alimenta de forma autnoma a partir del puerto USB. Tampoco se ha contado la corriente
que consume el circuito de la botonera y los elementos pasivos que acompaan 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 alimentacin ha de suministrar a partir
de pilas o del puerto USB (si este est conectado) una tensin de salida de 3,3V y al
menos 100mA de corriente, adems de cargar las pilas cuando el puerto USB est
conectado.
En cuanto a las pilas y su carga, debido a que la tensin de las lneas de
alimentacin del puerto USB es de 5V se pueden cargar unas pilas que tengan como
mximo esta tensin, por tanto se decide alimentar el circuito con dos pilas tipo AA
recargables, por ser lo ms comn en este tipo de reproductores y no superar esta tensin.
23 La tensin mnima depende de la frecuencia del reloj
24 Consumo mximo aproximado a 3,5V y 20MHz, el consumo tpico a 3,3V ronda los 4,2mA (a una
temperatura de 25)
25 De pico a plena carga, el consumo tpico es 5,5mA
26 Esto depende del fabricante, la frecuencia y la tensin de alimentacin. Aun que el estndar permite hasta
100mA de consumo en lectura se usarn tarjetas con un mximo de 35mA (la mayora)

64

Alimentacin por USB


Cuando el puerto USB est conectado el reproductor deber alimentarse de este,
adems de cargar las pilas si stas estn conectadas. Esto supone un consumo de corriente
del bus USB que deber ser debidamente notificado durante el proceso de enumeracin.
Antes de dicho proceso el dispositivo no podr consumir ms de 100mA por tanto se ha
decidido que el circuito no se alimente del USB hasta que el proceso de enumeracin haya
finalizado. Para ello se utiliza la lnea PWREN# del mdulo USB que se pone a nivel bajo
despus de que finalice el proceso de enumeracin, indicando que ya se puede empezar a
consumir corriente del puerto USB de forma normal. En la Imagen 3.10 se puede ver el
circuito que controla la alimentacin del USB, el transistor MOSFET de canal P
(ZXM61P03) controla la alimentacin del circuito, cuando la lnea PWREN# pasa a nivel
bajo el transistor permite el paso de corriente entre la fuente y el drenador. En la puerta
del transistor se puede observar una resistencia y un condensador que realizan una funcin
de soft start que limita el pico de corriente cuando el transistor se activa. Es importante
tener en cuenta que el transistor ZXM61P03 tiene una impedancia de 0,35 ohmios entre la
fuente y el drenador, por lo que hay una cada de tensin dependiente del consumo. Se ha
elegido especialmente este transistor por su baja resistencia entre la fuente y el drenador,
en el primer prototipo se utiliz el transistor BS250 pero su resistencia de 3,527 era
excesiva.

Imagen 3.10 Control de alimentacin USB

Circuito de carga
Para simplificar la alimentacin, el circuito de carga ser lo ms sencillo posible,
esto es, una corriente pasando por las pilas forma continua y sin control de carga. En
circuitos ms complejos la carga se realiza mediante ciclos de carga dependiendo de la
carga de la pila, aunque esto tambin depende del tipo de pila. En la Imagen 3.11 se puede
ver el circuito de carga, ste consta nicamente de las pilas, una resistencia y un diodo. La
tensin de carga ha de ser superior a la tensin nominal de las pilas, esto genera una
corriente que pasa a travs de las pilas y las va cargando [Linden02] [Buchmann]
[Harrison04].

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

65

Imagen 3.11 Circuito de carga

Al no haber control de carga se ha de controlar de forma manual el tiempo de


carga de las pilas, no dejndolas cargando un tiempo excesivo. Se aconseja el uso de un
cargador externo para la carga de pilas y usar el cargador del reproductor de forma
ocasional cuando no se disponga de uno externo. Para evitar los problemas de sobrecarga
de las pilas estas se cargan con una corriente baja, esto incrementa el tiempo de carga pero
la hace ms segura. Se opta por una carga de las pilas mediante una corriente C/628, donde
C es la capacidad de las pilas, tomndose pilas de 1800mAh como referencia. Por tanto la
corriente de carga de las pilas ser de 300mAh y el tiempo de carga de unas 8 horas. La
frmula 3.1 calcula el valor de la resistencia: Vp es la tensin a la que se alimenta el
circuito de carga, Vb es la tensin nominal de las pilas y Ic es la corriente de carga.

R = (Vp Vb) / Ic
Frmula 3.1

La tensin nominal de las pilas es de 2,4V (1,2V cada una de las pilas en serie), y
la tensin de alimentacin es de 5V29. Teniendo en cuenta la cada de tensin del diodo
Schottky (0,3V) Vb sera 2,7V, por lo que: (5 2,7) / 0,300 = 7,66. Teniendo en cuenta
la resistencia del transistor MOSFET (0,35) el valor de la resistencia ha de ser 7,3.
En el circuito se puede observar un diodo Zener de 3,6V, este diodo no forma
parte del circuito de carga de las pilas sino que sirve para cuando las pilas no estn
conectadas en el reproductor. En ese caso es necesario lograr una tensin de 3,3V en
Vout, el diodo Zener fija una tensin de 3,6V y el diodo Schottky la baja a 3,3V. Para el
correcto funcionamiento del diodo Zener es necesario una corriente mnima sin
dependencia del consumo del reproductor. En la Imagen 3.12 podemos ver una
simplificacin del circuito, donde RL es la carga del reproductor y debemos seleccionar el
valor de R de forma que el diodo Zener est en funcionamiento cuando la carga sea
mxima y cuando el circuito est sin carga (conectado al USB pero sin pilas y con el
reproductor apagado).

28 Usando una corriente C/10 se elimina el problema de sobrecarga, pudiendo dejar cargando las pilas de
forma indefinida, pero el tiempo de carga seria excesivo (16 horas) y no cumplira con los requisitos del
Zener
29 Esta es la tensin tpica que suministra el bus USB, pero el estndar da un margen de 4,5V a 5,5V, para
simplificar los clculos tomaremos 5V.

66

Imagen 3.12 Funcionamiento del diodo Zener como regulador.

El diodo Zener elegido es el BZX85C3V6, es un diodo Zener de 3,6V, IZ mnima


de 60mA y disipa hasta 1W. Por tanto es capaz de soportar un mximo de corriente de 1 /
3,6 = 277mA. Se deben analizar dos puntos importantes, el diodo Zener no debe quedarse
sin corriente y debe soportar la corriente y no quemarse cuando no exista carga.
Suposicin de carga mxima
Si la carga del reproductor es mxima ste consume 100mA, ms los 60mA de la
corriente del Zener son 160mA. La Frmula 3.2 muestra el clculo para el valor mximo
de la resistencia, que en este caso es R=53,6/ 0,060,1=8,75 .
R=

V V Z
I ZminI Lmax

Frmula 3.2

Suposicin de circuito sin carga


En este caso el peligro es que el Zener se queme, a partir de la Frmula 3.2
podemos calcular el valor de la resistencia mnima que se debe colocar, esta es:
R=53,6/0,2770=5 .
R=

V V Z
I Zmax I Lmin

Formula 3.3

Por tanto la resistencia ha de encontrarse entre 5 y 8,75 ohmios, como se puede


observar los 7,66 de resistencia del circuito de carga se encuentra entre estos mrgenes.
El valor de resistencia estndar ms cercano es de 7,3, esto sumado a la resistencia lineal
del transistor MOSFET tenemos una resistencia total de 7,65.

67

El regulador de tensin
Cuando el USB est conectado la tensin 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 energa al circuito ser necesario el uso de un conversor DC/DC que pase la tensin de
las pilas de 2,4V a los 3,3V necesarios.
En el prototipo inicial se utiliz el regulador de tensin conmutado TC115 de
microchip, este regulador es capaz de suministrar una corriente de 140mA con una tensin
de entrada de 2V, tiene una eficiencia de un 80% a 100mA y est recomendado para
sistemas alimentados con entre 1 y 3 pilas, por lo que a priori cumple los requisitos y es
una buena eleccin. En cuanto al encapsulado, que puede verse en la Imagen 3.13, se trata
de un SOT-89 de soldadura superficial con 5 pines. En cuanto a los elementos externos, el
regulador necesita dos condensadores, un diodo y una inductancia, como muestra el
esquemtico de la Imagen 3.14 extrada de las especificaciones del regulador. Despus de
realizar diversas pruebas con diferentes cargas se pudo comprobar que con una carga de
100mA el regulador se volva muy inestable dejando en ocasiones de funcionar. Este
problema se deba a la inductancia, ya que fue imposible adquirir una inductancia del
valor necesario y una resistencia en lnea muy baja, y la que se utiliz daba problemas con
corrientes altas debido a una cada de tensin excesiva. A pesar de ello el primer prototipo
pareca funcionar de forma correcta, no obstante al no poder asegurar un correcto
funcionamiento en el caso de un consumo de 100mA se opt por cambiar este regulador
por otro que suministrase ms corriente y con elementos ms fciles de obtener.

Imagen 3.13 Regulador de tensin TC115

Imagen 3.14 Esquemtico del regulador TC115

68

En el diseo final se ha utilizado el regulador de tensin MAX1675 de Maxim.


Este regulador de tensin 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 16A, 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, tambin de soldadura superficial y algo ms pequeo que el
TC115 lo que dificulta mucho la soldadura manual.

Imagen 3.15 Regulador MAX1675

Los elementos externos necesarios en este regulador son tres condensadores y una
inductancia. Como puede observarse en el esquemtico de la Imagen 3.16, extrado de las
especificaciones, se coloca un condensador a la entrada y la salida del regulador, y otro
que hace la funcin de bypass conectando la entrada de referencia del regulador con tierra.
En este caso la inductancia necesaria es de 22H, afortunadamente en este caso se pudo
encontrar una pequea inductancia de soldadura superficial fabricada por Panasonic con
una resistencia lineal de tan solo 0,015.

Imagen 3.16 Esquemtico del regulador MAX1675

69

El diseo final lo podemos ven en la Imagen 3.17, adems de los circuitos


anteriormente descritos se ha aadido un conmutador que permite encender y apagar el
reproductor, y una lnea conectada a la entrada RA0 del microcontrolador para poder
controlar la carga de las pilas.

Imagen 3.17 Esquemtico del mdulo de alimentacin.

3.4.2 Microcontrolador
Como se indic en la seccin de seleccin de componente se va a utilizar el
microcontrolador PIC 18LF452 fabricado por Microchip. Se trata de un microcontrolador
de baja tensin de 8 bits con 34 pines de entrada y salida, un set de 75 instrucciones y
varios mdulos: receptor/transmisor universal asncrono/sncrono direccionable
(AUSART), interfaz serie de perifricos (SPI), circuitos inter-integrados de dos hilos IC,
conversor analgico/digital de 10 bits, 4 temporizadores, etc30. El encapsulado elegido es
un DIP de 40 pines por su facilidad de montaje y posibilidad de sustitucin. Como ya se
ha explicado trabajar a 20MHz y se alimentar con una tensin de 3,3V. En la Imagen
3.18 puede verse el pinout del microcontrolador extrado de las especificaciones.

30 Para ms informacin sobre las caractersticas y arquitectura del microcontrolador consultar las hojas de
especificaciones [PIC18FXX2].

70

Imagen 3.18 Microcontrolador 18LF452

El microcontrolador tiene toda la lgica de funcionamiento del dispositivo y se


encarga de interconectar y gestionar todos los elementos del reproductor. Los perifricos
que se conectan al microcontrolador y sus funciones principales son:
Tarjeta MMC: Acceder a la estructura de ficheros de la tarjeta de memoria.
Decodificador MP3: Configurar el chip decodificador y enviarle el flujo de
datos codificado para que sean reproducidos.
Pantalla LCD: Mostrar la informacin necesaria para el control del reproductor.
Botonera: Obedecer a las pulsaciones de los botones realizadas por el usuario.
Mdulo USB: Comunicarse con el ordenador mediante dicho mdulo.

Adems de los elementos mencionados se ha optado por colocar en el circuito dos


conectores, uno conectado a las lneas ICSP del microcontrolador para poder reprogramar
ste sin necesidad de extraerlo, el otro permite la comunicacin mediante RS232 que se
utiliza para la depuracin del cdigo. Inicialmente se utiliz tambin la comunicacin
RS232 para actualizar el firmware del microcontrolador a travs de un bootloader, pero se
opt por sacar las lneas ICSP para realizar actualizaciones ms rpidas y debido a que la
actualizacin mediante software fallaba en algunas ocasiones.
El microcontrolador utiliza para la seal de reloj un cristal de 20MHz, por lo que
se ha configurado en modo HS (High Speed Crystal). El montaje para este tipo de
configuracin se puede ver en la Imagen 3.19; se han utilizado condensadores de 33pF y
no ha sido necesario el uso de la resistencia Rs.

71

Imagen 3.19 Configuracin del cristal del microcontrolador

El resto de pines se conectan segn indica la Tabla 3.9, en cuando a los pines de
alimentacin se han colocado pequeos condensadores prximos al microcontrolador para
estabilizar la tensin y minimizar posibles ruidos. En las secciones correspondientes a
cada componente se detalla la conexin de cada uno de ellos con el microcontrolador.
Como puede observarse hay lneas que estn conectadas a varios elementos, como las
correspondientes al interfaz SPI que se utiliza para la comunicacin con el decodificador
MP3, la pantalla LCD y la tarjeta de memoria, habiendo para cada uno una lnea de chip
select para seleccionar el correspondiente cada vez.

Pines

Elemento

RD0-RD7

Bus de datos del mdulo USB

RB0, RB2, RB4, RB5, RB6

Lneas de control del mdulo USB

RC3, RC4, RC5, RA2, RB7

Configuracin 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
Tensin de pilas
Tabla 3.9 Conexiones del microcontrolador.

3.4.3 Mdulo USB


Para la comunicacin USB se va a utilizar el integrado FT245BM, que
proporciona un interfaz transparente desde el punto de vista del microcontrolador para
comunicarse con el ordenador. Debido a la gran cantidad de elementos externos que
necesita y el tipo de encapsulado (muy complicado para una soldadura manual) se ha
optado por el uso del mdulo DLP-USB245M que incluye los componentes pasivos
necesarios, adems de facilitar la integracin en el circuito al no ser necesario soldarlo a
ste y pudiendo ser fcilmente sustituido.

72

La Imagen 3.20 es el diagrama de bloques simplificado del funcionamiento del


chip, como se puede observar tiene un buffer de recepcin de 128 Bytes y un buffer de
transmisin 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 tambin puede observarse un interfaz
para una memoria EEPROM (externa y opcional) donde se almacena la configuracin del
dispositivo, y un regulador de tensin de 3,3V que no se utiliza debido a que slo
suministra 5mA.

Imagen 3.20 Diagrama de bloques del funcionamiento del FT245BM

El esquemtico del mdulo utilizado puede verse en la Imagen 3.21, como se


observa el mdulo slo incluye los elementos pasivos necesarios para el funcionamiento
del FT245BM y una memoria EEPROM 93C46 que se utiliza para guardar las
configuraciones bsicas que caracterizan al dispositivo USB, como su nombre, nmero de
serie, USB VID, PID, consumo, etc. En la Tabla 3.10 se listan los pines del mdulo (que a
excepcin del pin 1 corresponden a los pines del chip) y su descripcin, as como si son
pines de entrada o salida.

73

Imagen 3.21 Esquemtico del mdulo DLP-USB245M

74

Pin

Nombre

Tipo

Descripcin

Board ID

Salida

Se utiliza para saber si el mdulo es el DLP-USB245M o


el DLP-USB232M. En el DLP-USB245M el pin est a
nivel bajo.

GND

RESET#

Entrada

Sirve para resetear el chip FT245BM. Activo a nivel


bajo.

RESETO

Salida

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

GND

3V3

Salida

GND

SLEEP

Salida

Corresponde al pin PWREN# del chip, se pone a nivel


bajo despus del proceso de enumeracin del dispositivo.
Sirve para controlar el consumo del dispositivo.

SND/WUP

Entrada

Inicializa el proceso de despertado del dispositivo si se


encuentra en estado suspendido. Si el dispositivo no est
suspendido sirve para forzar el envo de los datos del
buffer de transmisin. No utilizado.

10

VccIO

Entrada

Tensin de referencia para las entradas. En este caso


3,3v.

11

EXTVCC

Entrada

Alimentacin del chip, en este caso se conecta a la


alimentacin del USB (PORTVCC)

Tierra

Tierra
Salida del regulador de tensin lineal de 3,3V. Se puede
utilizar hasta un mximo 5mA de corriente. No utilizado.
Tierra

12

PORTVCC

Salida

Alimentacin del puerto USB, se puede consumir hasta


un mximo de 500mA.

13

RXF#

Salida

Cuando est a nivel bajo al menos un byte est esperando


en el buffer de bytes recibidos para ser ledo. Est a nivel
alto si el buffer est vaco.

14

TXE#

Salida

Cuando est a nivel alto indica que el buffer de


transmisin 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 lnea de datos y mete el byte en el buffer de
transmisin. Los datos del buffer de transmisin son
transmitidos al ordenador en el timeout del buffer de
transmisin (configurable de 1 a 255ms)

16

RD#

Entrada

Al ponerlo a nivel bajo el primer byte en el buffer de


recepcin se pone en las lneas de datos. Cuando se pasa
de nuevo a nivel alto las lneas de datos se ponen en
estado de alta impedancia.

17-24

D7-D0

Entrada/ Bits de datos.


Salida
Tabla 3.10 Explicacin del pinout del mdulo USB

Configuracin de alimentacin
El chip FT245BM permite diferentes configuraciones de alimentacin segn las
necesidades del sistema:
Alimentado por el bus USB: tanto el chip como el resto del circuito son
alimentados por el bus.
Alimentacin propia: la alimentacin proviene de una fuente externa, no se
extrae corriente del bus.
Alimentado por el bus utilizando lgica de 3,3V: el bus alimenta directamente el
chip FT245BM y sirve como entrada de alimentacin de un regulador de
tensin de 3,3V que se utiliza para alimentar el resto de circuito y a la que se
conecta la lnea VCCIO, que sirve como referencia para la tensin de las lneas
de entrada/salida.
Alimentacin propia con lgica 3,3V: existe alimentacin propia tanto para el
FT245BM como para el resto del circuito. El FT245BM se alimenta con 5V y el
resto del circuito, incluyendo la lnea VCCIO con 3,3V.

En este caso la configuracin utilizada es la tercera, se utiliza la alimentacin del


bus para el FT245BM, para cargar las pilas (en caso de estar conectadas) y es la entrada
del regulador de 3,3V que alimenta el resto del circuito. La configuracin puede verse en
la Imagen 3.22, la alimentacin proveniente del puerto USB (PORTVCC) se conecta a la
lnea que alimenta el FT245BM (EXTVCC) y a la lnea de reset, que no se utiliza por el
microcontrolador. A su vez la lnea de alimentacin del USB est conectada al regulador
de tensin que alimenta todo el circuito con 3,3V. VCCIO est conectada a los 3,3V de la
alimentacin del circuito, ya que es la tensin que se va a utilizar en los pines de
entrada/salida.

75

Imagen 3.22 Configuracin de la alimentacin del USB

En los circuitos alimentados por USB debe haber un control del consumo. El
estndar USB permite un mximo de 100mA de consumo antes de la enumeracin, y en
modo suspendido tan solo se puede consumir un mximo de 500uA, por tanto se debe
controlar el proceso de enumeracin y la entrada en estado suspendido. Como se adelant
en la seccin de alimentacin, la lnea SLEEP del mdulo (PWREN# en el chip) se utiliza
para el control de la alimentacin del circuito. Esta lnea pasa a nivel bajo despus de la
enumeracin del dispositivo y cuando este sale del estado suspendido, y est a nivel alto
antes de la enumeracin y cuando pasa a estado suspendido. En la Imagen 3.23 puede
verse la forma de controlar la alimentacin segn 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 seccin de alimentacin.

Imagen 3.23 Control de alimentacin segn especificaciones.

Protocolo de comunicacin
El mdulo USB se comunica con el microcontrolador mediante un bus de datos
de 8 bits y cuatro lneas de control. En la Imagen 3.24 puede verse la conexin entre el
mdulo y el microcontrolador.

76

Imagen 3.24 Conexin del mdulo USB con el microcontrolador

Para realizar una lectura se ha de esperar a que la lnea RXF# se ponga a nivel
bajo, lo que significa que hay datos en el buffer de recepcin para ser ledos. Una vez
confirmada la existencia de datos para ser ledos se debe poner la lnea RD# a nivel bajo,
esto hace que el primer byte del buffer se ponga en el bus de datos para ser ledo. Despus
de leer los datos el microcontrolador vuelve a poner a nivel alto la lnea RD# lo que hace
que el bus de datos se ponga en alta impedancia a la espera del siguiente ciclo de lectura.
En la Imagen 3.25 se puede ver el cronograma del ciclo de lectura.

Imagen 3.25 Cronograma del ciclo de lectura USB

77

Para el control del ciclo de escritura se utilizan las lneas 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 indicara que el buffer de
transmisin est lleno y habra que esperar. Una vez verificado que existe espacio en el
buffer se pone WR a nivel alto y el byte a transmitir en el bus de datos, una vez estables
los datos (20ns) WR se pone a nivel bajo, lo que provoca la lectura de los datos del bus.

Imagen 3.26 Cronograma del ciclo de escritura USB

3.4.4 Decodificador VS1001k


El chip decodificador de MP3 est compuesto internamente por dos partes, un
procesador DSP y un decodificador digital-analgico (DAC) estreo. El VS1001k recibe
el flujo de datos MP3 por un bus serie esclavo que es decodificado por el procesador DSP,
estos datos pasan luego por el decodificador digital-analgico de 18 bits y un pequeo
amplificador que proporciona una salida analgica a la que se puede conectar
directamente unos pequeos auriculares sin amplificacin adicional. Estas dos partes, el
DSP y el DAC, tienen la alimentacin independiente, denominadas Vcc digital y Vcc
analgica respectivamente, para evitar interferencias en el DAC. En la Imagen 3.27 puede
verse el funcionamiento interno del chip.

78

Imagen 3.27 Funcionamiento del decodificador VS1001k

En cuanto a sus caractersticas, el VS1001k decodifica MPEG layer 3 de MPEG1, MPEG-2 y MPEG-2.5, a todas las tasas de muestreo y de bit tanto en mono como en
estreo. Soporta tasa de bit variable (VBR), utiliza un DAC estreo de alta calidad y es
capaz de soportar auriculares de 30 de carga sin amplificacin adicional. Como ya se ha
dicho trabaja con una tensin de 2,8V a 3,6V y usa un cristal de 12-13MHz (con
multiplicador) o 24-26MHz (sin multiplicador)31.
Circuito y conexin al microcontrolador
En la Imagen 3.31 puede verse el circuito recomendado por las hojas de
especificaciones del VS1001k. El circuito est compuesto nicamente por unos pocos
componentes pasivos extra. El chip tiene dos entradas de alimentacin como ya se ha
indicado, estn separadas por inductancias y tienen un par de condensadores cada una, lo
que hace que las lneas estn ms aisladas, con tensiones ms estables y tengan menos
ruido. En cuanto a la seal de reloj se utiliza un cristal de 24,576MHz, aunque como se ha
comentado puede usarse de 12-13MHz o 24-26MHz dependiendo de si se utiliza el
multiplicador de reloj o no. El decodificador de conecta al microcontrolador a travs de
dos interfaces, el SCI compuesto de cuatro lneas y el SDI compuesto de tres. Adems
existen una lnea de reset y DREQ, que indica al microcontrolador que tiene espacio en el
buffer para ms datos MP3.
El circuito implementado ha sido el que se muestra en el esquemtico de la
Imagen 3.32, muy similar al descrito en las hojas de especificaciones. En este caso se ha
utilizado un cristal de 13MHz con el multiplicador (26MHz) para poder reproducir
ficheros MP3 a todas las tasas de bit, tambin puede observarse dos jumpers y resistencias
a la salida de los auriculares. Cuando los jumpers estn cerrados la salida de audio se
utiliza como salida para auriculares y cuando estn abiertos como salida en lnea, tal y
como indican las hojas de aplicacin del VS1001k [VS10XXANOUT].

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

79

Imagen 3.31 Circuito recomendado del VS1001k

Imagen 3.32 Circuito implementado del VS1001k

80

Protocolo de comunicacin
Existen dos interfaces para comunicarse con el VS1001k, ambos basados en el
interfaz de comunicacin serie SPI. El primero se denomina interfaz de datos serie (SDI)
y se utiliza para enviar el flujo de datos MP3 al decodificador. El segundo es el interfaz de
comandos serie (SCI) y se utiliza para enviar instrucciones y controlar el chip.
El interfaz SDI puede utilizarse en modo maestro o esclavo, en este caso se ha
usado como esclavo. El flujo de datos slo circula del microcontrolador al decodificador
ya que esta lnea es nicamente para el envo del flujo de datos MP3. Como se puede ver
en el cronograma de la Imagen 3.28 el interfaz est compuesto por tres lneas, BSYNC
indica el comienzo del primer bit, en SDATA se introducen los bits de datos y DCLK es la
seal de reloj. Los datos son ledos en el flanco de subida o bajada de la seal de reloj
dependiendo de como se haya configurado el decodificador. En cuanto al orden de los
bits, se puede seleccionar si se quiere primero el ms o el menos significativo. El uso de
BSYNC no es obligatorio aunque si muy recomendable, si no se usa debe ponerse a nivel
alto. La lnea DREQ indica que hay espacio en el buffer para recibir datos, cuando la lnea
est en estado alto hay al menos 32 bytes libres en el buffer.

Imagen 3.28 Cronograma del interfaz SDI

La comunicacin por el interfaz SCI consiste en un byte de instruccin, un byte


de direccin y una palabra de 16 bits. Cada ciclo de lectura o escritura puede leer o
escribir un nico registro. El tipo de operacin es especificada por el cdigo de operacin:
0x3 para las lecturas y 0x2 para las escrituras.
En la Imagen 3.29 puede verse el ciclo de lectura mediante el interfaz SCI.
Primero la lnea XCS (chip select) se pone a nivel bajo, lo que le indica al dispositivo que
l es el seleccionado para la prxima transmisin32. Entonces, el cdigo de operacin de
lectura (0x3) es transmitido por la lnea SI seguido de un byte con la direccin. Despus
de transmitir la direccin el dispositivo pone en la lnea SO los 16 bits de datos
correspondientes al registro de la direccin transmitida. La lnea XCS se debe poner a
nivel alto una vez acabada la transmisin de los datos indicando la finalizacin del ciclo
de lectura.

32 El interfaz SPI soporta mltiples dispositivos en el mismo bus, mediante la lnea chip select se selecciona
cual es el dispositivo activo cada vez.

81

Imagen 3.29 Ciclo de lectura SCI

Como en el ciclo de lectura, el ciclo de escritura se inicia poniendo a nivel bajo la


lnea XCS. Despus se enva la instruccin de escritura, la direccin y los datos a escribir
por la lnea SI. En este caso SO no es utilizado. En la Imagen 3.30 puede verse el
cronograma del ciclo de escritura. Despus de esta secuencia, al igual que en el ciclo de
lectura, XCS se pone a nivel alto.

Imagen 3.30 Ciclo de escritura SCI

3.4.5 Tarjeta Multimedia Card


El pinout de la tarjeta de memoria Multimedia Card est compuesto por siete
lneas, tres lneas de alimentacin y cuatro para la transmisin de datos. En la Tabla 3.11
se puede ver el listado de pines y su descripcin para una comunicacin en modo SPI.

82

Pin #

Nombre

Tipo

Descripcin

CS

Entrada

Chip select

SDI

Entrada

Entrada de datos (Data in)

Vss

Alimentacin

Tierra

Vcc

Alimentacin

Alimentacin

SCLK

Entrada

Reloj

Vss2

Alimentacin

Tierra

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

La tarjeta utiliza para la comunicacin un interfaz SPI, por tanto sus lneas se
conectan a los pines correspondientes al puerto SPI del microcontrolador. Este puerto est
tambin conectado al integrado VS1001k y, como se ver, a la pantalla LCD, utilizndose
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 lneas SDI y SDO para proteger el bus cuando la tarjeta no est insertada
o cuando est en alta impedancia [SanDisk03].

Imagen 3.31 Conexin de la tarjeta MMC

Protocolo de comunicacin
Las tarjetas Multimedia Card tienen dos modos de comunicacin, el modo
Multimedia Card y el SPI. En este caso se usa el modos SPI por ser ms simple, tener
implementado un puerto SPI por hardware en el microcontrolador y, sobre todo, por ser
compatible con las tarjetas Secure Digital (SD), de forma que se puedan usar tarjetas
MMC o SD de forma indistinta. El interfaz SPI ya ha sido explicado en el apartado
anterior.
Durante la inicializacin de la tarjeta (momento en el que est en modo
Multimedia Card) se ha de seleccionar que tipo de protocolo de comunicacin que se va a
utilizar. Los detalles sobre los comandos de inicializacin, configuracin, lectura,
escritura, etc. se explican en la seccin de firmware del microcontrolador, en la librera del
la MMC.

3.4.6 Pantalla LCD


La pantalla elegida es una pantalla LCD grfica de 84x48 pixels, utilizada por los
telfonos mviles Nokia 3210 y 3310. Esta pantalla utiliza slo ocho lneas, con un
interfaz SPI simplificado, ya que slo tiene comandos de escritura y por tanto no tiene la
lnea SDO. En la Imagen 3.32 se puede ver el pinout de la pantalla, la comunicacin se
realiza mediante las lneas SDIN, SCLK y SCE, correspondientes al interfaz SPI, y las
lneas 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 slo 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 lnea SCE. Las lneas
SDIN y SCLK se conectan al puerto SPI del microcontrolador, utilizndose SCE (chip
enable) para indicar a la pantalla que es la destinataria de la siguiente comunicacin
enviada por el bus SPI

Imagen 3.33 Circuito usado con la pantalla LCD

Protocolo de comunicacin
El microcontrolador se comunica con la pantalla por un interfaz SPI simplificado
con comunicacin nicamente en una direccin ms la lnea D/C que selecciona el tipo de
instruccin. En la Imagen 3.34 se puede ver el cronograma de una comunicacin con la
pantalla. La pantalla puede recibir dos tipos de instrucciones que se seleccionan mediante
la lnea D/C, si D/C est a nivel bajo el byte enviado por el bus es interpretado como un
comando y si est a nivel alto los siguientes bytes recibidos se almacenan en la memoria
RAM de la pantalla cuyos bits corresponden a pxeles de la pantalla. Los datos se
transmiten enviando primero el bit ms significativo y son capturados en los flancos de
subida de la seal de reloj. Los detalles sobre los comandos, inicializacin y utilizacin se
explican en la seccin de firmware del microcontrolador, en la librera del LCD.

84

Imagen 3.34 Cronograma de comunicacin con la pantalla

3.4.7 Botonera
Para la interaccin del usuario con el reproductor se han dispuesto un conjunto de
seis botones mediante los cuales se realizarn las acciones de control de reproduccin,
configuracin, volumen, navegacin por el rbol de directorios, etc. Los botones son
pulsadores que estn conectados a las lneas RC0-RC2 y RE0-RE2 del microcontrolador
(Imagen 3.35) de forma que cuando el botn est pulsado la lnea est en estado alto y
cuando no en estado bajo.

Imagen 3.35 Circuito de la botonera

3.4.8 Otros elementos


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

85

Imagen 3.36 Esquemtico de los interfaces ICSP y UART

86

4. Diseo y desarrollo del firmware


4.1 Introduccin
Una vez diseado 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 mdulo de comunicacin
USB, la tarjeta de memoria, la pantalla LCD y la botonera. Adems incorpora diversas
libreras donde se implementa el protocolo de comunicacin con el ordenador, el sistema
de ficheros FAT, la lectura de la informacin ID3 y otras funciones.

4.2 Herramientas de desarrollo utilizadas


Debido a la complejidad y gran cantidad de cdigo a desarrollar el firmware del
microcontrolador se ha realizado en lenguaje C, utilizando de forma puntual alguna
instruccin en ensamblador donde ha sido necesario un incremento de la eficiencia del
cdigo en funciones donde la velocidad es un factor crtico.
El compilador utilizado para el desarrollo del cdigo es el PCWH de la empresa
CCS. Este compilador permite la operacin de tipo de datos de 1, 8, 16 y 32 bits, posee
gran cantidad de funciones y libreras que ayudan al diseo, permite la insercin de
cdigo ensamblador en cualquier punto, soporta funciones inline33 (lo que mejora la
eficiencia de dichas funciones), etc. stas, entre otras caractersticas, hacen que sea el
compilador finalmente elegido. No obstante esta no es una eleccin crtica, el uso de otro
compilador es posible aunque probablemente incrementase el tiempo de diseo. Tambin
es posible el paso del cdigo desarrollado en ste a otro compilador, realizando algunos
cambios para adaptar los elementos y funciones especificas de este compilador al otro.
Grabacin del firmware
En la grabacin34 del firmware se han utilizado varios medios. Para la grabacin
de forma directa del microcontrolador se ha fabricado un programador de PICs del tipo
JDM y para la grabacin en el propio circuito se han empleado dos tcnicas; actualizacin
de ste por software conectando el reproductor al puerto serie del ordenador y mediante
un interfaz ICSP35. La actualizacin por software se realiza conectando el puerto UART
del microcontrolador a un pequeo circuito basado en el integrado MAX323236 que a su
vez se conecta al puerto serie del ordenador, en la Imagen 4.1 puede verse el esquemtico
tpico montado en este circuito.
33 Funcin que al compilar el cdigo ste se repite en cada llamada, esto hace que el cdigo se ejecute ms
rpido a costa de algo ms de memoria de programa.
34 Se utiliza la palabra grabacin y no programacin del microcontrolador para evitar confusin con la
programacin en C del firmware.
35 Este fue incluido en el segundo prototipo del reproductor.
36 Un transductor que transforma la tensin de 3,3V usada por el microcontrolador a la tensin estndar del
RS232.

87

Imagen 4.1 Esquemtico usado con el MAX3232

Debido a la lentitud de las actualizaciones mediante software, los errores durante


este tipo de actualizaciones y el espacio extra que supone el cdigo de actualizacin en la
memoria del microcontrolador se opt por el uso del interfaz ICSP para la actualizacin in
situ del firmware. No obstante la forma finalmente ms utilizada para la actualizacin del
firmware ha sido mediante un programador de PICs, en el primer prototipo se emple el
programador fabricado a tal efecto, pero para el segundo prototipo se adquiri un
programador algo ms complejo (Imagen 4.2) que graba el firmware en menos tiempo e
incorpora la salida ICSP.

Imagen 4.2 Programador de PICs

En cuanto al software utilizado para la grabacin se han utilizado dos programas,


con el primer programador se ha utilizado el programa IC-Prog y con el segundo el
programa WinPic800. Ambos son programas gratuitos, el segundo tiene ms opciones y se
puede grabar ms rpido que con el IC-Prog pero no funciona con el programador JDM
fabricado ya que se ha utilizado un esquema demasiado simple para este programa.
88

4.3 Libreras desarrolladas


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

Imagen 4.3 Esquema de libreras.

4.3.2 Librera VS1001K


Esta librera contiene las funciones necesarias para el control del chip
decodificador de MP3 VS1001K. Como ya se ha indicado en la descripcin del hardware,
el VS1001K tiene dos interfaces de comunicacin, el SDI por el que se le enva el flujo de
datos MP3 y el SCI por el que se configura y se obtiene informacin sobre el MP3 en
reproduccin. El protocolo de comunicacin mediante estos interfaces se ha explicado en
el captulo anterior. La librera se compone de las funciones para la comunicacin por SDI
y SCI, y otras funciones de ms 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 explicacin y diagrama de flujo.

void sdi_out(byte data)

Funcin de bajo nivel que enva el byte data a travs del interfaz SDI.
No se comprueba el buffer.

void sdi_send()

Esta funcin utiliza sdi_out para enviar los 32 bytes de la variable


global vs_data.

void morezeroes(void)

Enva 2048 0 por el interfaz SDI. Funcin necesaria para la


reproduccin de MP3.
void sine_test(byte val, byte tms)

Genera un pitido durante tms + 150 milisegundos. Val es un valor entre


48 y 119 que se define por: FsIdx=(val-48) mod 9 ; FSin=(n-48)/9
FsIdx es un valor de entre 0 y 8 que especifica la frecuencia (de 48KHz
a 8KHz) y FSin, valor entre 0 y 7, especifica el nmero de muestras (de
32.000 a 4.000)37

37 Para ms informacin sobre las tablas de frecuencias y muestras consultar las hojas de especificaciones
del decodificador VS1001k

90

Tablas 4.1 Funciones SDI

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

Nombre

Tipo

Direccin

MODE

L/E

Registro de control

STATUS

L/E

Estado del VS1001k

INT_FCTLH

Registro interno

CLOCKF

L/E

Configuracin del reloj

DECODE_TIME

Lectura

Tiempo decodificado, en segundos

AUDATA

Lectura

Informacin del audio decodificado

WRAM

Escritura

Registro para subir programas a la


RAM

WRAMADDR

Escritura

Direccin base para escribir en la RAM

HDAT0

Lectura

Informacin de cabecera

HDAT1

Lectura

Informacin de cabecera

AIADDR

L/E

10

Direccin de inicio de la aplicacin

VOL

L/E

11

Control de volumen

Reservados

12

AICTRL[x]

Funcin

L/E
13+x
Para acceder a los programas cargados
Tabla 4.2 Registros internos del decodificador

Los registros WRAM, WRAMADDR y AICTRL[x] se utilizan para subir


programas a la RAM del decodificador, de forma que ejecute pequeas aplicaciones como
un ecualizador. Al no haberse desarrollado ningn programa de este tipo estos registros no
han sido utilizados.
A continuacin se realiza una explicacin ms detallada de los registros de los
que hace uso la librera desarrollada:

91

MODE
La descripcin de los bits de este registro se puede ver en la Tabla 4.3.
Bit

Nombre

Funcin

Valor

Descripcin

SM_DIFF

Diferencial (en estreo crea un


virtual surround)

0
1

Fase de audio normal


Canal izquierdo invertido

SM_FFWD

Avance rpido

0
1

Avance normal
Avance rpido

SM_RESET

Reseteo software

0
1

Normal
Reset

SM_UNUSED1

SM_PDOWN

SM_UNUSED2

SM_UNUSED3

SM_BASS

Realce bass/treble
(graves/agudos)

0
1

Apagado
Encendido

SM_DACT

Flanco de reloj para SDI

0
1

Subida
Bajada

SM_BITORD

Orden del bits en el bus SDI

0
1

Primero MSB
ltimo MSB

10

SM_IBMODE

Modo del bus

0
1

Esclavo
Maestro

11

SM_IBCLK

0
Apagado

0
1

Encendido
Apagado

Reloj del bus cuando est en


0
512 kHz
modo maestro.
1
1024 kHz
Tabla 4.3 Descripcin de los bits del registro MODE

STATUS
Controla el estado interno del VS1001k, los bits 0 y 1 sirven para el control de la
salida analgica de volumen y el bit 3 para apagar la parte analgica 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 frmula
para calcular esta frecuencia es: Frecuencia de cristal / 2000. Los valores vlidos para este
registro son 0..32767, el bit ms 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
Cuando se decodifican datos correctos la tasa de bits se muestra en este registro
en los bits 8..0. En los bits 12..9 se muestra la frecuencia de muestreo segn la Tabla 4.4,
y el bit 15 sirve para indicar si el sonido es mono ('0') o estreo ('1'). El resto de bits no se
utilizan y estn a '0'.
Bits 12..9

Frecuencia de muestreo

0b0000

Desconocido

0b0001

44100 Hz

0b0010

48000 Hz

0b0011

32000 Hz

0b0100

22050 Hz

0b0101

24000 Hz

0b0110

16000 Hz

0b0111

11025 Hz

0b1000

12000 Hz

0b1001
8000 Hz
Tabla 4.4 Frecuencias segn los bits del registro AUDATA

WRAM
Este registro se utiliza para subir programas a la memoria RAM del
decodificador. La direccin de inicio debe ser inicializada (WRAMADDR) antes de la
primera llamada a WRAM. Son necesarias dos escrituras en el registro WRAM (16 bits
cada uno) para escribir una palabra del programa (32 bits), siendo el byte ms
significativo el primero. Despus de cada escritura el puntero interno es
autoincrementado.
WRAMADDR
Este registro se utiliza para indicar la posicin de memoria en la que se escribirn
los datos del programa transferidos posteriormente con el registro WRAM. El espacio
disponible para programas de usuario se encuentra entre las direcciones 0x4000 y 0x43ff.
En este proyecto no se han utilizado programas de usuario ejecutndose en el
decodificador, por tanto los comandos WRAM y WRAMADDR no se han utilizado.

93

HDAT0 y HDAT1
En estos registros se almacena la informacin de cabecera extrada del flujo de
datos MPEG cuando se est decodificando. En la Tabla 4.5 se detalla el significado de
cada unos de los bits de los registros.
Bit

Funcin

Valor

HDAT1[15:5]

Palabra sincronismo

2047

HDAT1[4:3]

ID

ISO 11172-3 1.0

MPEG 2.0 (1/2-rate)

MPEG 2.5 (1/4-rate)

MPEG 2.5 (1/4-rate)

II

III

Reservada

Sin CRC

Con CRC

HDAT1[2:1]

Capa

HDAT1[0]

Bit Proteccin

HDAT0[15:12]
HDAT0[11:10]

HDAT0[9]

Tasa de bit
Tasa de Muestreo

Pad bit

HDAT0[8]

Bit privado

HDAT0[7:6]

Modo

HDAT0[5:4]

Extensin

HDAT0[3]

Copyright

HDAT0[2]
HDAT0[1:0]

Original
nfasis

Explicacin
Datos vlidos

ISO 11172-3
38

Reservada

32/16/8 kHz

48/24/12 kHz

44/22/11 kHz

Slot adicional

Marco normal

Mono

Dual Channel

Joint Stereo

Estreo
ISO 11172-3

Con copyright

Libre

Original

Copia

CCITT J.17

Reservado

50/15 microseg

0
Sin nfasis
Tabla 4.5 Bits de los registros HDAT0 y HDAT1
38 Si el campo ID es '1' se utiliza la tasa de muestreo ms alta, si es '0' la intermedia y si es '2' o '3' la ms
baja.

94

AIADDR
Este registro indica la direccin de inicio del cdigo del programa escrito antes
mediante los registros WRAMADDR y WRAM. Como no se utiliza un programa de
usuario este registro no es inicializado.
VOL
El registro VOL controla el volumen de reproduccin. Se establece un valor entre
0 y 255 para cada canal, esto define la atenuacin desde el nivel mximo de volumen en
pasos de 0,5 dB. El byte ms significativo controla el canal izquierdo y el menos
significativo el derecho.
Poner el volumen con silencio total (255 para ambos canales) desconecta la
alimentacin analgica, lo que genera un pequeo click en los auriculares. Para evitar esto
se ha utilizado el nivel 254 como mnimo volumen, ya que es prcticamente inaudible.
AICTRL[x]
El registro AICTRL se utiliza para acceder al programa de usuario del
decodificador. No se ha utilizado en este proyecto.
En la Tabla 4.6 se describen las funciones implementadas en la librera del
VS1001k y utilizan el protocolo SCI haciendo uso de los registros que se acaban de
describir.

byte SCI(byte out)

Enva el byte out por el bus SCI al decodificador, y devuelve el byte de


respuesta.
int16 vs1001_SCI_Read(byte Adr)

Lee y devuelve el byte de la posicin Adr.


void vs1001_SCI_Write(byte Adr, byte dataH, byte dataL)

Graba los bytes dataH y dataL en la direccin Adr.


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. mximo = 0; Vol. mnimo=255
void get_mp3_info()

Lee la informacin los datos MP3 que se estn siendo decodificados


actualizando las variables:
vs_bitrate: tasa de bit del flujo de datos MP3
vs_samplerate: frecuencia de muestreo.
vs_stereo: mono=0 estreo=1
vs_min: minuto del flujo de datos que se est decodificando.
vs_seg: segundo del flujo de datos que se est decodificando.
void vs1001_PutBass(int1 actv)

Si actv es 1 activa el Bass-Treble, si es 0 lo desactiva.


void vs1001_PutDiff(int1 actv)

Si actv es 1 activa el modo diferencial (si el sonido es estreo crea un


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

4.3.3 Librera Multimedia Card


En la librera Multimedia Card se han implementado las funciones para el control
a bajo nivel de la tarjeta de memoria. Estas funciones son principalmente de
inicializacin, configuracin y lectura. No se han implementado las funciones de escritura
ya que no se han utilizado en la realizacin del presente proyecto.
Como ya se indic en el apartado anterior las tarjetas de memoria multimedia
card pueden utilizar dos protocolos, el protocolo propio (modo Multimedia Card) y el SPI,
compatible con las tarjetas Secure Digital. En este caso se ha optado por la utilizacin del
protocolo SPI por su compatibilidad con las tarjetas Secure Digital y por ser de ms fcil
implementacin ya que el microcontrolador posee un modulo SPI hardware. El modo de
comunicacin se establece durante la inicializacin de la tarjeta. En la Imagen 4.4 puede
verse la funcin de cada pin de la tarjeta dependiendo del modo de comunicacin
seleccionado.

96

Imagen 4.4 Pinout de la tarjeta MMC

En un mismo bus de MultimediaCard pueden conectarse hasta un mximo de 30


tarjetas de memoria, el mtodo para seleccionar una tarjeta determinada depende del
modo de comunicacin seleccionado. En el modo MMC la tarjeta se selecciona mediante
una direccin relativa (RCA, relative card address) que corresponde a un nombre nico
asignado a la tarjeta durante el proceso de identificacin, y la tarjeta es seleccionada
especificando su direccin relativa. En modo SPI cada tarjeta de memoria tiene un pin de
seleccin de la tarjeta (CS, chip select), de esta forma una tarjeta se selecciona poniendo
esta lnea a nivel bajo. Para un dispositivo con gran nmero de tarjetas en un mismo bus
sera preferible el uso del modo MMC, ya que sera necesario un gran nmero de lneas
para controlar todas las tarjetas (una lnea CS por tarjeta de memoria). En este caso, al
controlarse nicamente una tarjeta, se considera ms adecuado el uso el modo SPI ya que
simplifica tanto la inicializacin como la seleccin de la tarjeta.
Protocolo del bus
En la Imagen 4.5 se puede ver el diagrama esquemtico del protocolo en cada
modo. En modo MMC el interfaz consta de tres seales: reloj, comando y datos. La seal
de reloj se utiliza para mantener la sincronizacin entre el sistema y la tarjeta, la seal de
comando se usa para mandar comandos del microcontrolador a la tarjeta y devuelve la
respuesta de la tarjeta, y la seal de datos se utiliza para leer y escribir datos de la tarjeta.
Las seales de comando y datos son bidireccionales.
97

En modo SPI el interfaz consta de cuatro seales: reloj, entrada de datos, salida de
datos y seleccin del chip. El reloj, como en el modo MMC, se utiliza para mantener la
sincronizacin 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 seales de entrada y salida de datos son
unidireccionales. La seal de seleccin del chip se utiliza para seleccionar una tarjeta en
particular cuando hay varias conectadas al bus.

Imagen 4.5 Diagramas de los protocolos MMC y SPI

Existen tres modos de transferencia: transferencia de solo un bloque,


transferencia de mltiples bloques y transferencia en flujo. El modo MMC soporta los tres
mtodos de transferencia; mediante un comando se especifican el nmero de bloques a
transferir, uno o ms dependiendo si se utiliza el mtodo de un solo bloque o mltiples.
Para las transferencias en flujo no existe el concepto de bloque; se transfieren bytes hasta
que la transferencia es detenida. A partir del estndar 3.1 de la MMCA (publicado en junio
de 2001) el modo SPI soporta tanto transferencias de un solo bloque como mltiples, el
tamao del bloque se cambia de la misma forma que en modo MMC.
Existen un total de 59 comandos, aunque no todos funcionan en ambos modos.
En la Tabla 4.7 se listan un conjunto de los comandos ms usuales en modo SPI.

98

Comando

Argumento

Resp.

Nombre

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 inicializacin


de la tarjeta.

CMD9

No

R1

SEND_CSD

Usado para leer la informacin


CSD

CMD10

No

R1

SEND_CID

Usado para leer la informacin


CID

CMD13

No

R2

SEND_STATUS

CMD16

[31:0] Tamao
del bloque

R1

SET_BLOCKLEN Cambia el tamao del bloque


utilizado por los comandos
CMD17 y CMD2439

CMD17

[31:0] Direccin

R1

READ_SINGLE_B Comando para leer datos de la


LOCK
tarjeta, empezando desde la
direccin especificada como
argumento, con un tamao de
bloque introducido por CMD16

CMD24

[31:0] Direccin

R1

CMD32

[31:0] Direccin

R1

TAG_SECTOR_ST Establece la direccin del primer


AR
sector del rango que se va a borrar

CMD33

[31:0] Direccin

R1

TAG_SECTOR_EN Establece la direccin del ltimo


D
sector del rango que se va a borrar

CMD38

[31:0] No importa

R1

EREASE

CMD58

No

R1

READ_OCR

CMD59

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

R1

CRC_ON_OFF

WRITE_BLOCK

Descripcin

Lee la informacin del registro de


estado.

Escribe datos en la tarjeta,


empezando desde la direccin
especificada y con un tamao de
bloque introducido por CMD16

Realiza el borrado en el rango


especificado
Lee el contenido del registro OCR

Activa o desactiva la opcin de


CRC.
Si CRC=1 se activa
Si CRC=0 se desactiva
Tabla 4.7 Comandos ms 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 despus de un comando CMD13, y el tipo R1 es una respuesta de 8 bits
que se devuelve despus de cualquier otro tipo de comando. En Imagen 4.6 aparece la
estructura de ambos tipos de respuesta.

39 Algunas tarjetas solo permiten tamaos de bloque de 512 bytes, por tanto solo se ha utilizado este
tamao de bloque.

99

Imagen 4.6 Estructura de las respuestas R1 y R2

Funciones de la librera
Comunicacin bsica
Toda la comunicacin se basa en la funcin:
byte SPI(byte out)

Es la funcin ms bsica, que enva un byte por el puerto SPI del


microcontrolador y devuelve la respuesta.
La segunda funcin bsica de la librera de control de la tarjeta es:
byte MMCCommand(byte
AdrH, byte CRC)

CMD,

unsigned

int16

AdrH,

unsigned

int16

Cada comando consiste en 48 bits (6 bytes) que comprenden un bit de inicio


(siempre 0), un bit de transferencia (siempre 1), 6 bits indicando el comando, 4 bytes con
los argumentos del comando, 7 bits de CRC y un bit de fin (siempre a 1). Esta funcin
enva un comando a la tarjeta, de forma que 'CMD' es el primer byte enviado (que incluye
el comando), 'AdrH' y 'AdrL' son los argumentos del comando, y 'CRC' es el ltimo byte
100

enviado (que incluye el CRC). La funcin devuelve una respuesta R1 de la tarjeta (para
una respuesta R2 sera necesario hacer una llamada adicional a la funcin SPI). Si fuese
necesario el envo o lectura de datos despus de un comando, ste se hara mediante
llamadas a la funcin SPI.
Inicializacin
Antes de poder utilizar la tarjeta hay que inicializarla ya que inicialmente la
tarjeta entra en modo MMC. En la Imagen 4.7 se puede ver un diagrama del proceso de
inicializacin utilizado en la funcin:
byte MMCInit()

Imagen 4.7 Diagrama de inicializacin

101

El proceso de inicializacin es el siguiente:

1. Inicialmente se pone a nivel alto la seal CS, de forma que se desactiva la


2.
3.
4.

5.
6.
7.
8.
9.

tarjeta.
Se envan 80 pulsos de reloj para la inicializacin
La seal CS se pone a nivel bajo.
Se enva el comando CMD0 (GO_IDLE_STATE). La tarjeta an est en
modo MMC y por tanto se ha de enviar el mensaje en este formato. En
concreto se enva: 0x40, 0x00, 0x00 y 0x95, donde 0x40 es el comando y
0x95 el CRC.
A partir de este momento la tarjeta pasa a modo SPI y la respuesta est en
formato R1. Esta respuesta debe ser 0x01, de lo contrario ha ocurrido un
error y se debe comenzar de nuevo el proceso de inicializacin.
Se desactiva y se vuelve a activar la seal CS.
Se enva el comando CMD1 (SEND_OP_CMD) hasta que la respuesta sea
0x00. Se ha fijado un mximo de 128 intentos antes de dar error y por tanto
reinicializar todo el proceso.
Se leen los registros CID, CSD y OCR mediante los comandos CMD10,
CMD9 y CMD58 respectivamente. Se comprueban que las respuestas a estos
comandos sean 0x00.
La tarjeta ya est inicializada en modo SPI correctamente. Se fija el tamao
del bloque de 512 bytes para posteriores lecturas/escrituras mediante el
comando CMD16.

Configuracin
Durante la inicializacin se configura la tarjeta de memoria de forma que pueda
ser leda y escrita mediante en modo SPI. La nica configuracin adicional necesaria que
se ha de efectuar despus de esta inicializacin es la modificacin del tamao del bloque,
si dicha modificacin fuese necesaria. Para este propsito se ha implementado la funcin:
void MMCSetDataMode(byte bytes)

Donde 'bytes' es el tamao del bloque en bytes, que por defecto despus de la
inicializacin es 512. Es importante tener en cuenta que algunas tarjetas de memoria solo
soportan escrituras con un tamao de bloque de 512 bytes, por lo que esta funcin no
tendra efecto. Para fijar el tamao 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 cdigo de forma que se llame a
una u otra funcin dependiendo de lo que se quiera leer y acelerando la ejecucin del
cdigo en algunas partes crticas obteniendo mejores tasas de transferencia. Las funciones
son:
102

byte LeeChar(int32 dir)


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

Las dos primeras funciones fijan un tamao de bloque de 1 y 2 bytes


respectivamente haciendo una llamada a la funcin MMCSetDataMode, realizan la lectura
de los datos en la posicin 'dir' mediante el comando CMD17 (READ_SINGLE_BLOCK)
y restauran el tamao del bloque con el valor inicial. La funcin MMCLeeBloque lee
mediante el comando CMD17 un bloque de datos con el tamao que haya fijado antes de
la llamada a la funcin y escribe los datos en 'Gbuffer'.
Escritura
Aunque finalmente no ha sido necesario el uso de la escritura en la tarjeta de
memoria en este proyecto, se ha implementado una funcin de escritura de bloque para
facilitar la adicin de futuras funcionalidades. La funcin es:
int MMCGrabaBloque(int32 dir, byte *Gbuffer)

Escribe en la direccin 'dir' desde 'Gbuffer' tantos bytes como el tamao del
bloque definido en ese momento. Para ello hace uso del comando CMD24
(WRITE_BLOCK), posteriormente se enva un token inicio de bloque y los datos a
escribir. La funcin devuelve 0 si ha habido algn error, de lo contrario devuelve 1.

4.3.4 Librera FAT16


Para almacenar los archivos mp3 en la tarjeta de memoria es necesario una
estructura mediante la cual se organice la informacin almacenada. El sistema de archivos
es el responsable de la organizacin de los datos en una unidad de almacenamiento. Se ha
elegido el uso del sistema de archivos FAT16 ya que es el ms utilizado en las tarjetas de
memoria y los dispositivos que las utilizan, por tanto la tarjeta podr ser utilizada y leda
en diferentes dispositivos.
No obstante el sistema de archivos FAT16 tiene una serie de limitaciones que hay
que tener en cuenta, stas son:

65517 archivos como mximo.


512 archivos como mximo en el directorio raz.
Nombres de archivos de 8+3 caracteres (sin uso del sistema de nombres

largos)

Tamao mximo del volumen de 2 GB (4 GB con tamao del cluster de

64 KB).
Estas limitaciones no son un inconveniente en este proyecto, siempre y cuando no
se quieran usar tarjetas de memoria de ms de 2 GB. En la Tabla 4.8 podemos ver una
comparacin de los distintas versiones de FAT.
103

FAT12

FAT16

FAT32

Mximo tamao de
archivo

32 MB

2 GB

4 GB

Nmero mximo de
archivos

4,077

65,517

268,435,437

Longitud mxima del


nombre de archivo

8.3

8.3 (Sin LFN)

255 usando LFN

Tamao mximo de
32 MB
2 GB (4GB con
volumen
clusters de 64KB)
Tabla 4.8 Comparacin de las versiones de FAT

8 TB

Estructura de FAT16
La estructura del sistema de archivos FAT16 se detalla en el apndice II.
Funciones de la librera
En la librera de funciones para el acceso al sistema de archivos las funciones se
pueden clasificar en cuatro tipos: funcin de inicilizacin, funciones de acceso a bajo
nivel, funciones de acceso a alto nivel, funciones de lectura de MP3. En las funciones de
acceso a bajo nivel se trabaja directamente con posiciones de memoria y nmeros de
cluster, mientras que las de acceso a alto nivel se simplifica el acceso al sistema de
archivos de forma que se utilizan manejadores para abrir, leer y cerrar archivos. Las
funciones de lectura de MP3 son una versin modificada de las funciones de lectura de
archivos de forma que aumente la velocidad de lectura y se puedan reproducir MP3 de
tasas de bit altos.
Inicializacin
La funcin de inicializacin void MMCFat16_Ini() se encarga de buscar en la
memoria la primera particin a partir del MBR, obtener datos necesarios para el acceso al
contenido de la particin (sectores por FAT, sectores por cluster, bytes por cluster, etc) y
de localizar la tabla FAT (se utiliza la primera), el directorio raz y el rea de datos. Estos
datos se introducen en variables globales que posteriormente utilizar el resto de
funciones de la librera.
Acceso a bajo nivel
int1 IsRegValido(int32 dir)

El valor 'dir' es la direccin absoluta de una entrada dentro de un directorio (el


directorio raz o cualquiera de sus subdirectorios). La funcin devuelve '1' si se trata de
una entrada vlida (que este en uso y no borrada), de lo contrario devuelve '0'.

104

int1 IsFichero(int32 dir)

La funcin IsFichero es similar a IsRegValido, 'dir' ha de ser la direccin


absoluta de una entrada dentro de un directorio. En este caso la funcin comprueba si la
entrada es de un archivo, devolviendo '1' en caso de que lo sea o '0' en caso de que sea una
entrada no vlida o un directorio.
int16 NextCluster(int16 cluster)

Esta funcin comprueba en la tabla FAT cual es el siguiente cluster al cluster


pasado, y lo devuelve .
int32 MMCDirFromCluster(int16 cluster)

La funcin MMCDirFromCluster devuelve la direccin absoluta del cluster


pasado como parmetro.
int32 MMCFileSize(int32 dir)

El parmetro 'dir' de la funcin MMCFileSize es la direccin absoluta de una


entrada dentro de un directorio correspondiente a un archivo. La funcin devuelve el
tamao de dicho archivo.
int16 MMCFirstCluster(int32 dir)

El parmetro 'dir' de la funcin MMCFirstCluster es la direccin absoluta de una


entrada dentro de un directorio correspondiente a un archivo. La funcin devuelve el
primer cluster donde se almacenan los datos de dicho archivo.
void MMCFileName(int32 dir, byte *nombre)

El parmetro 'dir' de la funcin MMCFileName es la direccin absoluta de una


entrada dentro de un directorio correspondiente a un archivo. La funcin escribe en
'nombre' el nombre completo (extensin incluida) de dicho archivo.
void MMCFileNameNoExt(int32 dir, byte *nombre)

El parmetro 'dir' de la funcin MMCFileNameNoExt es la direccin absoluta de


una entrada dentro de un directorio correspondiente a un archivo. La funcin escribe en
'nombre' el nombre de dicho archivo sin la extensin.

105

void MMCFileExt(int32 dir, byte *ext)

El parmetro 'dir' de la funcin MMCFileNameNoExt es la direccin absoluta de


una entrada dentro de un directorio correspondiente a un archivo. La funcin escribe en
'ext' la extensin de dicho archivo.
Acceso a alto nivel
Para la navegacin entre directorios, listado de archivos en directorios y lectura
de archivos se han implementado funciones que usan manejadores que hacen referencia a
un archivo o directorio determinado. La librera permite la apertura simultanea de varios
archivos y directorios, identificando cada uno de ellos mediante un manejador que hace
referencia a una estructura de datos.
La estructura de datos del manejador de archivos es la siguiente:
typedef struct {
int16 Root_cluster;
//Primer Cluster
int16 Current_Cluster; //Cluster actual
int16 Next_Cluster;
//Siguiente cluster
int32 Cluster_Offset; //Desplazamiento desde el inicio del cluster
int32 Current_Addrs; //Posicion actual en el archivo
int32 Size;
//Tamanyo del fichero
int32 Read;
//Bytes leidos (posicion logica en el fichero)
int32 dir_addr; //Direccion de la entrada del archivo
byte usado;
//Si el manejador esta siendo usado o no
} TFHandle;

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


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

Se definen dos vectores, uno de cada tipo, de forma que el manejador del archivo
o directorio es el ndice del vector donde se encuentran los datos de ese archivo o
directorio, y donde el tamao del vector determina el nmero de archivos o directorios
que pueden estar abiertos de forma simultnea:
byte MMCOpenFile(int32 dir)

La funcin MMCOpenFile abre un archivo y devuelve el manejador de este. El


parmetro 'dir' es la direccin absoluta de la entrada del archivo a abrir dentro de un
directorio.
106

byte MMCResetFile(byte hand)

La funcin MMCResetFile pone el cursor de lectura del archivo especificado por


el manejador 'hand' al principio del archivo. Devuelve '0' si el manejador corresponde a un
archivo no abierto y '1' si se la operacin ha tenido xito.
void MMCCloseFile(byte hand)

La funcin MMCCloseFile cierra el archivo al que hace referencia el manejador


'hand'.
byte MMCReadFile(byte hand, byte *Gbuffer)

La funcin MMCReadFile lee tantos bytes como estn definidos como tamao 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 funcin hace que el cursor de lectura del archivo avance tantos
bytes como han sido leidos.
Si se observa la estructura de datos del manejador de archivos, no existe ningn
parmetro 'cursor' propiamente dicho. Este se calcula a partir del valor de los parmetros
'Current_Cluster' y 'Cluster_offset'.
byte MMCReadFilePos(byte hand, byte *Gbuffer, int16 size, int32 ini)

La funcin MMCReadFilePos lee los bytes indicados por el parmetro 'size'


(mximo 512) del archivo que hace referencia el manejdor 'hand'. La lectura comienza en
la posicin del archivo indicada por el parmetro 'ini', y los escribe en 'Gbuffer'. La
funcin devuelve '0' si se ha efectuado correctamente, '2' si el nmero de bytes a leer es
superior a 512, '3' si la posicin de inicio de lectura 'ini' ms el nmero de bytes a leer
supera el tamao del archivo, y '1' si ha habido un error durante la lectura. Esa funcin
afecta a la posicin del cursor de lectura del archivo que se posiciona despus del ltimo
byte ledo.
byte MMCOpenDir(int32 dir, int32 dir_padre)

La funcin MMCOpenDir abre un directorio y devuelve el manejador. El parmetro


'dir' es la direccin absoluta de la entrada del directorio (al igual que en era la direccin
de la entrada del archivo). El parmetro 'dir_padre' es la direccin de la entrada del
directorio padre.
byte MMCResetDir(byte dHand)

La funcin MMCResetDir pone en la posicin inicial el cursor del directorio al que


hace referencia el manejador 'dHand'. El cursor se utiliza para obtener cada una de las
107

entradas dentro de un directorio de forma secuencial mediante llamadas a las funciones


MMCNextReg o MMCNextFile.
void MMCCloseDir(byte dHand)

La funcin MMCCloseDir cierra el directorio al que hace referencia el manejador


'hand', liberando recursos para que se puedan abrir ms directorios.
int32 MMCDirectoryDir(byte dHand)

La funcin MMCDirectoryDir devuelve la direccin de la entrada del directorio al


que hace referencia el manejador 'dHand'.
int32 MMCNextReg(byte dHand)

La funcin MMCNextReg devuelve la direccin de la entrada vlida al que apunta


el cursor y avanza el cursor una posicin. Esta funcin se utiliza para listar de forma
secuencial las entradas vlidas dentro de un directorio.
int32 MMCNextFile(byte dHand)

La funcin MMCNextFile es similar a MMCNextReg. En este caso se devuelve la


primera entrada vlida que sea un archivo, saltndose los directorios. Tras la llamada el
cursor se sita despus de la entrada del archivo devuelto.
int32 MMCGetEntryPosition(byte dHand, int16 pos)

La funcin MMCGetEntryPosition devuelve la direccin absoluta de la entrada


vlida 'pos' dentro del directorio al que hace referencia 'dHand'. La funcin nicamente
tiene en cuenta entradas vlidas dentro del directorio, por tanto el directorio deber tener,
al menos, tantas entradas validas como indique el parmetro 'pos'.
Funciones de lectura de MP3
Para la reproduccin de los archivos MP3 es necesario optimizar las funciones de
lectura. Por ello se han implementado tres funciones que no utilizan manejador y son
especificas para la funcin encargada de leer el flujo de datos MP3 y enviarlo a
decodificador. Las funciones son:
void MMCOpenMP3File(int32 dir)
int16 MMCReadMP3File1(byte *Gbuffer)
byte MMCReadMP3File2(int16 offset)

La funcin MMCOpenMP3File es muy similar a la funcin MMCOpenFile pero no


devuelve ningn manejador, ste es interno, ya que no se puede abrir ms de un archivo
simultneo para ser usado con estas funciones. Una vez abierto el archivo se utilizan las
funciones MMCReadMP3File1 y MMCReadMP3File2 para efectuar las lecturas. El
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 funcin
realiza la lectura de los datos del archivo MP3 abierto, los escribe en 'Gbuffer' y devuelve
la posicin relativa del cursor dentro del cluster que est leyendo. La segunda funcin ha
de ser llamada siempre despus de la primera pasndole como parmetro el 'offset'
devuelto por la primera. Esta funcin realiza todos los clculos necesarios para determinar
si se ha alcanzado el final del archivo, si se ha alcanzado el final del cluster, determinar
cul es el siguiente cluster, etc. El funcionamiento de estas funciones es el siguiente:

1. Se abre el archivo MP3 a reproducir con la funcin MMCOpenMP3File.


2. Se hace una llamada a la funcin MMCReadMP3File1.
3. Se envan al decodificador de MP3 una parte de los datos ledos, lo que
permite tenerlos en el buffer de lectura del decodificador y empezar su
reproduccin.
4. Se hace una llamada a la funcin MMCReadMP3File2 pasndole como
parmetro el resultado devuelto por MMCReadMP3File1 para finalizar los clculos
necesarios para la prxima lectura.
5. Se enva el resto de datos leidos al decodificador.
6. Ya se puede empezar otro ciclo de lectura (paso 2).
Gracias a esta divisin de la funcin de lectura se evita que se vace el buffer de
reproduccin del decodificador mientras se realizan los clculos necesarios para las
prximas lecturas.

4.3.5 Librera de la pantalla LCD


Se ha utilizado una pantalla LCD grfica monocromo de 84x48 pxeles que utiliza
un controlador Phillips PCD8544. Esta pantalla se utiliza en telfonos mviles Nokia
3310 y son econmicas y relativamente sencillas de conseguir. El interfaz de
comunicacin consta de 5 lneas, que pueden verse en la Tabla 4.15.
Nombre

Descripcin

SCLK

Reloj para el bus de datos SDIN

SDIN

Entrada de datos

D/C

Seleccin dato/comando

SCE

Seleccin del chip (chip select)

RES

Reset
Tabla 4.15 Lneas de comunicacin de la pantalla LCD

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

Imagen 4.10 puede verse como se mapean los datos contenidos en la memoria DDRAM
en la pantalla.
El direccionamiento dentro de la memoria se realiza mediante un puntero con dos
direcciones; una direccin X cuyo rango es de 0 a 83 y corresponde a las comunas, y una
direccin Y cuyo rango es de 0 a 5 y corresponde a los bancos (grupos de 8 filas). En
modo de direccionamiento vertical despus de cada byte la direccin Y del puntero se
incrementa, despus de la ltima direccin de Y (Y=5), Y vuelve a la posicin 0 y X se
incrementa. En el modo de direccionamiento horizontal ocurre de una forma similar,
despus de cada byte se incrementa X, cuando X alcanza su lmite vuelve a la posicin 0 y
se incrementa Y. Cuando el puntero supera el ltimo byte (X=83, Y=5) vuelve a la
posicin (0,0).

Imagen 4.10 Mapeo de la memoria DDRAM en la pantalla. Extrado de las especificaciones del controlador
PCD8544.

Comunicacin
En la comunicacin entre el microcontrolador y el controlador de la pantalla LCD
se pueden distinguir dos tipos de instrucciones: si la lnea D/C est a nivel bajo el byte
enviado por la lnea SDIN es interpretado como un comando. Si la lnea D/C est a nivel
alto los datos enviados por SDIN se escriben en la memoria DDRAM del controlador.
Despus de cada escritura en la memoria el puntero es incrementado automticamente. El
nivel de la lnea D/C es ledo durante el ltimo bit del byte de datos enviado por SDIN.
El interfaz serie se inicializa cuando la lnea SCE est a nivel alto, y se habilita en
el flanco de bajada de esta, indicando el comienzo de una transmisin de datos. Primero se
transmite el bit ms significativo de cada byte, y las instrucciones pueden enviarse en
110

cualquier orden. El valor de la lnea SDIN es capturado en los flancos de subida de la


seal de reloj SCLK. En la Tabla 4.16 se muestra el juego de instrucciones.
Instruccin

D/C

Comando

Descripcin

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0


H=0 o 1
NOP

No operacin

Juego de
instrucciones

PD

PD: Control de apagado


V: Direccionamiento vertical
H: Juego extendido de
instrucciones.

Escribir dato

D7

D6

D5

D4

D3

D2

D1

D0 Escribe el byte en la DDRAM

Reservado

Reservados

Control LCD

Pone la configuracin del LCD

Reservados

Reservados

Pone
direccin Y de
DDRAM

Y2

Y1

Y0 Pone la direccin Y del puntero


0Y5

Pone
direccin X de
DDRAM

X6

X5

X4

X3

X2

X1

X0 Pone la direccin X del puntero


0 x 83

Reservados

Reservados

Control de
temperatura

Reservados

Sistema bias

Reservados

Fija el Vop

H=0

H=1
Reservados

TC1 TC0 Pone el coeficiente de temperatura


x

Reservados

BS2 BS1 BS0 Pone el valor al sistema bias


x

Reservados

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

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


de varios registros:
PD: '0'=> chip activo; '1'=> chip en modo 'apagado'.
V: '0'=> direccionamiento horizontal; '1'=> direccionamiento vertical.
H: '0'=> juego de instrucciones bsico; '1'=> instrucciones extendidas.
D y E: 00 pantalla en negro; 10 modo normal; 01 todos los segmentos
encendidos; 11 modo de vdeo inverso.

La instruccin 'Control de temperatura' fija el coeficiente del control de


temperatura, que controla la tensin de alimentacin del LCD en funcin a la temperatura.
Las funciones para fijar el valor de bias y Vop (tensin operacional) sirven para el control
de la tensin del LCD y su contraste. En la Imagen 4.11 se puede ver el diagrama de
tiempos del envo de un byte.
111

Imagen 4.11 Diagrama de tiempos del envo de un byte

Inicializacin
Despus de encender la pantalla LCD el valor de los registros y la memoria no
estn definidos y se debe resetear el controlador. El reset fija unos valores determinados
en los registros, pero el contenido de la memoria contina siendo indeterminado. Por
tanto, despus de establecer los valores de tensin operacional, bias y modo horizontal o
vertical, se ha de realizar un borrado de la pantalla. El proceso de inicializacin utilizado
es el siguiente:

1.
2.
3.
4.
5.
6.
7.
8.

Reset del controlador


Envo de instruccin para activar el juego de comandos extendidos.
Se define Vop
Se define el valor bias
Se selecciona el modo horizontal o vertical (en este caso horizontal)
Se enciende el display (comando 0x09)
Se borra la memoria DDRAM.
Se sita el puntero en la posicin inicial (0,0).

Funciones de la librera
Existen dos funciones internas de la librera, que se han implementado para ser
utilizadas por otras funciones de la librera y no externamente. Estas son:
void LCD_write_command(byte cmd)
void LCD_write_data(byte data)

Ambas funciones son similares, envan el byte que se les pasa como parmetro,
en el caso de LCD_write_command la lnea 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()

Funcin de inicializacin del controlador de la pantalla LCD. Sigue el algoritmo


de inicializacin descrito anteriormente.
112

void LCD_gotoxy(byte x_pos, byte y_pos)

Esta funcin establece la posicin del puntero de escritura de la memoria


DDRAM en la posicin X='x_pos' y Y='y_pos'.
void LCD_clean_ddram()

La funcin LCD_clean_ddram borra el contenido de la memoria DDRAM


ponindola a '0'.
void LCD_char(byte caracter)

El controlador no dispone de una tabla de caracteres, por tanto se han definido


dos vectores que contienen los caracteres alfanumricos tanto en maysculas como en
minsculas ('' incluida). Estn descritos por un conjunto de 5 bytes cada uno que definen
su representacin grfica como una matriz de 5x8 (en realidad cada carcter es una matriz
de 5x7, la ltima fila de deja en blanco para separar lneas de caracteres). El parmetro
'caracter' es el carcter en formato ASCII que es transformado al ndice del vector donde
se almacena su representacin, la cual se enva al controlador LCD para que la escriba en
la memoria DDRAM en la posicin en la que se encuentre el puntero en ese momento.
void LCD_write_minnum(byte numero)

La funcin LCD_write_minnum es similar a LCD_char. En este caso la funcin


escribe nicamente nmeros utilizando una fuente ms pequea, de 4x7 pxeles por
nmero.
void LCD_bitmap(byte posx, byte posy, byte x_size,byte y_size,
byte logini)

Adems del vector de caracteres se ha definido un vector de imgenes. La funcin


LCD_bitmap escribe en la posicin X='posx' Y='posy' la imagen situada en el vector en la
posicin 'logini' y con un tamao 'x_size' x 'y_size'.
void LCD_icon(byte x, byte y, byte num)

La funcin LCD_icon es similar a LCD_bitmap, en este caso se utiliza un vector


de iconos con un tamao predefinido de 12x8 pixels. Los parmetros 'x' e 'y' son la
posicin en la que se escribirn los datos y 'num' el ndice dentro del vector de iconos.

113

4.3.6 Librera USB


Como se comentaba en el captulo del desarrollo hardware, el mdulo USB
consta de un bus de 8 Bits y varias lneas de comunicacin, de las cuales se han utilizado
las siguientes:
RXF# (salida): Cuando est a nivel bajo al menos un byte est esperando en el
buffer de bytes recibidos del modulo USB a ser ledos por el microcontrolador.
Est a nivel alto si el buffer est vaco.
TXE# (salida): Cuando est a nivel alto indica que el buffer de transmisin est
lleno, por tanto debe esperarse antes de escribir nuevos datos.
WR (entrada): Cuando se pasa de nivel alto a bajo el mdulo USB lee los 8 bits
de la lnea de datos y mete el byte en el buffer de transmisin. Los datos del
buffer de transmisin son transmitidos al ordenador en el periodo de tiempo
determinado por el timeout del buffer de transmisin (configurable de 1 a
255ms)
RD# (entrada): Al ponerlo a nivel bajo el primer byte del buffer de recepcin se
pone en las lneas de datos. Cuando se pasa de nuevo a nivel alto las lneas de
datos se ponen en estado de alta impedancia.
SLEEP (Salida): Corresponde al pin PWREN# del chip, se pone a nivel bajo
despus del proceso de enumeracin del dispositivo. Sirve para controlar la
alimentacin del dispositivo y detectar su enumeracin por parte del host.

Las funciones desarrolladas en la librera USB son muy bsicas y se encargan de


la inicializacin, comprobacin del estado del mdulo USB y transmisin de bytes. Son
las siguientes:
void Ini_USB()

Inicializa los registros internos del microcontrolador para usar las lneas de
comunicacin con el mdulo USB de forma correcta.
int1 isUSBEnumerado()

La funcin devuelve '1' si el mdulo USB esta conectado a un host (ordenador) y


ha sido enumerado por ste, y de lo contrario devuelve '0'.
int1 HayDatosUSB()

La funcin devuelve '1' si existen datos para ser ledos en el buffer del mdulo
USB, y de lo contrario devuelve '0'.
void clear_USB_outbuffer()

La funcin clear_USB_outbuffer limpia el buffer de lectura del mdulo USB.

114

void put_USB(byte data)

Enva el byte 'data' al mdulo USB (para ser transmitido al ordenador).


byte get_USB()

La funcin get_USB lee y devuelve un byte del buffer de lectura del mdulo
USB, si el buffer est vaco se espera hasta que se recibe al menos un byte.
byte get_USB_timer(byte timeout)

La funcin get_USB_timer es muy similar a get_USB, en este caso si el buffer


est vaco se espera un tiempo fijado por el parmetro 'timeout' (timeout/10 ms), si en este
tiempo el mdulo no ha recibido ningn byte la funcin devuelve 0xFF y pone la variable
de error (TimeOutError) a '1'.
void USB_EnviaBloque(int16 nBytes, byte *datos)

La funcin USB_EnviaBloque enva al mdulo USB tantos bytes como indica el


parmetro 'nBytes' de la variable 'datos'.

4.3.7 Lectura de ID3v1 y ID3v2


El formato de audio MP3 no dispone de forma nativa de ninguna forma de
almacenar informacin sobre su contenido. El formato ID3 es un sistema muy popular y
utilizado de etiquetas que se almacenan en los archivos de audio MP3 aadiendo
informacin sobre estos, como el ttulo de la cancin, artista, ao, gnero, etc. Existen
diferentes versiones de ID3 compatibles entre s, de forma que un mismo archivo MP3
puede contener etiquetas de la versin 1.1 y de la versin 2.0.
Existen dos versiones principales del formato ID3: la versin ID3v1 (la ltima
especificacin es la 1.1 que aade a la 1.0 informacin del nmero de pista) que almacena
la informacin al final del archivo, y la versin ID3v2 (actualmente la ltima
especificacin es la 2.4) que almacena la informacin al inicio del archivo.
Se han implementado dos funciones para leer parte de la informacin contenida
en las etiquetas ID3 (si estn presentes) para ser posteriormente mostrada por pantalla. La
informacin leda es el ttulo, autor y lbum de la cancin. Las funciones son:
int ID3v1(byte hand)
int ID3v2(byte hand)

La primera funcin lee la informacin de la etiqueta ID3v1, y la segunda de la


etiqueta ID3v2 sin cabecera extendida. Las funciones devuelven '1' si se ha podido leer la
etiqueta correctamente y de lo contrario devuelven '0'. El parmetro hand es el manejador
del archivo MP3. Los datos ledos se guardan en variables globales que hacen referencia
al MP3 en uso. A continuacin se realiza una pequea explicacin de ambas versiones.
115

ID3v1
La etiqueta ID3v1 se almacena en los ltimos 128 bytes de los archivos MP3. Al
ser una etiqueta de tamao fijo y reducida, la informacin que almacena es bsica y no
permite aadir nuevos elementos. En la Tabla 4.17 puede verse la composicin de la
etiqueta ID3v1.

Tamao

Contenido

3 Bytes

TAG

30 Bytes

Ttulo de la cancin

30 Bytes

Artista

30 Bytes

lbum

4 Bytes

Ao

30 Bytes

Comentarios (en la versin 1.1 el ltimo byte es


el nmero de pista)

1 Byte

Gnero (ndice de una lista de 80 gneros)


Tabla 4.17 Estructura de la etiqueta ID3v1

ID3v2
Debido a las limitaciones de las versiones 1.x (longitud de etiquetas insuficiente,
uso nicamente de caracteres ASCII, nmero de etiquetas insuficiente, etc.) se ha
desarrollado una nueva versin que aporta mucha ms flexibilidad. Las mejoras ms
significativas son:
Utilizacin de carcteres unicode.
Etiquetas al inicio del archivo, lo que facilita su difusin mediante streaming ya
que no es necesario descargarlo completamente.
No hay restricciones respecto a la longitud de las etiquetas (existe una
restriccin mxima de 16 MB por marco y 256 MB en total).
Es posible incluir elementos no textuales, como imgenes.
Se pueden incluir etiquetas definidas por el usuario.
Contiene un esquema de desincronizacin que evita que el decodificador
intente reproducirla.
Soporta informacin encriptada.

La etiqueta ID3v2 esta compuesta por una cabecera, un cuerpo y un conjunto de


marcos, y cada marco contiene una cabecera y uno o ms campos de datos. Es un sistema
relativamente complejo y por tanto no se van a explicar aqu los detalles de su estructura.
La funcin implementada comprueba la existencia de la etiqueta (ID3 en los primeros
bytes) y busca la informacin de ttulo, artista y lbum en el primer marco.

116

4.3.8 Funciones de visualizacin de datos y men


Se trata de un conjunto de funciones que hacen uso de la librera de la pantalla
LCD y la librera FAT16 para mostrar los datos del archivo en reproduccin, as como
tambin mens que permiten la navegacin por el rbol de directorios y la seleccin de
diversas opciones.
Visualizacin de datos
Son las funciones que muestran en pantalla los datos del MP3 en reproduccin.
Las funciones de visualizacin de datos son:
LCD_StLogo:

Muestra el icono con la informacin del tipo de audio (estreo,


mono, virtual surround, diferential)
LCD_ArtistScroll: Muestra en la pantalla el nombre del autor extrado del MP3
en modo scroll.
LCD_Volume: Muestra las barras del volumen actual.
LCD_Play_Data: Muestra el icono MP3 en la pantalla, si est activado el modo
de realce de bajos y el tiempo de reproduccin.
Funciones bsicas de men
Existen dos mens distintos, el de navegacin por el rbol de directorios y el de
funciones. Ambos mens tienen funciones en comn: mostrar un listado de elementos y
recorrerlo. As que se han implementado las siguientes funciones bsicas de men:
Ini_Menu: Inicializa
AddList: Se le pasa

el sistema de men.
un elemento con un nombre e icono para que sea aadido a

la lista.
Reset_Menu: Resetea el men (borra sus elementos)
NextMenu: Selecciona el siguiente elemento dentro del men.
PrevMenu: Selecciona el anterior elemento dentro del men.
ShwoMenu: Muestra el men en pantalla.

Las funciones utilizan una estructura de datos global que puede ser leda por el
programa principal para pasarles datos o averiguar cual es el elemento seleccionado. El
modo de funcionamiento de las funciones es el siguiente:

1.
2.
3.
4.

Se inicia el sistema de mens llamando a la funcin Ini_Menu.


Se aaden los elementos del men a la lista (un mximo de 5)
Se llama a la funcin ShowMenu para mostrar el men en pantalla.
Se efectan las llamadas a NextMenu o PrevMenu segn los botones
presionados por el usuario.
5. Se lee el elemento seleccionado.
6. Para mostrar otro listado se llama a la funcin ResetMenu y se pasa al paso 2.

117

Navegacin por el rbol de directorios


Estas funciones hacen uso de las funciones de men bsicas para mostrar en
pantalla el listado de directorios y archivos de la tarjeta de memoria y permiten la
navegacin por la estructura de directorios de esta. Las funciones son las siguientes:
MenuListaDir:

Inicia el men listando los archivos y directorios de un directorio

determinado.
FilesToMenu: Aade un archivo o directorio al listado (usado por
MenuListaDir).
FicheroSiguente: Selecciona el siguiente archivo o directorio del listado.
FicheroAnterior: Selecciona el anterior archivo o directorio del listado.
MenuEntrar: Si el elemento seleccionado es un directorio entra dentro de l,

listando su contenido en el men. Si es un archivo MP3 lo selecciona como el


archivo activo y enva el comando CMD_PLAY al bucle principal.
Men de opciones
Al igual que el men de navegacin, el men de opciones utiliza las funciones
bsicas del men para listar distintas opciones de reproduccin que se pueden activar o
desactivar. Las funciones son las siguientes:
MenuOpciones: Inicia el men listando las opciones posibles.
OpcionSiguente: Selecciona la opcin siguiente.
OpcionAnterior: Selecciona la opcin anterior.
OpcionesEntrar: Activa o desactiva la opcin seleccionada, segn

sea el caso.

4.4 Protocolo de comunicacin Reproductor-PC


4.4.1 Introduccin
Para poder controlar el reproductor desde un ordenador y poder realizar diferentes
funciones como la transferencia de archivos o la reproduccin remota, se ha definido un
protocolo de comunicacin sobre el interfaz USB. Cuando el reproductor est conectado
al ordenador mediante USB y en este se est ejecutando la aplicacin de control del
reproductor, el reproductor entra en un estado en el que es completamente controlado por
la aplicacin mediante un conjunto de comandos.
La comunicacin en el lado del reproductor hace uso de la librera de USB
descrita en el apartado anterior. En el lado del ordenador, la aplicacin hace uso de los
controladores suministrados por FTDI Chip para la comunicacin con el reproductor
mediante el mdulo USB.

118

4.4.2 Sistema de mensajes


La comunicacin entre el reproductor y el ordenador se basa en un intercambio de
mensajes. Es la aplicacin en el ordenador la que toma el control en la comunicacin y se
encarga de enviar los mensajes, denominados comandos, a los que el reproductor debe
responder. El reproductor efecta la accin definida por el comando recibido y devuelve
una respuesta al ordenador.
Estructura de los mensajes
Los mensajes enviados desde el ordenador al reproductor se denominan
comandos. Las estructura de los comandos consta de tres partes: un byte que define el
tipo de comando, un byte que define el comando y unos parmetros que dependen del
comando en cuestin. En la Imagen 4.12 puede verse esta estructura.

Imagen 4.12 Estructura del mensaje

La respuesta a los comandos enviados por la aplicacin pueden ser mensajes de


respuesta simples consistentes en un byte (mensaje ACK o mensajes de error) o pueden
ser mensajes ms elaborados, correspondientes a respuestas de peticin de informacin,
como por ejemplo el listado de archivos de un directorio. Estos mensajes ms elaborados
constan de un byte indicando el tipo de mensaje y un conjunto de datos correspondientes a
la informacin pedida por el comando. Algunos comandos pueden necesitar de ms de un
mensaje de respuesta, sto depender del comando en cuestin.
Tipos de comandos y mensajes
Los comandos se han dividido en cuatro tipos dependiendo de su naturaleza:
Comandos de navegacin: son comandos utilizados para navegar por la
estructura de directorios del la memoria MMC y enviar archivos del reproductor
al ordenador.
Comandos de control: se utilizan para controlar algunos parmetros del
reproductor.
Comandos de reproduccin: se utilizan para controlar la reproduccin remota de
archivos MP3.
Comandos para el decodificador: se trata de comandos que envan informacin
directamente al decodificador de MP3.

En la Tabla 4.18 se listan todos los comandos y mensajes de los que hace eso el
protocolo de comunicacin.

119

Nombre
USB_NULL
USB_PC_PRESENT*
USB_USB_PRESENT*
USB_PC_ASKINI*

Cdigo
hexadecimal
0x00
0x01
0x02
0x03

Explicacin

USB_TCMD_DEBUG*
USB_TCMD_DIR*
USB_TCMD_OP*
USB_TCMD_PLAY*
USB_TCMD_VS*
USB_TCMD_LCD*

0x10
0x11
0x12
0x13
0x14
0x15

Despus va una cadena terminada en NULL


Comandos de directorio
Comandos de configuracin
Comandos de reproduccin
Comandos para el control a bajo nivel del chip MP3
Comandos para el control a bajo nivel del LCD

USB_DIR_GOTO_ROOT
USB_DIR_GOTO
USB_DIR_LIST
USB_DIR_FILE
USB_DIR_ENDDIR
USB_DIR_GET
USB_DIR_GETDATA
USB_DIR_ENDGET
USB_DIR_STOPGETDATA

0x20
0x21
0x22
0x23
0x24
0x25
0x26
0x27
0x28

Ir al directorio root
Ir a el directorio especificado
Pide el listado del directorio actual
Cada uno de los elementos de un directorio
Indica la finalizacin del listado del directorio
Pide obtener un archivo
Manda paquetes de datos del archivo
Indica que ha finalizado la transmisin del archivo
Interrumpe el envo de archivos

USB_OP_RESET
USB_OP_SETVOL
USB_OP_GETVOL

0x30
0x31
0x32

Resetea el dispositivo
Modifica el volumen
Obtiene los valores de volumen

USB_PLAY_PLAY
USB_PLAY_PAUSE
USB_PLAY_STOP
USB_PLAY_ENDPLAY

0x40
0x41
0x42
0x47

Reproduce el archivo indicado


Pausa el archivo en reproduccin
Para el archivo en ejecucin
Avisa de la finalizacin del archivo MP3

USB_VS_HRESET
USB_VS_SRESET
USB_VS_SEND
USB_VS_CMD
USB_VS_BEEP1
USB_VS_TEST_SEND

0x50
0x51
0x52
0x53
0x54
0x55

Reset Hardware del VS1001K


Reset Software del VS1001K
Enva datos al VS1001K
Enva un comando al VS1001K
Genera un pitido en el reproductor
Comando de Test de envo de datos

Comando nulo, no realiza ninguna accin.


Comando de inicializacin que enva el PC
Comando de inicializacin que enva el dispositivo USB
Peticin de inicializacin por parte del PC

USB_ACK*
0xAA
Comando de aceptacin (usado en inicializacin)
USB_ACK2*
0xAB
USB_STOPBYTE
0xBB
USB_RECO1
0xCA
USB_CANCEL*
0xDA
USB_ERR1*
0xFA
Cdigo de error 1
USB_ERR2*
0xFB
Cdigo de error 2 .
USB_CMDTUNK*
0xFD
Tipo de comando desconocido
USB_CMDUNK*
0xFE
Comando desconocido
* Estos mensajes no llevan delante un Tipo de Comando
Tabla 4.18 Comandos del protocolo de comunicacin

120

4.4.3 Inicializacin de la comunicacin


Antes de que el reproductor pueda empezar a contestar a los comandos enviados
por la aplicacin en el ordenador ambos han de inicializar la comunicacin, de modo que
el reproductor quede en un estado de espera de comandos. El proceso de inicializacin es
el siguiente:

1. La aplicacin enva el comando USB_PC_PRESENT si detecta que el


reproductor est conectado a un puerto USB y est enumerado. Este comando
le indica al reproductor que la aplicacin est conectada y quiere iniciar la
comunicacin.
2. El reproductor comprueba peridicamente si ha sido enumerado por el host
USB. Si lo est comprueba si se le ha enviado el comando
USB_PC_PRESENT, en caso de recibirlo enva como respuesta
USB_USB_PRESENT. Esto le indica a la aplicacin que el reproductor ha
recibido el mensaje de la aplicacin y que l tambin est en disposicin de
iniciar la comunicacin.
3. La aplicacin lee la respuesta del reproductor y le pide, mediante el comando
USB_PC_ASKINI, que se inicie la comunicacin.
4. El reproductor responde al USB_PC_ASKINI con el mensaje USB_ACK
indicndole que ha iniciado la comunicacin y est en disposicin de recibir
cualquier tipo de comando. Despus de este mensaje el reproductor entra en
un bucle de lectura a la espera de comandos por parte de la aplicacin (modo
USB_IDLE).
La funcin de inicializacin se llama de forma peridica, para detectar si se ha
conectado el reproductor a un puerto USB y si la aplicacin de comunicacin est
presente. En la Imagen 4.13 puede verse el diagrama de inicializacin que se acaba de
describir.

Imagen 4.13 Diagrama de inicializacin de la comunicacin

121

4.4.4 Comandos de navegacin


USB_DIR_GOTO_ROOT
Parmetros: Sin parmetros.
Direccin: PC=>Reproductor
Funcin: Establece el directorio root del sistema de archivos como directorio
actual.
Respuesta: USB_ACK
USB_DIR_GOTO
Parmetros: un entero de 16 bits que indica el directorio a abrir.
Direccin: PC=>Reproductor
Funcin: Establece como directorio actual el directorio indicado por el parmetro.
El parmetro hace referencia al ndice de la entrada dentro del directorio actual.
Respuesta: USB_ACK
USB_DIR_LIST
Parmetros: Sin parmetros.
Direccin: PC=>Reproductor
Funcin: Pide la lista de archivos y directorios del directorio actual.
Respuesta: Enva un conjunto de mensajes USB_DIR_FILE, uno por cada
entrada dentro del directorio actual. Finaliza mediante un mensaje
USB_DIR_ENDDIR. En la Imagen 4.14 se muestra el funcionamiento del
comando USB_DIR_LIST.

Imagen 4.14 Diagrama de funcionamiento del comando USB_DIR_LIST

122

USB_DIR_FILE
Parmetros: Se envan dos parmetros, un entero de 16 bits indicando el ndice de
la entrada dentro del directorio, y un conjunto de 32 bytes correspondientes a la
entrada del elemento dentro del sistema de archivos FAT16.
Direccin: Reproductor=>PC
Funcin: Enva una entrada (archivo o directorio) del directorio actual. Es la
respuesta del reproductor a un comando USB_DIR_LIST.
USB_DIR_ENDDIR
Parmetros: Sin parmetros
Direccin: Reproductor=>PC
Funcin: Indica que se ha terminado de transferir todas las entradas dentro del
directorio actual. Es el ltimo mensaje que se enva como respuesta al comando
USB_DIR_LIST.
USB_DIR_GET
Parmetros: un entero de 16 bits que indica el archivo a enviar.
Direccin: PC=>Reproductor
Funcin: Pide al reproductor que le transfiera el archivo indicado por el
parmetro. El parmetro indica el ndice dentro del directorio actual que
corresponde al archivo a enviar.
Respuesta: Se enva un conjunto de mensajes USB_DIR_GETDATA con los
datos del archivo, al finalizar el envo se enva USB_DIR_ENDGET. En la
Imagen 4.15 se muestra el funcionamiento del comando USB_DIR_GET.

Imagen 4.15 Diagrama del funcionamiento del comando USB_DIR_GET

123

USB_DIR_GETDATA
Parmetros: Se envan dos parmetros, un entero de 16 bits indicando el nmero
de bytes de datos que se envan en el mensaje, y un conjunto de bytes que
corresponden al contenido del archivo.
Direccin: Reproductor=>PC
Funcin: Se enva como respuesta a un comando USB_DIR_GET, enva el
contenido del archivo solicitado. Cada mensaje enva 512 Bytes de datos,
exceptuando el ltimo mensaje, que enva los datos restantes.
USB_DIR_ENDGET
Parmetros: Sin parmetros
Direccin: Reproductor=>PC
Funcin: Indica que se ha terminado de transferir los datos de archivo solicitado.
Es el ltimo mensaje que se enva como respuesta al comando USB_DIR_GET.
USB_DIR_STOPGETDATA
Parmetros: Sin parmetros
Direccin: PC=> Reproductor
Funcin: Interrumpe el envo de datos por parte del reproductor, fruto de un
comando USB_DIR_GET.
Respuesta: USB_ACK

4.4.5 Comandos de control


USB_OP_RESET
Parmetros: Sin parmetros
Direccin: PC=> Reproductor
Funcin: Resetea el microcontrolador.
Respuesta: USB_ACK
USB_OP_SETVOL
Parmetros: un byte correspondiente al volumen que se desea fijar.
Direccin: PC=> Reproductor
Funcin: Fija el volumen de reproduccin.
Respuesta: USB_ACK

124

USB_OP_GETVOL
Parmetros: Sin parmetros
Direccin: PC=> Reproductor
Funcin: Devuelve un byte con el volumen de reproduccin.
Respuesta: un byte con el volumen y USB_ACK

4.4.6 Comandos de reproduccin


USB_PLAY_PLAY
Parmetros: un entero de 2 bytes que corresponden a la posicin del archivo MP3
que se ha de reproducir, dentro del directorio actual.
Direccin: PC=> Reproductor
Funcin: Inicia la reproduccin del archivo MP3 indicado por el parmetro
pasado.
Respuesta: USB_ACK
USB_PLAY_PAUSE
Parmetros: Sin parmetros.
Direccin: PC=> Reproductor
Funcin: Pausa la reproduccin activa.
Respuesta: USB_ACK
USB_PLAY_STOP
Parmetros: Sin parmetros.
Direccin: PC=> Reproductor
Funcin: Para la reproduccin activa.
Respuesta: USB_ACK
USB_PLAY_ENDPLAY
Parmetros: Sin parmetros.
Direccin: Reproductor => PC
Funcin: Le comunica a la aplicacin que se ha alcanzado el final del archivo
MP3 y se ha finalizado la reproduccin.

125

4.4.7 Comandos para el decodificador


USB_VS_HRESET
Parmetros: Sin parmetros.
Direccin: PC=> Reproductor
Funcin: Realiza un reset hardware del decodificador MP3.
Respuesta: USB_ACK
USB_VS_SRESET
Parmetros: Sin parmetros.
Direccin: PC=> Reproductor
Funcin: Realiza un reset software del decodificador MP3.
Respuesta: USB_ACK
USB_VS_SEND
Parmetros: Tiene dos parmetros, el primero es un entero de 2 bytes que indica
el tamao en bytes del segundo. El segundo es un conjunto de bytes de datos.
Direccin: PC=> Reproductor
Funcin: Enva en conjunto de datos recibido como parmetro junto con el
comando al decodificador MP3 por el interfaz SDI. Sirve principalmente para la
reproduccin en el reproductor de un flujo de datos MP3 enviados por la
aplicacin.
Respuesta: USB_ACK
USB_VS_BEEP1
Parmetros: Sin parmetros.
Direccin: PC=> Reproductor
Funcin: Enva el decodificador un comando para que este genere un beep.
Respuesta: USB_ACK
USB_VS_TEST_SEND
Parmetros: Tiene dos parmetros, el primero es un entero de 2 bytes que indica
el tamao en bytes del segundo. El segundo es un conjunto de bytes de datos.
Direccin: PC=> Reproductor
Funcin: Se trata de un comando de prueba y depuracin. Devuelve como
respuesta los mismos datos que ha recibido como datos.
Respuesta: El conjunto de datos recibidos como parmetros.

126

4.4.7 Errores
Si durante la comunicacin el reproductor recibe un comando no vlido o no
esperado le devuelve a la aplicacin un mensaje de error. Los mensajes USB_ERR1 y
USB_ERR2 se utilizan durante el proceso de inicializacin. El mensaje
USB_CMDTUNK indica a la aplicacin que el tipo de comando es incorrecto y el
mensaje USB_CMDUNK le indica que el comando es incorrecto.
Si durante la comunicacin existiera algn problema y el reproductor devolviese
mensajes diferentes a USB_ACK o varios mensajes de error seguidos, la aplicacin puede
intentar recuperar la comunicacin borrando los buffers de entrada y salida, y enviando
una serie de comandos USB_NULL.

4.5 Programa principal


4.5.1 Introduccin
El programa principal est compuesto por una funcin principal, que inicia el
microcontrolador y contiene el bucle principal del programa, una funcin temporizada,
que se ejecuta peridicamente y se encarga del control del interfaz de usuario, y un
pequeo conjunto de funciones. Todas ellas hacen uso de las libreras anteriormente
descritas.

4.5.2 Funcin principal


En la Imagen 4.16 puede verse el diagrama de flujo de la funcin principal que se
inicia al arrancar el reproductor. Primero se inicializan los distintos elementos del
reproductor as como los registros internos del PIC y la funcin temporizada. Despus
entra en un bucle que atiende a los comandos CMD_PLAY y CMD_STOP que inicia y
finaliza la reproduccin del archivo MP3 seleccionado. Cuando el reproductor se conecta
por USB al ordenador y se inicializa la comunicacin con la aplicacin el bucle cede el
control a la librera de comunicacin.

127

Imagen 4.16 Diagrama de flujo de la funcin principal

4.5.3 Funcin temporizada


La tarea de control del interfaz de usuario la asume una funcin que es llamada de
forma peridica por un temporizador del microcontrolador (cada 52,4 ms). Esta funcin se
encarga del refresco de la informacin 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 funcin puede verse en la Imagen 4.17.

128

Imagen 4.17 Diagrama de flujo de la funcin temporizada

La tarea ms importante de esta funcin es la comprobacin de la botonera, que


hace que el usuario pueda controlar el reproductor. En la Imagen 4.18 Diagrama puede
verse su diagrama de flujo.

129

130

Imagen 4.18 Diagrama de flujo de la comprobacin de la botonera

4.5.4 Otras funciones


Adems de las libreras y funciones ya descritas se han implementado otras
funciones entre las que destacan:
void Play(int32 dir)

Reproduce el archivo MP3 indicado por el parmetro. El parmetro 'dir' es la


direccin absoluta de la entrada del archivo a reproducir dentro de un directorio. La
lectura del archivo hace uso de las funciones MMCOpenMP3File y MMCReadMP3File
que estn optimizadas para la reproduccin de MP3 con tasas de bit altas.
void SetEEPROMValues()

Graba en la memoria EEPROM interna del microcontrolador la informacin de


volumen, modo de reproduccin y modo de audio.
void GetEEPROMValues()

Lee de la memoria EEPROM interna del microcontrolador la informacin de


volumen, modo de reproduccin y modo de audio que han sido guardados anteriormente,
y los establece como valores actuales.

131

5. Diseo y desarrollo de la aplicacin


5.1 Introduccin
Para el control del reproductor desde un ordenador se ha desarrollado una
aplicacin windows en la cual se muestran las distintas posibilidades que ofrece:
Navegacin por la estructura de archivos del reproductor.
Descarga al ordenador de archivos almacenados en el reproductor.
Reproduccin en el reproductor de archivos almacenados en ste.
Reproduccin en el reproductor de archivos almacenados en el ordenador.
Reproduccin en el ordenador de archivos almacenados en el reproductor.
Reproduccin en el reproductor de stream MP3 transmitidos a travs de
internet.

Se ha decidido encapsular todo el protocolo de comunicacin en una librera DLL


que proporcione un interfaz fcil de utilizar, de forma que se puedan desarrollar distintas
aplicaciones de forma rpida sin necesidad de preocuparse de la capa de comunicacin
con el reproductor.

5.2 Herramientas de desarrollo utilizadas


FTDI Chip, el fabricante del mdulo de comunicacin USB, proporciona
diferentes libreras y drivers para facilitar el desarrollo de aplicaciones en diferentes
plataformas40. Existen dos mtodos para realizar la comunicacin: utilizar el driver VCP
que crea un puerto COM virtual, o utilizar el driver D2XX que proporciona un acceso
directo al dispositivo USB a travs de una librera DLL. Para disponer de un mayor
control y velocidad de transmisin se ha utilizado esta ltima opcin.
Tanto la librera de comunicacin con el reproductor como la aplicacin se han
desarrollado para la plataforma .NET de Microsoft. Esto es as por varios motivos, en
primer lugar se ha elegido desarrollar la aplicacin para sistemas operativos Windows
porque es el sistema que tiene actualmente mayor difusin en entornos domsticos, y
adems FTDI Chip proporciona drivers ms completos y documentados para Windows
que para otro sistema. En segundo lugar se ha elegido la plataforma .NET por ser un
entorno actual que Microsoft est fomentando con nuevas y completas herramientas de
desarrollo. Por todo ello, y por que ya se tena experiencia en el desarrollo de aplicaciones
en C# para plataforma .NET, se ha optado por esta opcin. Para una mayor compatibilidad
la librera se ha desarrollado para .NET 1.1, que puede ser utilizada en versiones
superiores. La aplicacin se ha desarrollado para .NET 2.0 ya que proporciona mejoras
con respecto a la 1.1.

40 Existen drivers para todas las versiones de windows superiores al 98, MAC OS X, Linux, Windows CE y
Windows Mobile entre otros.

132

El entorno de desarrollo utilizado para la programacin ha sido diferente en cada


caso. Para la librera se ha utilizado el programa Sharpdevelop 1.1, se trata de un entorno
de desarrollo gratuito que hace uso de las libreras SDK de la plataforma .NET 1.1. Para el
desarrollo de la aplicacin se ha utilizado el Visual Studio 2005, que proporciona un
entorno de desarrollo con ms opciones que los programas gratuitos, y sobre todo facilita
los trabajos de depuracin, como puntos de interrupcin, ejecucin paso a paso, etc. En la
versin 1.1 de Sharpdevelop las opciones de depuracin son casi inexistentes. En ambos
casos se ha utilizado el C# como lenguaje de programacin.

5.3 Librera del mdulo USB


El driver D2XX proporcionado por FTDI permite que las aplicaciones se
comuniquen con el mdulo USB a travs de una librera DLL. La arquitectura del driver
D2XX consiste en un driver Windows WDM que se comunica con el dispositivo a travs
de la pila USB de Windows y una librera DLL que acta como interfaz entre la aplicacin
y el driver WDM. En la Imagen 5.1 se pueden ver la arquitectura de una aplicacin que
haga uso del driver D2XX.

Imagen 5.1 Arquitectura del uso del driver USB D2XX

133

Debido a que la librera 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 cdigo como si se tratase de una librera .NET, encapsulndose as el
interfaz D2XX en las clases FTDevice, FTDeviceInfo y FTManager. Las funciones del
interfaz D2XX incluidas en el wrapper y utilizadas para implementar estas clases son:
public FT_STATUS FT_Open(int deviceNumber, out int pHandle);
public FT_STATUS FT_OpenEx(string pvArg1, FT_OPEN dwFlags, out int
ftHandle);
public FT_STATUS FT_Close(int ftHandle);
public FT_STATUS FT_ReadEE(int ftHandle, int dwWordOffset, out ushort
lpwValue);
public FT_STATUS FT_WriteEE(int ftHandle, int dwWordOffset, ushort
wValue);
public FT_STATUS FT_EraseEE(int ftHandle);
public FT_STATUS FT_Write(int ftHandle, byte[] lpBuffer, int
dwBytesToWriteout, out int lpdwBytesWritten);
public FT_STATUS FT_ListDevices(out int count, int arg2, FT_LIST arg3);
public FT_STATUS FT_OpenEx(IntPtr pArg1, int Flags, out int pHandle);
public FT_STATUS FT_Read(int ftHandle, byte[] lpBuffer, int nBufferSize,
out int lpBytesReturned);
public FT_STATUS FT_CreateDeviceInfoList(out int lpdwNumDevs);
public FT_STATUS FT_GetDeviceInfoDetail(int dwIndex, out int lpdwFlags,
out int lpdwType, out int lpdwID, out int lpdwLocId, StringBuilder
pcSerialNumber, StringBuilder pcDescription, out int ftHandle);
public FT_STATUS FT_GetQueueStatus(int ftHandle, out int
lpdwAmountInRxQueue);
public FT_STATUS FT_Purge(int ftHandle, int dwMask);
public FT_STATUS FT_ResetDevice (int ftHandle);
public FT_STATUS FT_ResetPort (int ftHandle);
public FT_STATUS FT_CyclePort (int ftHandle);
public FT_STATUS FT_GetStatus(int ftHandle, out int lpdwAmountInRxQueue,
out int lpdwAmountInTxQueue, out int lpdwEventStatus);

5.4 Librera de control del reproductor


Como se ha comentado, todo el protocolo de comunicacin se ha implementado
en una librera de forma que se puedan desarrollar distintas aplicaciones de forma ms
sencilla sin necesidad de preocuparse de la capa de comunicacin con el reproductor. En
la Imagen 5.2 puede verse la estructura interna de la librera de comunicacin.
Al principio la aplicacin ha de comprobar si el reproductor est conectado y
hacer una llamada a la funcin de inicializacin de la comunicacin. Si la inicializacin de
la comunicacin ha finalizado con xito se puede comenzar a realizar llamadas a las
funciones de la librera, estas llamadas son transformadas en mensajes que son encolados
en una cola de envo de mensajes. Un hilo comprueba peridicamente las colas de envo,
enviando al reproductor los mensajes (comandos) que encuentre.
Existen dos colas de envo, una ms 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 aplicacin 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 aplicacin llama a la funcin de cambio de
volumen, en este caso la librera crea un mensaje que introduce en la cola con mayor
prioridad, de esta forma no es necesario que se enven todos los mensajes encolados antes
de la llamada, y sta es atendida inmediatamente.
Las respuestas devueltas por el reproductor son ledas por un hilo que
peridicamente comprueba el buffer de recepcin. Dependiendo del tipo de respuesta el
hilo introduce nuevos mensajes en la cola de envo o genera los eventos necesarios para
informar a la aplicacin de la informacin que se ha recibido del reproductor.

Imagen 5.2 Estructura interna de la librera de comunicacin

A continuacin se listan los mtodos ms importantes de la clase USBComMP3,


que es la que encapsula todo el protocolo de comunicacin:
public
public
public
public
public
public
public
public
public
public
public
public
public
public
public

bool
bool
bool
bool
bool
bool
bool
bool
bool
bool
bool
bool
void
void
void

DIRGotoRoot()
DIRList(bool Prioritario)
DIRGotoDir(short position, bool Prioritario)
DIRGetFile(short position)
PlayFile(short position)
Play_Stop()
Play_Pause()
VS_HardReset()
VS_SoftReset()
VS_SendData(byte [] data)
OP_Volumen(byte Volumen)
OP_ResetDevice()
PurgarRX()
PurgarTX()
PurgarColaEnvio()

135

La librera tambin incluye varias clases de ayuda para facilitar la utilizacin de


la clase de comunicacin, estas son:
FileInfo, que facilita la extraccin de los datos de un archivo a partir de los
datos de la entrada devueltos por el reproductor.
MP3FileSender, enva un archivo MP3 al reproductor para que sea reproducido
en tiempo real.
MP3NetStreamSender, enva al reproductor un flujo de datos MP3 descargado
de la red para su reproduccin en tiempo real.

5.5 Modos de reproduccin


5.5.1 Introduccin
En los reproductores de MP3 comunes las aplicaciones permiten tan solo un
acceso a los archivos almacenados en la memoria interna del reproductor pero no
permiten su control de forma remota. En este caso, adems del acceso a la estructura de
directorios y la descarga de archivos, la aplicacin permite un control remoto muy
completo del reproductor, pudindose reproducir tanto archivos almacenados en el propio
reproductor, como enviarse un flujo de datos MP3 desde el ordenador para su
reproduccin en tiempo real.
5.5.1 Reproduccin remota de archivos en el reproductor
La reproduccin remota de archivos en el reproductor hace referencia al control
de la reproduccin en el propio dispositivo de archivos que se encuentran en la memoria
MMC. En la Imagen 5.3 se puede ver una captura de la ventana de control de
reproduccin de la aplicacin. Es el mtodo ms sencillo y consiste bsicamente en
sustituir las rdenes procedentes de la botonera por los comandos enviados por la
aplicacin. El proceso es el siguiente:

1. Se inicializa la comunicacin (si no se ha inicializado an)


2. Mediante la clase USBComMP3 se navega por la estructura de directorios
hasta el directorio donde se encuentra el archivo que se desea reproducir.
3. Se realiza una llamada al mtodo PlayFile con la posicin del archivo dentro
del directorio, y el reproductor comienza su reproduccin.
4. Si se desea detener o pausar la reproduccin se utilizan los mtodos Play_Stop
y Play_Pause.

Imagen 5.3 Reproduccin remota de archivos en el reproductor.

136

5.5.2 Reproduccin remota de archivos en el ordenador


El reproductor permite reproducir un flujo de datos enviado desde la aplicacin
sin necesidad de almacenarlos en la memoria, por tanto es posible reproducir un archivo
MP3 almacenado en el ordenador directamente en el reproductor. En la Imagen 5.4 se
pueden ver los controles y la lista de reproduccin de los archivos almacenados en el
ordenador que son reproducidos en el reproductor. El proceso es el siguiente:

1. Se inicializa la comunicacin (si no se ha inicializado an)


2. Se instancia la clase MP3FileSender con la ruta del archivo a enviar. Esta clase
utiliza los mtodos VS_HardReset, VS_SoftReset y VS_SendData de la clase
USBComMP3 para actuar directamente sobre el chip decodificador.
3. Para detener la reproduccin se utiliza el mtodo Stop de la clase
MP3FileSender.

Imagen 5.4 Reproduccin remota de archivos en el PC

5.5.3 Reproduccin local de archivos en el reproductor


La aplicacin permite tambin reproducir en tiempo real en el ordenador archivos
MP3 almacenados en la memoria MMC del reproductor sin necesidad de almacenarlos
previamente en el disco duro. Para ello utiliza los mtodos de descarga de archivo pero
enva los datos a una librera de reproduccin de MP3 en vez de almacenarlos en disco. El
proceso de reproduccin es el siguiente:
137

1. Se inicializa la comunicacin (si no se ha inicializado an)


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 mtodo DIRGetFile con la posicin 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 librera que se encargue de su reproduccin.
La librera utilizada para la reproduccin local de archivos MP3 es BASS, una
librera de audio muy completa y gratuita para uso no comercial. Debido a que la librera
no est desarrollada para .NET se ha utilizado un wrapper para acceder a su interfaz desde
la aplicacin. En la Imagen 5.5 se muestra el control del reproductor local (en la
aplicacin) y el listado de archivos en la carpeta que se est reproduciendo.

Imagen 5.5 Reproduccin local de archivos remotos.

5.5.4 Reproduccin remota de streams de internet


La opcin de reproducir flujos de datos MP3 procedentes de internet es similar a
la reproduccin remota de archivos en el ordenador. La nica diferencia es que la fuente
del flujo de datos no es un archivo almacenado en el disco duro, sino un archivo remoto o
un flujo de datos obtenido de internet. En este caso la clase utilizada es
MP3NetStreamSender que, al igual que MP3FileSender, extiende la clase
MP3SreamSender la cual se encarga realmente de la interaccin con el reproductor,
envindole los datos de un stream, ya sea de un archivo local o descargado de la red. El
proceso es el siguiente:

138

1. Se inicializa la comunicacin (si no se ha inicializado an)


2. Se instancia la clase MP3NetStreamSender con la direccin URL del archivo o
stream de audio a enviar.
3. Para detener la reproduccin se utiliza el mtodo Stop.

5.6 Podcasting y streaming a travs de internet


5.6.1 Introduccin
El streaming es una tecnologa que permite la emisin de contenidos
audiovisuales utilizando Internet, en este caso audio en formato MP3. Existen numerosas
emisoras de radio y otro tipo de contenidos de audio que utilizan el formato MP3 para
difundir sus contenidos en internet, ya sea una emisin realizada en tiempo real o en
diferido.
Se ha querido aprovechar esto para incluir una funcionalidad poco comn en los
reproductores porttiles, 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 aplicacin 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 aplicacin puede obtener segn el
tipo de fuente: los archivos MP3 almacenados en un servidor que son descargados y
enviados al reproductor segn se van descargando, y el flujo de datos enviado por un
servidor, por ejemplo de una radio.

5.6.2 Obtencin e identificacin del tipo de recurso


Se ha incluido en la aplicacin un navegador web que permite localizar y
descargar el flujo de datos MP3 que se van a reproducir. Cada vez que se hace clic en
algn enlace el navegador captura el enlace al que se va a acceder y comprueba si se trata
de un recurso conocido, de serlo cancela la navegacin a este enlace y efecta las acciones
necesarias para comenzar la descarga de los datos MP3 y envirselas al reproductor.
Los recursos reconocidos por la aplicacin son:
Archivos MP3, son detectados por su extensin 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 extensin o por el tipo MIME de los datos:
text/pls, audio/x-scpls, audio/mpegurl, audio/scpls o audio/x-mpegurl. Estos
archivos contienen informacin sobre un servidor que est emitiendo el flujo de
datos MP3.

139

Archivos XML, su extensin 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 transformacin de XML (XSLT) para tipos de
archivo podcast.

5.6.3 Streaming
Existen diferentes formas de hacer streaming o difusin de datos multimedia a
travs de internet. En el caso del audio MP3 los datos suelen ser transmitidos por un
servidor a travs del protocolo http indicando como tipo MIME de los datos: audio/mpeg,
audio/x-mpeg-3, audio/mpeg3, audio/mp3 o audio/mpg.
La forma en la que se anuncia en la web la direccin y el puerto donde se
encuentran el servidor que est transmitiendo los datos suele ser mediante un archivo PLS
(playlist o lista de reproduccin). Este archivo es abierto por el reproductor de msica
predeterminado en el ordenador cliente que obtiene la direccin y el puerto del servidor, el
ttulo de la cancin o flujo de datos, y el tamao del archivo (si es un flujo de datos el
tamao es -1)
Formato PLS
Los archivos PLS son archivos de texto que almacenan una lista de reproduccin,
ya sea de archivos locales, remotos o de servidores que emiten un flujo de datos. El
archivo est compuesto por una cabecera, un conjunto de entradas y un pie [PLSREF]43.
La cabecera est compuesta por dos lneas:
[playlist] (Indica el tipo de fichero)
NumberOfEntries=nmero (Indica el nmero de entradas en el fichero)
El formato de las entradas es el siguiente (X es el nmero de la entrada):
FileX=Direccin (Localizacin del fichero o flujo de datos)
TitleX=Ttulo (Ttulo de la pista)
LengthX=Tamao (Tamao en segundos. Si no est definido -1)
El pie del fichero es el siguiente:
Version=2 (Versin del fichero, actualmente 2)
A continuacin se muestra un ejemplo de fichero PLS:

42 Formato de archivo XML para la sindicacin o redifusin de contenidos.


43 No existe estndar oficial del formato PLS, pero es mpliamente conocido y est muy extendido.

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

El navegador web integrado en la aplicacin captura las direcciones de los


archivos PLS cuando se hace clic sobre ellos, los descarga y extrae la direccin del primer
servidor o MP3 que contiene, iniciando su reproduccin. Un archivo PLS utilizado para
publicar la direccin de una radio o flujo de audio similar contiene nicamente la entrada
que indica el servidor que ofrece el flujo de datos. Cuando se trata de emisiones con
mucha demanda pueden incluir otras entradas con servidores que ofrecen el mismo
contenido, por si el servidor principal ha alcanzado el lmite de cliente a los que puede
servir y est saturado. En cualquier caso la aplicacin solo utiliza la primera entrada.
Una de las principales opciones que ofrece la aplicacin para el acceso a stream
de audio descargados de internet es la web Shoutcast. La aplicacin contiene un enlace
directo a esta pgina web que ofrece cientos de emisoras de radio, una gran mayora en
formato MP3, y que permite diferentes opciones de bsqueda. En la Imagen 5.6 puede
verse la web cargada en el navegador integrado y sobre ella los controles de reproduccin.
Para reproducir una emisora tan solo hay que presionar el botn Tune In! que es un
enlace a un archivo PLS como el descrito.

Imagen 5.6 Reproduccin de audio de Shoutcast.

141

5.6.4 Podcasting
El podcast surgi de los trminos iPod y broadcast, el reproductor iPod de Apple
fue el primero en aceptar scripts para descargar contenido de la web que posteriormente
sera transferido al reproductor. Un podcast es un conjunto de archivos multimedia que se
distribuyen a travs de internet utilizando la sindicacin mediante archivos RSS o atom44.
La aplicacin, al igual que hace con los archivos PLS, captura y descarga los
archivos RSS. En esta ocasin muestra su contenido a travs del navegador web integrado
formateado mediante un fichero de transformaciones XSL (XSLT45) que lo transforma en
un archivo HTML con los enlaces a los elementos sindicados. En la Imagen 5.6 puede
verse un podcast de la universidad de Sevilla.

Imagen 5.6 Podcast cargado en el navegador de la aplicacin

Formato de archivo podcast


Los archivos podcast estn basados en las especificaciones RSS 2.0. Deben
incluir una serie de etiquetas determinadas que informan del contenido de cada uno de los
elementos sindicados [PODCASTREF].

44 Ambos son formatos de sindicacin de contenidos basados en XML.


45 Por motivos de extensin del presente documento no se va a explicar el funcionamiento y formato de los
archivos XSLT.

142

El archivo est compuesto por una etiqueta inicial '<channel>', dentro de esta se
sita la informacin 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 direccin del recurso, el tamao y su tipo: <enclosure
url="http://serv.com/recurso.mp3" length="5650889" type="audio/mpeg" />

A continuacin se muestra un ejemplo de archivo podcast:


<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
version="2.0">
<channel>
<title>Titulo del podcast</title>
<link>http://www.ejemplo.com/podcasts/index.html</link>
<itunes:subtitle>Subtitulo</itunes:subtitle>
<itunes:author>David Martin</itunes:author>
<itunes:summary>Informacion</itunes:summary>
<description>Descripcion</description>
<itunes:image href="http://ejemplo.com/podcasts/imagen.jpg" />
<item>
<title>Titulo 1</title>
<itunes:author>Autor</itunes:author>
<itunes:subtitle>Subtitulo 1</itunes:subtitle>
<itunes:summary>Resumen</itunes:summary>
<enclosure url="http://ejemplo.com/recurso.mp3" length="8727310"
type="audio/mpeg" />
<pubDate>Wed, 11 Jun 2008 19:00:00 GMT</pubDate>
<itunes:duration>7:04</itunes:duration>
</item>
<item>
<title>Titulo 2</title>
<itunes:author>Autor</itunes:author>
<itunes:subtitle>Subtitulo 2</itunes:subtitle>
<itunes:summary>Resumen</itunes:summary>
<enclosure url="http://ejemplo.com/recurso2.mp3" length="3727310"
type="audio/mpeg" />
<pubDate>Wed, 11 Jun 2008 19:05:00 GMT</pubDate>
<itunes:duration>3:04</itunes:duration>
</item>
</channel>
</rss>

Los archivos pueden contener gran cantidad de etiquetas y su implementacin


puede cambiar. Cada lector/reproductor de archivos podcast pueden aceptar un
subconjunto de estas etiquetas, ignorando el resto. No obstante se han indicado las ms
importantes y que se suelen incluir en todos los archivos.

143

5.6.5 Emisoras favoritas


Para almacenar la direccin de un conjunto de archivos y servidores de audio
mp3 se ha implementado en la aplicacin una opcin similar a la de favoritos de los
navegadores. De esta forma el usuario puede almacenar fcilmente las fuentes de sonido
que considere ms interesantes para escucharlas en un futuro.
En este caso es utiliza la interfaz grfica del navegador web integrado en la
aplicacin de forma que las fuentes aadidas al archivo de favoritos se almacenan
internamente en un archivo XML similar al de podcasting. Este archivo es transformado
por un archivo XSLT en un cdigo HTML legible por el navegador. Se han aadido
enlaces para borrar o aadir nuevas fuentes al listado, el evento generado al presionar
sobre estos enlaces es capturado por la aplicacin que muestra una ventana para eliminar
o aadir un nuevo elemento.
Se han creado dos listas de favoritos, una para los podcast favoritos y otra para las
radios favoritas; el listado de podcast favoritos puede verse en la IMG.

Imagen 5.7 Listado de Podcast favoritos

144

6. Presupuesto y planificacin
6.1 Introduccin
En esta seccin se van a detallar los costes econmicos derivados de la de
realizacin del presente proyecto. Para ello se han dividido los costes agrupndolos segn
la naturaleza de los mismos. Cabe destacar que estos costes corresponden a la realizacin
del prototipo y no corresponden al coste unitario de la produccin en serie del reproductor.
Los costes se han agrupado se la siguiente manera:
Software: aqu se incluye todo el software necesario para la realizacin del
proyecto, pero que no forma parte de l, como sistema operativo, programas
CAD, entornos de programacin, etc.
Herramientas: a este grupo pertenecen todas la herramientas (fsicas) que se han
utilizado para la realizacin del proyecto.
Componentes y fabricacin del PCB: se incluye el coste del circuito impreso y
todos los componentes que la componen.
Mano de obra: coste de los recursos humanos que han sido necesarios.

Por ltimo indicar que el coste de los componentes y materiales de esta seccin
corresponden a precios sin IVA.

6.2 Coste del software


El software utilizado para el desarrollo del sistema consta de sistema operativo,
herramienta CAD para el diseo del circuito impreso, compilador C para el firmware del
microcontrolador, entornos de desarrollo de C#, Microsoft .NET Framework SDK 2.0 y
otras aplicaciones para el diseo de iconos y grficos, tanto los mostrados por la pantalla
LCD como los de la aplicacin windows.
Se ha utilizado el sistemas operativo Windows XP para el desarrollo y pruebas del
proyecto, aun que tambin se ha podido probar su funcionamiento en Windows Vista. El
programa de CAD utilizado ha sido Eagle de Cadsoft, en concreto una versin gratuita
con limitacin a dos capas como mximo y al uso no comercial del diseo.
En cuanto a la programacin, el compilador utilizado para el firmware del
microcontrolador es PCWH de CSS, que tambin tiene una versin gratuita limitada, y
para la programacin de la libreras y la aplicacin Windows se han utilizado el entorno
Sharpdevelop 1.1 y el Visual Studio 2005. Gracias al proyecto DreamSpark de Microsoft
los estudiantes universitarios espaoles pueden obtener acceso gratuito a este software y
por tanto no se ha contabilizado su coste.
Las aplicaciones utilizadas para programar el microcontrolador han sido IC-Prog
y WinPic800, ambos gratuitos. La redaccin de esta memoria se realiza con la aplicacin,
tambin gratuita, Open Office.

145

Adems se han utilizado otras aplicaciones de carcter gratuito para tareas


menores, como el programa GIMP y FastLCD Designer, aunque por su poco uso y
carcter gratuito no se han aadido 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 nmero de proyectos que hagan uso de l y por tanto de la amortizacin de
cada uno.

6.3 Coste de las herramientas


Como herramientas se entiende todo el hardware utilizado para el desarrollo del
proyecto, tanto los ordenadores como herramientas para el montaje y testeo del circuito
impreso.
Para el desarrollo del proyecto se ha empleando un ordenador de sobremesa cuyas
principales caractersticas son las siguientes:
Procesador AMD Athlon 64 X2 3800+
Memoria RAM 2GB
Disco duro de 320 GB
Monitor 17''
Sistema operativo Windows XP

En cuanto a las herramientas para el montaje, testeo y programacin del circuito


se han utilizado:

146

Herramientas de soldadura: soldador, base del soldador, estao, 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
Polmetro.
Osciloscopio digital TekMeter THM550.
Programador JDM
Pilas recargables

Algunos elementos menores como pinzas para sujetar componentes, pinzas de


extraccin de chips, flexo para iluminar y similares no se han incluido. En la Tabla 6.2 se
lista el precio de cada uno de los elementos indicados. Como en el caso del software se
trata del precio ntegro de los elementos, el coste depende del uso que se haga de ellos en
otros proyectos y de su amortizacin.

Elemento

Precio

Ordenador de sobremesa

850

Herramientas de soldadura

40

Placa fotosensible y materiales de revelado/atacado

15

Microtaladro y brocas

15

Polmetro

10

Osciloscopio

250

Programador JDM

15

Pilas recargables

Total

1.200
Tabla 6.2 Precio de las herramientas

6.4 Coste de los componentes y PCB


Se han realizado dos prototipos de circuito impreso, el primero se realiz de
forma artesanal como se indica en el captulo del desarrollo hardware, el segundo tan
solo modifica el circuito de alimentacin del primer prototipo, y en esta ocasin se mand
fabricar la placa del circuito ya que se necesitaba un circuito de una mayor calidad.
Debido a la gran variedad de elementos discretos que se han utilizado en el
circuito algunos se han agrupado, este es el caso por ejemplo de los condensadores y
resistencias. Algunos elementos, como el mdulo USB, se han empleado en ambos
prototipos y no ha sido necesario adquirirlos por duplicado. Otros elementos, como el
microcontrolador, han sido conseguidos como muestras gratuitas. En la Tabla 6.3 se lista
el precio de todos los componentes.

147

Elemento

Precio

Placa de circuito impreso

45

PIC 18LF452

Pantalla LCD

12

Mdulo USB

18

Decodificador MP3 VS1001K

20

MAX1675

TC110

Tarjeta de memoria

18

Cable USB

2,50

Cristales de 20MHz y 14MHz

Condensadores

3,50

Resistencias

0,60

Inductancias

1,80

Diodos

0,60

Transistor Mosfet

0,50

Conector MMC

Conector de audio jack 3,5mm

0,30

Interruptor

0,20

Botones

Separadores hexagonales

Espadines

0,50

Zcalo para integrado de 40 pines

0,40

Portapilas 2 AA

0,50

Total

133,40
Tabla 6.3 Precio de componentes

6.5 Planificacin y mano de obra


Todas las tareas del presente proyecto han sido realizadas por el proyectista, no
obstante el coste de la mano de obra se van a dividir dependiendo de su tipo en coste
estimado de horas/hombre de ingeniero y de tcnico. El coste de la hora de ingeniero se ha
valorado en 20 /hora y el de tcnico en 12 /hora46.
En la Imagen 6.1 se presenta el diagrama de Gantt de la estimacin de la duracin
del proyecto integrando el tiempo, como si hubiese habido una dedicacin exclusiva a
ste. Desgraciadamente esto no ha sido posible debido a otras obligaciones acadmicas y,
sobre todo, laborales. Inicialmente se muestra la tarea de bsqueda bibliogrfica y
documentacin, no obstante la documentacin y la consulta de manuales de referencia y
especificaciones se ha realizado durante todas las partes del proyecto.

46 Valoracin obtenida a partir de las tablas salariales del convenio laboral de Empresas de ingeniera y
estudios tcnicos

148

Imagen 6.1 Diagrama de Gantt

149

Gran parte del desarrollo del firmware del microcontrolador se ha realizado


simultneamente con la aplicacin ya que tareas como la comunicacin comparten
elementos que hacen necesario su desarrollo y depuracin en paralelo. En la Tabla 6.4 se
muestra el nmero de horas de ingeniero y tcnico empleadas. No se han contabilizado
fines de semana. Las horas de tcnico corresponden a las tareas de montaje y testeo de las
placas de circuito impreso.
Personal
Ingeniero
Tcnico
Total

Horas/Hombre

Coste

1.350

27.000

50

600

1.400
27.600
Tabla 6.4 Valoracin del coste de mano de obra.

En la Tabla 6.5 se resumen el coste total del proyecto, no obstante hay que
recordar que los costes de software y herramientas utilizadas son los precios de los
mismos, y su coste real depende de los proyectos que se realicen con ellos y su
amortizacin.
Concepto
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

Coste

7. Conclusiones y trabajo futuro


7.1 Conclusiones
Despus de realizar las pruebas sobre el reproductor y aplicacin desarrollados se
puede concluir que se han cumplido los objetivos planteados al inicio del proyecto.
Se ha conseguido desarrollar con xito un circuito impreso microcontrolado capaz
de acceder al sistema de archivos FAT16 y reproducir archivos de audio en formato MP3
almacenados en una tarjeta de memoria Multimedia Card o Secure Digital. El interfaz de
usuario consta de una botonera para el control de reproductor y una pantalla grfica LCD
de 84x48 pxeles donde se muestra informacin del archivo en reproduccin extrada de la
etiqueta ID3. El reproductor permite adems comunicarse con una aplicacin en un
ordenador mediante el interfaz USB, esta aplicacin puede controlar por completo el
reproductor, acceder al sistema de archivos y descargar archivos almacenados en la tarjeta
de memoria. La aplicacin desarrollada permite el control de distintos modos de
reproduccin:
Reproduccin de archivos almacenados en la tarjeta de memoria.
Reproduccin en tiempo real (en el reproductor) de archivos almacenados en el
ordenador.
Reproduccin en tiempo real en la aplicacin de archivos almacenados en la
tarjeta de memoria.
Reproduccin de flujos de audio descargados de internet (como radios a travs
de internet y podcasting)

Se ha definido un protocolo de comunicacin entre el reproductor y la aplicacin,


y se ha implementado una librera DLL que encapsula el protocolo para poder desarrollar
ms fcilmente aplicaciones futuras.
Los elementos principales del reproductor desarrollado son:

Un microcontrolador PIC18LF452, uno de los ms potentes y con ms memoria


de su familia, debido a las necesidades del proyecto. No obstante se ha tenido
que optimizar tanto la velocidad de ejecucin del cdigo como su tamao para
garantizar una reproduccin sin cortes con archivos MP3 de tasas de bit altas.

La decodificacin del audio MP3 se ha realizado mediante el integrado


VS1001k, que incorpora adems un decodificador D/A y un pequeo
amplificador que permite conectarlo directamente a unos auriculares.

La comunicacin USB se ha realizado mediante el integrado FT245BM de


FTDI Chip, que proporciona unos drivers que facilitan la comunicacin. Debido
al tipo de encapsulado de este integrado, de difcil soldadura, se ha utilizado un
mdulo que facilita el desarrollo de prototipos al contener los elementos bsicos
que necesita y utilizar un formato DIP.

151

La pantalla LCD utilizada es una pantalla grfica monocromo de 84x48 pxeles


con un interfaz serie de tan solo ocho lneas y fcil de obtener, ya que se utiliza
en los telfonos mviles Nokia 3310.

La alimentacin, si no est conectada por USB a un ordenador, la proporcionan


dos pilas AA que hacen del reproductor un dispositivo porttil. Si el reproductor
est conectado por USB se deben utilizar pilas recargables ya que el
reproductor, adems de alimentarse por este puerto, recarga las pilas.

La tarjeta de memoria utilizada para el almacenamiento de los archivos MP3


puede ser tanto Multimedia Card como Secure Digital, ya que el protocolo
utilizado es compartido por ambas. Se pueden utilizar tarjetas de hasta 2GB y
han de estar formateadas en FAT16, que al ser un formato de archivos muy
difundido pueden ser ledas y escritas por casi cualquier dispositivo.

En definitiva se han cumplido los objetivos planteados al inicio del proyecto,


siendo un reproductor portable, con un interfaz de usuario fcil e intuitivo, capaz de cargar
las pilas mediante el puerto USB y ser controlado por completo mediante una aplicacin
que permite, adems de acceder al sistema de archivos de la memoria, la reproduccin
tanto de archivos almacenados localmente como de archivos almacenados en el ordenador
y flujos de datos descargados de internet en tiempo real.

7.2 Trabajo futuro


Adems de todas las funcionalidades incluidas tanto en el reproductor como en la
aplicacin, el uso tanto de una pantalla grfica como de una conexin USB que permite la
comunicacin con el reproductor, y no es simplemente un dispositivo de almacenamiento
masivo, ofrecen la posibilidad del desarrollo de ms funcionalidades.
Un ejemplo de las mejoras futuras que se proponen son:

152

Permitir la grabacin de archivos desde el PC.

Aumentar los modos de reproduccin del reproductor, como por ejemplo:


reproduccin aleatoria dentro de un directorio, aleatoria en toda la memoria,
modo shuffle, etc.

Posibilidad de crear listas de reproduccin.

Aadir funciones de karaoke, que muestren la letra de la cancin en la pantalla


grfica a partir de un archivo con los tiempos.

Desarrollar, a partir de la librera de comunicaciones, un servicio que permita el


control del reproductor de forma remota, como una pgina web o desde una
aplicacin en una PDA. Esto puede ser interesante si, por ejemplo, se desea
conectar el reproductor a un sistema de hilo musical y controlar de forma
remota lo que se est reproduciendo.

Permitir la grabacin de audio en formato MP3, para ello habra que cambiar el
integrado de decodificacin de MP3 por otro que permita tambin la
codificacin (por ejemplo el MAS3587F)

153

APNDICE I Manual de usuario


1. Introduccin
El reproductor de msica utiliza memorias Multimedia Card o Secure Digital para
almacenar los archivos de audio en formato MP3.
Las caractersticas principales son las siguientes:
Reproduccin de archivos de audio MP3.
Soporte ID3 versin 1 y 2.
Almacenamiento en memoria Multimedia Card o Secure Digital
Navegacin por el rbol de directorios
Pantalla grfica LCD monocromo de 84x48 pxeles
Seis botones
Conexin al ordenador mediante USB
Aplicacin para el control del reproductor desde el ordenador.
Descarga de archivos Reproductor->PC
Reproduccin directa de archivos almacenados en el ordenador
Reproduccin en la aplicacin de archivos almacenados en la tarjeta de
memoria.
Reproduccin de radio a travs de internet.

2. Especificaciones tcnicas
A continuacin se listan las especificaciones del reproductor:

Decodificacin

Tarjeta de memoria
Sistema de archivos
Pantalla
Alimentacin
Interfaz USB
Resolucin del DAC
Canales
Respuesta en frecuencia
47
Rango dinmico
Relacin Seal/Ruido
Salida de audio
48
Consumo

Autonoma49

: Audio MPEG 1/2 Layer 3


CBR y VBR
Hasta 320 kbps
: Multimedia Card y Secure Digital
: FAT16
: LCD monocromo de 84x48 pieles
: 2 pilas AA
: Compatible con USB 1.1 y 2.0
: 16 bits
: Estreo
: 20 Hz 20KHz
: 90 db
: 87 db
: Mini-Jack 3 (Auriculares/Salida en linea)
: 100 mA (de las pilas)
: 300 mA (del USB si est cargando las pilas)
: 18 horas

47 Datos de rango dinmico y relacin S/R segn especificaciones del decodificador de MP3.
48 Consumo mximo en reproduccin, depende de varios factores, como el volumen del audio.
49 Autonoma aproximada, depende principalmente de la capacidad de las pilas.

154

3. Requisitos del sistema


Los requisitos del sistema son:
Sistema operativo Windows 98 / ME / 2000 / XP / Vista
Framework .NET 2.0
Un puerto USB libre.
Lector CD/DVD para la instalacin de los drivers y la aplicacin.
Se recomienda tarjeta de sonido, para la reproduccin local.
Conexin a internet, para reproducir radio a travs de internet y podcasting.

4. Reproductor
4.1 Vista general y controles

Imagen I.1 Visin general del reproductor

155

En la Imagen I.1 puede verse una visin general del reproductor, en la que
destacan lo siguientes elementos:
Botonera, compuesta de 6 botones (subir volumen, bajar volumen,
opciones/archivos, anterior, reproducir/pausar y siguiente)
Pantalla LCD
Pilas, dos pilas AA.
Conector USB
Interruptor de encendido/apagado
Conector de salida de audio.
Jumpers auriculares/salida en lnea, seleccionan si en la salida de audio se van a
conectar unos auriculares (jumpers conectados) o se va a usar de salida en lnea
(jumpers sin conectar).
Tarjeta de memoria, del tipo Multimedia Card o Secure Digital.

En la Imagen I.2 se muestra la funcin de cada botn de la botonera.

Imagen I.2 Detalles de la botonera

Los botones pueden variar la funcionalidad segn la pantalla en la que se


encuentre en cada momento. Los botones de subir y bajar volumen son los nicos que
mantienen una funcionalidad en todo momento. Las funcionalidades del resto de botones
son las siguientes:
Opciones/Archivos: cuando el reproductor est parado este botn sirve para
entrar en la pantalla del listado de archivos. Cuando est en reproduccin se
utiliza para entrar en el men de opciones de sonido.
Anterior: dentro de la pantalla del listado de archivos sirve para seleccionar el
archivo anterior, mientras que en la de opciones la opcin anterior. Si el
reproductor se encuentra reproduciendo pasa a reproducir el archivo de audio
anterior.

156

Siguiente: equivalente al botn anterior, selecciona el archivo o la opcin


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 opcin seleccionada. Si se est reproduciendo un
archivo, sirve para pausar o para detener la reproduccin (si se mantiene el
botn presionado un par de segundos)

4.2 Alimentacin y recarga de pilas


El reproductor utiliza pilas de tipo AA, tanto recargables como no recargables. Si
se utilizan pilas no recargables es importante extraerlas antes de conectar el reproductor al
puerto USB, de lo contrario se podran daar tanto las pilas como el reproductor.
Cuando el reproductor est conectado mediante el puerto USB a un ordenador
ste le suministra la alimentacin necesaria para funcionar y adems carga las pilas
recargables, en caso de estar conectadas. Para la recarga de pilas es necesario que el
interruptor de encendido est en posicin de encendido, en ese momento el reproductor
comenzar la recarga de las pilas tanto si est en uso como si no (el ordenador debe estar
encendido).
Hay que recordar que el reproductor no es un cargador de pilas y posee un
circuito de carga muy bsico. Es recomendable cargar las pilas en un cargador
convencional si se dispone de l. En caso de no estar disponible el reproductor puede
usarse para recargar pilas de tipo NiMH y NiCd de 1.5 voltios. El tiempo de carga
depender de la capacidad de las pilas, para unas pilas de 1800mAh el tiempo de carga es
de 8 horas. Es aconsejable no reproducir a la vez que se realiza la carga, de lo contrario el
tiempo de carga aumenta.
Durante el tiempo que el reproductor est conectado al puerto USB de un
ordenador alguno componentes del circuito pueden calentarse, esto es normal. Hay que
evitar tocar los elementos del circuito cuando ste est cargando las pilas.

4.3 Pantalla LCD


La pantalla LCD muestra tres pantallas principales dependiendo del estado del
reproductor, estas son: pantalla de espera o reproduccin (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.

Imagen I.4 Pantalla del listado de archivos

Imagen I.5 Pantalla del listado de opciones

Durante la reproduccin de un archivo MP3 en la pantalla aparece informacin


tanto del formato del archivo como del contenido, ledo de la etiqueta ID3. Si el archivo
no posee una etiqueta ID3 aparece el nombre del archivo. En la Imagen I.6 aparece
detallada la informacin que puede verse durante la reproduccin.
A continuacin se explican cada uno de los elementos que aparecen en la
pantalla:
158

El icono
indica que estamos escuchando un archivo MP3.
El icono
indica el modo de reproduccin, en este caso normal (reproduccin
de los archivos segn el orden en el directorio).
A continuacin 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 nmero 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 estreo
o monofnico. Si el archivo es estreo aparece el icono
, si es monofnico
aparece . Si est activada la opcin differential y el archivo es estreo 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 opcin de realce de bajos o no.
En la siguiente lnea aparece el nmero del archivo dentro del directorio, el
tiempo de reproduccin y un grfico de barras que indican el nivel del volumen.
En las tres siguiente lneas aparece la informacin extrada de la etiqueta ID3
del archivo. En las dos primeras lneas aparece el ttulo de la cancin, y en la
siguiente aparece el autor y el lbum entre parntesis, mediante un texto
deslizante.

Imagen I.6 Descripcin de la informacin en pantalla

4.4 Utilizacin
Antes de empezar a utilizar el reproductor hay que asegurarse de que la tarjeta de
memoria est insertada y no extraerla mientras est encendido. Se han de utilizar pilas de
tamao AA, si se va a conectar el reproductor al puerto USB del ordenador estas han de
ser recargables. El reproductor puede utilizarse sin pilas si est conectado al puerto USB,
ya que se alimenta de ste.

159

Reproduccin de un archivo
Una vez encendido el reproductor la pantalla muestra la apariencia de la Imagen
I.3. En este momento se puede presionar el botn de Reproducir para comenzar la
reproduccin del primer archivo MP3 del directorio raz.
Si se desea reproducir un archivo en concreto se puede seleccionar accediendo a
la lista de archivos. Para ello se ha de presionar el botn Opciones/Archivos, sto abrir
un navegador que permite acceder al rbol de directorios y archivos de la memoria
(Imagen I.4). Los botones Siguiente y Anterior cambian el elemento seleccionado, y
el botn Reproducir inicia su reproduccin en caso de que se trate de un archivo MP3.
En caso de que el elemento seleccionado sea un directorio el botn Reproducir entra
dentro de l.
Cuando finaliza la reproduccin de un archivo comienza a reproducirse el
siguiente archivo dentro del directorio, en caso de tratarse del ltimo archivo dentro del
directorio finaliza la reproduccin.
Controles de reproduccin
Durante la reproduccin se puede cambiar de archivo presionando los botones
Siguiente y Anterior, que inician la reproduccin de los archivos siguiente y anterior
respectivamente del archivo en ese momento en reproduccin.
Para pausar la reproduccin se ha de presionar el botn Reproducir una vez,
esto pausa la reproduccin y permite retomarla en el punto en el que se ha quedado. Para
volver a retomar la reproduccin hay que presionar de nuevo el botn Reproducir.
Si se desea detener totalmente la reproduccin de un archivo se ha de presionar de
forma continuada el botn Reproducir durante un par de segundos.
Control de volumen
Para aumentar o disminuir el volumen de audio del reproductor se ha de presionar
los botones Subir volumen o Bajar volumen. No es necesario que el reproductor est
reproduciendo para cambiar el nivel de volumen. Los cambio realizados se almacenan de
forma que sern recordados la prxima vez que se encienda el reproductor.
El nivel del volumen puede verse en la pantalla representado por un conjunto de
barras, como poda verse en la Imagen I.6.
Men de opciones
Para entrar en el men de opciones se debe presionar el botn
Opciones/Archivo durante la reproduccin de un archivo. El men de opciones puede
verse en la Imagen I.5, las opciones son: BASS, Virtual Surround y Reproduccin

160

Normal50. Al igual que con el listado de archivos, se utilizan los botones Siguiente y
Anterior para cambiar el elemento seleccionado, y el botn Reproducir para activar o
desactivar la opcin. Para salir del men de opciones sin efectuar ningn cambio se
presiona de nuevo el botn Opciones/Archivo.
El icono delante del nombre de la opcin indica si sta est activada o
desactivada. En caso de estar activada aparece el icono
y si est desactivada
.

5 Aplicacin
5.1 Instalacin
Antes de iniciar la instalacin de la aplicacin de control del reproductor MP3
han de estar instaladas una serie de drivers y libreras.
Instalacin de Microsoft .NET Framework 2.0
En primer lugar se ha de instalar el .NET Framework 2.0 de Microsoft que se
encuentra en el CD de instalacin adjunto o se puede descargar la la pgina web de
Microsoft:
http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-43624b0d-8edd-aab15c5e04f5&displaylang=es

Una vez descargado el programa de instalacin de Microsoft .NET Framework


2.0 se ejecuta y se siguen los pasos indicados durante el proceso de instalacin, que puede
durar varios minutos. Para ms informacin sobre la instalacin de Microsoft .NET
Framework 2.0 acudir a la web anteriormente mencionada o ponerse en contacto con el
servicio tcnico de Microsoft.
Instalacin de los controladores de USB
El CD de instalacin adjunto incluye un instalador de los drivers de USB
necesarios que se han de instalar antes de la aplicacin de control. Despus de ejecutar el
programa de instalacin ste instala automticamente todos los drivers necesarios sin
necesidad de realizar ninguna accin. En la Imagen I.7 puede verse la ventana de
instalacin.

50 Solo est disponible el modo de reproduccin normal, en futuras actualizaciones pueden incluirse otros
modos de reproduccin, como el aleatorio.

161

Imagen I.7 Ventana de instalacin del driver de USB.

Instalacin de la aplicacin
Una vez instalado el Framework .NET y los drivers del controlador USB se puede
proceder a la instalacin de la aplicacin. Para ello se ejecuta el archivo de instalacin y
se siguen los pasos indicados. Se trata de una instalacin estndar, las ventanas del
proceso de instalacin pueden verse en las imgenes: Imagen I.8, Imagen I.9, Imagen I.10
y Imagen I.11.

Imagen I.8 Asistente de instalacin de la aplicacin 1.

162

Imagen I.9 Asistente de instalacin de la aplicacin 2.

Imagen I.10 Asistente de instalacin de la aplicacin 3.

Imagen I.11 Asistente de instalacin de la aplicacin 4.

163

5.2 Ventana principal


Antes de iniciar la aplicacin el reproductor ha de estar encendido y conectado a
un puerto USB del ordenador. Durante el arranque la aplicacin muestra una ventana
como la de la Imagen I.12, indicando el paso de iniciacin de la comunicacin en el que
se encuentra.

Imagen I.12 Iniciacin de comunicacin.

Una vez iniciada la comunicacin se mostrar la ventana principal de la


aplicacin, que consta de dos regiones principales como puede verse en la Imagen I.13. La
parte izquierda de la ventana es un men en forma de rbol que permite seleccionar la
accin que se desea realizar. En la parte derecha o zona principal se muestran los
controles principales de la aplicacin y su contenido variar dependiendo de la accin
seleccionada en el men izquierdo. Para facilitar el uso de la aplicacin el interfaz simula
una ventana del explorador de Windows, tanto en su apariencia como en sus utilizacin.

Imagen I.13 Regiones principales de la aplicacin.

164

5.3 Contenido de la tarjeta de memoria


Despus de iniciar la comunicacin el men tiene seleccionada la opcin de
Reproductor\Memoria, esta opcin muestra en la zona principal el listado de carpetas y
archivos que contiene el reproductor de forma similar a como se muestra en el explorador
de Windows, como muestra la Imagen I.14. La navegacin entre carpetas es muy sencilla,
tan solo hay que hacer doble clic sobre la carpeta a la que se quiere acceder.

Imagen I.14 Contenido de la tarjeta de memoria

Para descargar un archivo de la tarjeta de memoria al ordenador ha de arrastrarlo


y soltarlo sobre la ventana de la carpeta donde se desea copiar, tal y como se hace con el
explorador de Windows. Al hacerlo aparecer una ventana que muestra la progresin de la
descarga, tal y como muestra la Imagen I.15.

Imagen I.15 Ventana de copia de un archivo.

5.4 Reproduccin de archivos en la tarjeta de memoria


Para reproducir en el reproductor un archivo que se encuentre en la tarjeta de
memoria hay que acceder primero al listado de archivos de la tarjeta (opcin
Reproductor\Memoria), una vez en l se selecciona el archivo que se desea reproducir y
se presiona el botn derecho del ratn. Aparecer un men como el de la Imagen I.16, se
selecciona la opcin Reproduccin remota.
165

Imagen I.16 Opcin Reproduccin remota.

Esto abrir una ventana en la aplicacin simulando un reproductor, con los


controles tpicos (Imagen I.17), adems de un listado de los archivos del directorio donde
se est reproduciendo, que permite iniciar la reproduccin de otro archivo del mismo
directorio.

Imagen I.17 Reproduccin remota de archivos en la tarjeta.

5.5 Reproduccin en la aplicacin de archivos de la memoria


La aplicacin permite reproducir en el ordenador archivos almacenados en la
memoria del reproductor. Para ello hay que seguir los mismos pasos que en la
reproduccin de archivos en el reproductor, pero en este caso seleccionar la opcin
Reproduccin local del men (Imagen I.18).

Imagen I.18 Opcin Reproduccin local.

Esto abre en la aplicacin una ventana con un reproductor con los controles
bsicos de reproduccin y un pequeo 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.

5.6 Reproduccin de archivos almacenados en el PC


El reproductor tambin es capaz de reproducir archivos almacenados en el
ordenador sin necesidad de ser grabados en la tarjeta de memoria. Para ello hay se
seleccionar en el men de la izquierda la opcin Reproductor\Lista de reproduccin. En
la zona principal aparece la lista de los archivos MP3 que se van a reproducir, y sobre este
listado un pequeo control de reproduccin, tal y como se muestra en la Imagen I.20.

Imagen I.20 Lista de reproduccin

167

Para aadir archivos a la lista de reproduccin tan solo hay que arrastrar los
archivos deseados de una ventana del explorador a la aplicacin. Se pueden aadir tanto
archivos MP3 como archivos PLS (listas de reproduccin) como se muestra en la Imagen
I.21.

Imagen I.21 Aadiendo archivos al listado de reproduccin

Adems la lista de reproduccin puede ser exportada a un archivo PLS, as esta


misma lista puede ser utilizada en el futuro, tanto por la aplicacin como por otros
programas que lean este formato de archivo (por ejemplo el Winamp). Para hacer esto hay
que pulsar sobre el botn rojo del control de reproduccin.
Para reproducir un archivo hay que hacer doble clic sobre l o seleccionarlo y
presionar el botn de reproduccin del control de reproduccin superior. El archivo en
reproduccin se mostrar con un icono de color verde a su izquierda, y los dems con un
icono de color rojo, tal y como se muestra en la Imagen I.22. Cuando finaliza la
reproduccin de un archivo comienza la reproduccin del siguiente de la lista.

Imagen I.22 Detalle de los iconos del estado del archivo

5.7 Streaming
El reproductor permite reproducir flujos de datos MP3 descargados de internet
directamente, sin necesidad de ser almacenados ni en el ordenador ni en la tarjeta de
memoria. Estos pueden ser archivos MP3 (podcast por ejemplo) o flujos de datos
transmitidos en tiempo real, como una radio a travs de internet. Para ello hay que
seleccionar una de las opciones del men dentro de la seccin Streaming. Existen dos
subsecciones dentro de Streaming: Podcasting e Internet Radio.
Podcasting
Dentro de la subseccin Podcasting se encuentra la opcin Podcasters
Favoritos, aqu se guardan una lista de las direcciones de podcasting favoritas del
168

usuario. En la Imagen I.23 puede verse la apariencia de la lista, que contiene enlaces para
borrar y aadir direcciones.

Imagen I.23 Podcast Favoritos

Al presionar sobre el ttulo de una direccin guardada se carga en el explorador


de internet integrado en la aplicacin la pgina web de dicha direccin. Una vez en la
pgina web se puede navegar por sta, al igual que en un navegador web habitual, con la
peculiaridad que al presionar enlaces cuyos contenidos sean archivos MP3 estos sern
reproducidos en el reproductor. La reproduccin puede controlarse con los controles que
se encuentran sobre el navegador web. Puede verse un ejemplo en la Imagen I.24.

Imagen I.24 Contenido de un Podcast.

169

Internet Radio
Adems de archivos MP3 la aplicacin puede mandar al reproductor flujos de
audio en formato MP3 que descarga de la red a partir de fuentes que transmiten el
contenido en tiempo real, como son las radios. El funcionamiento es similar al del
Podcasting, pero esta vez los enlaces no apuntan a archivos MP3 sino a servidores que
transmiten dicho contenido o a archivos PLS (listas de reproduccin) que contienen la
direccin de dichos servidores.
Dentro de la subseccin Internet Radio hay dos opciones:
ShoutCast: Pgina 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 direccin del servidor o archivo PLS de la radio en cuestin.

Ambas opciones funcionan de manera similar a la opcin Poscasters Favoritos,


cargando el contenido del enlace en el navegador web integrado. La reproduccin se
controla con los botones que se encuentran sobre el navegador web. En la Imagen I.25
puede verse la pgina web de SHOUTcast.

Imagen I.25 Pgina web de SHOUTcast.

170

APNDICE II Estructura de FAT16


II.1 Introduccin
En este apndice se va a detallar la estructura del sistema de archivos FAT16 que
se ha utilizado en el presente proyecto. A partir de la informacin aqu descrita se ha
desarrollado la librera para el microcontrolador que fue explicada en el captulo de
Firmware.

II.2 Estructura de FAT16


En el primer sector del disco se encuentra el Master Boot Record (MBR) que a su
vez guarda informacin de donde se encuentran cada una de las particiones del disco 51. Es
el primer sector que se debe leer antes de poder acceder a una particin.
II.2.1 Master Boot Record
Es la estructura ms importante en un disco y se crea cuando ste es particionado.
Contiene una pequea cantidad de cdigo ejecutable, llamado cdigo de arranque
maestro, la firma del disco y las tablas de particin del disco. Se puede ver la estructura en
la Tabla II.1.

Posicin

Descripcin

Tamao

0x000

Cdigo ejecutable

446 bytes

0x1BE

1 Particin

16 bytes

0x1CE

2 Particin

16 bytes

0x1DE

3 Particin

16 bytes

0x1EE

4 Particin

16 bytes

0x1FE

Firma de la unidad (0x55AA)


Tabla II.1 Estructura del Master Boot Record

2 bytes

Lo primero que se debe hacer es localizar la posicin de la primera particin, que


es donde se van a alojar los archivos y con la que se va a trabajar. Como se puede
observar en la Tabla II.1 la informacin para localizar la primera particin se encuentra en
la posicin 0x1BE dentro del MBR, la estructura de este campo se puede ver en la Tabla
II.2, gracias a estos datos se puede localizar el principio y fin de la particin, el tipo de
particin y su tamao.

51 Se utilizar 'disco' de manera genrica, ya que la estructura es igual tanto en discos duros como en
tarjetas de memoria.

171

Posicin
relativa

Descripcin

Tamao

0x00

Estado de la particin (0x00=desactivo; 0x80=activo)

1 byte

0x01

Cabezal de inicio de la particin

1 byte

0x02

Cilindro/Sector de inicio de la particin


(10 bits indican el cilintro y 6 el sector)

2 bytes

0x04

Tipo de particin
(0x04=FAT16 de menos de 32MB; 0x08=FAT16 de ms de
32MB)

1 byte

0x05

Cabezal de fin de la particin

1 byte

0x06

Cilindro/Sector de fin la particin


(10 bits indican el cilindro y 6 el sector)

2 bytes

0x08

Nmero de sectores entre el principio del disco y el principio de


la particin

4 bytes

0x0C

Nmero total de sectores de la particin


Tabla II.2 Estructura del registro de particin en el MBR

4 bytes

II.2.2 Sector de arranque de la particin


La estructura de una particin FAT16 se compone de cuatro partes: el sector de
arranque de la particin, dos copias de la tabla de particin, el directorio raz y el rea de
datos, tal y como aparece en la Imagen II.1.

Imagen II.1 Estructura de una particin FAT16

El sector de arranque es el primer sector en la particin y su estructura depende


del tipo de particin del que se trate. La estructura del sector de arranque de FAT16 se
puede ver en la Tabla II.3.

172

Posicin
relativa

Descripcin

Tamao

0x00

Cdigo 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

Nmeros de copias de FAT

1 byte

0x11

Nmero mximo de entradas en el directorio raz

2 bytes

0x13

Nmero de sectores en la particin

2 bytes

0x15

Descripcin del medio

1 byte

0x16

Sectores por FAT

2 bytes

0x18

Sectores por pista

2 bytes

0x1A

Nmero de cabezales

2 bytes

0x1C

Nmero de sectores ocultos en la particin

4 bytes

0x20

Nmero de sectores en la particin

4 bytes

0x24

Nmero de la unidad lgica de la particin

2 bytes

0x26

Firma extendida (0x29)

1 byte

0x27

Nmero de serie de la particin

4 bytes

0x2B

Nombre de volumen de la particin

11 bytes

0x36

Nombre de la FAT (FAT16)

8 bytes

0x3E

Cdigo ejecutable

0x1FE

Marca fin de sector (0x55AA)


Tabla II.3 Estructura del sector de arranque de FAT16

448 bytes
2 bytes

Gracias a los datos que se pueden extraer del sector de arranque de la particin
podemos localizar las tablas de particin (FAT), el directorio raz y el rea de datos, as
como conocer diferentes parmetros importantes, como el tamao del sector, los sectores
por cluster, nmero de sectores, etc. En la Tabla II.4 se describe como calcular la posicin
de los diferentes elementos de la particin a partir de los datos extrados del sector de
arranque.

Elemento

Posicin

Sector de arranque

Inicio de la particin

Tablas FAT

Inicio + Nmero de sectores reservados

Directorio raz

Inicio + N sectores reservados + (N sectores por FAT * N FATs)

rea de datos

Posicin directorio raiz + ((Max N de entradas en el dir. Raz * 32) /


bytes por sector)
Tabla II.4 Clculo de la posicin de los elementos de una particin

Hay que recordar que todas estas posiciones hacen referencia a sectores, por tanto
hay que multiplicar por el nmero de bytes por sector para obtener la posicin en bytes.

173

II.2.3 Tabla de asignacin de archivos (FAT)


Los ficheros son alojados en disco divididos en pequeos fragmentos, cada uno
de estos fragmentos se almacenan en una unidad de asignacin o cluster en el rea de
datos. La tabla de asignacin de archivos utiliza una estructura encadenada donde cada
cluster apunta al siguiente, y permite enlazar cada una de las partes de los archivos
almacenados. La FAT se compone de un conjunto de celdas compuestas por 16 bytes, de
forma que existe una correspondencia entre las celda de la FAT y los clusters del rea de
datos.
Las dos primeras celdas de la FAT contiene informacin especial y no se utilizan,
por tanto se empieza utilizando la tercera celda. Cada celda contiene informacin sobre
cul es el siguiente cluster del fichero, el valor de la celda puede ser:

0x0002-0xFFEF El valor seala el nmero del siguiente cluster del

fichero.

0x0000 Cluster libre


0x0001 Valor no usado
0xFFF0-0xFFF6 Reservados
0xFFF7 Cluster errneo
0xFFF8-0xFFFF ltimo cluster del fichero

De esta forma se seala si un determinado cluster est en uso o no, y si lo est


cul es el siguiente cluster del archivo o si se trata del ltimo cluster. En la Imagen II.2
puede verse un ejemplo simple de FAT, donde se observan tres ficheros no fragmentados
de 3, 2 y 1 cluster. La informacin referente al nombre del archivo, primer cluster y otros
parmetros se encuentran en las secciones de directorio raz o en el rea de datos como
veremos posteriormente.

Imagen II.2 Ejemplo de tabla de asignacin

El tamao de cada cluster depende del tamao del disco y se obtiene del sector de
arranque de la particin. En la Tabla II.5 se muestran los tamaos de cluster asociados al
tamao de la particin.

174

Tamao de la particin

Sectores por cluster

Tamao del cluster

0 MB 32 MB

512 bytes

33 MB 64 MB

1 KB

65 MB 128 MB

2 KB

129 MB 255 MB

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 Tamaos de cluster segn tamao de particin

II.2.4 Directorio raz


Despus de las tablas FAT se encuentra el directorio raz, que contiene
informacin sobre los archivos y directorios que se encuentran en el directorio raz del
sistema de archivos. Cada archivo o directorio se representa como una entrada de 32 bytes
en la cual se almacena la informacin necesaria para acceder a dicho archivo.
Dependiendo del valor del primer byte de la entrada se puede saber si se trata de una
entrada vaca (0x00), con un archivo borrado (0xE5) o una entrada en uso (cualquier otro
valor). En la Tabla II.6 se puede ver la estructura de cada una de las entradas del
directorio.
Posicin

Tamao

Descripcin

0x00

8 bytes

Nombre del archivo

0x08

3 bytes

Extensin del archivo

0x0B

1 byte

Atributos

0x0C

10 bytes

Reservados

0x16

2 bytes

Hora de la ltima modificacin

0x18

2 bytes

Fecha de la ltima modificacin

0x1A

2 bytes

Cluster inicial

0x1C

4 bytes
Tamao del archivo (0 si se trata de un directorio)
Tabla II.6 Estructura de entrada de directorio

El byte de atributos est compuesto por un conjunto de bits, cada uno representa
un atributo que puede tener o no el archivo. Los atributos son:
Bits del 7-6: Reservados
Bit 5: Archivo. Si este bit es 1 significa que ha sido modificado desde la
ltima copia de seguridad.
Bit 4: Directorio. Es 1 si la entrada es de un directorio.
Bit 3: Nombre de volumen. El nombre del archivo es el nombre del
volumen.

175

Bit 2: Archivo del sistema.


Bit 1: Oculto.
Bit 0: Archivo de solo lectura.

La hora se codifica de la siguiente forma: los bits del 15-11 corresponden a la


hora, del 10-5 los minutos y del 4-0 los segundos (divididos entre 2). La fecha de codifica:
del 15-9 el ao (comenzando desde 1980), del 8-5 el mes y del 4-0 el da.
En caso de que la entrada se trate de un directorio los datos almacenados en el
cluster dentro de el rea de datos corresponden a una estructura equivalente a la descrita
en el directorio raz.
II.2.5 rea de datos
A continuacin del directorio raz se encuentra el rea de datos, que se compone
de un conjunto de clusters donde se guardan los fragmentos de los ficheros tal y como se
indica en la tabla de asignacin de archivos. Tambin se almacenan las estructuras de los
directorios en el caso de que se trate de un directorio en lugar de un archivo.

176

Bibliografa
[Aguayo04]

Paul Aguayo, Introduccin al Microcontrolador, Ingeniera LCI.

[AN232B02]

AN232B02 Application Notes "FT232BM/FT245BM Power


Control and Pin States". Future Technology Devices
International

[AN232B03]

AN232B-03 Application Notes "Optimising D2XX Data


Throughput". Future Technology Devices International

[AN232B04]

AN232B-04 Application Notes "Data Throughput, Latency &


Handshaking". Future Technology Devices International

[AN232B06]

AN232B-06 Application Notes "Debugging FT232BM and


FT245BM Based Designs". Future Technology Devices
International

[AN232B07]

AN232B-07 Application Notes "Configuring FTDI's VCP Drivers


to use Location IDs". Future Technology Devices International

[AN232R04]

AN232R-04 Application Notes "Windows Combined Driver


Model". Future Technology Devices International Ltd.

[Anderson01]

Don Anderson, USB System Architectur (USB 2.0), 2001.


MindShare, Inc. ISBN: 0-201-46137-4

[AmontecLCD]

Amontec. Nokia 3310 LCD.


http://www.amontec.com/lcd_nokia_3310.shtml

[Axelson05]

Jan Axelson, USB Complete, Tercera edidion 2005


Lakeview Research LLC, ISBN 978-1-931448-03-1

[Buchmann]

Isidor Buchmann, Batteries in a portable world, Segunda edicin.


Codex Electronics Inc.

[BZX85C]

Fairchild, Especificaciones del diodo zener BZX85C3V6, 2004

[DG245]

DG245 Application Notes "FT245BM Designers Guide". Future


Technology Devices International

[DLPUSB245M]

DLP Design. DLP-USB245M User Manual, 2002.

177

[Dobiash99]

Jack Dobiash, FAT16 Structure Information, 1999


http://home.teleport.com/~brainy/fat16.htm

[FraunHist]

Fraunhofer IIS, The MP3 History


http://www.iis.fraunhofer.de/EN/bf/amm/mp3history/mp3history01
.jsp

[FT245BM]

FT245BM Datasheet 1.8, 2005. Future Technology Devices


International

[FTDID2XX]

D2XX Programmer's Guide 3.4 (2006). Future Technology Devices


International

[Fujitsu00]

Soporte Tcnico OEM Fujitsu Espaa, Un paseo por USB-1, 2000.

[Hacker00]

Scot Hacker, MP3: The Definitive Guide, 2000.


Publisher: O'Relly, ISBN: 1-56592-661-7

[Harrison04]

Pete Harrison, Micromouse Information Centre - Battery Chargers.


2004.
http://micromouse.cannock.ac.uk/batteries/charging.htm

[HITACHI03]

Hitachi, Multimedia Card User's Manual, 2003

[Hung]

Hung-Chih Lai; Advisor: Dr. Jwo-Shen Hu, Real-Time


Implementation of MPEG-1 Layer 3 Audio Decoder on a DSP
Chip. Institute of Electrical and Control Engineering, National
Chiao-Tung University, Taiwan.

[ID3ORG]

Web oficial y especificaciones ID3


http://www.id3.org

[IEEE97]

IEEE, MPEG Digital Audio Coding, september 1997.


IEEE Signal Process Magazine, pag. 59-81. September 1997.

[Lagerstm01]

Krister Lagerstm, Design and Implementation of an MPEG-1


Layer III Audio Decoder, 2001. Master's Thesis, Computer Science
and Engineering Program.
Chalmers University of Technology, Gothenburg, Sweden.

[Linden02]

David Linden and Thomas B. Reddy, Handbook of batteries,


Tercera edicin 2002.
McGraw-Hill, ISBN 0-07-135978-8

[MAX1675]

Maxim, Especificaciones del regulador de tensin MAX1675,


2000

178

[Microsoft99]

Microsoft, FAT: General Overview of On-Disk Format, 1999

[MP3RefHist]

MP3 History - www.mp3reference.com


http://www.mp3reference.com/history.htm

[MPManReview]

MPManiac, Eiger Labs MPMan Review - Models F10 & F20,,


1999 http://business.fortunecity.com/tisch/493/MPManReview.htm

[Noll00]

Peter Noll, MPEG Digital Audio Coding Standars, 2000.


CRC Press LLC. Technical University of Berlin

[Pan93]

Davis Yen Pan, Digital Audio Compression, 1993.


Digital Technical Journal, Vol. 5 No. 2 Spring 1993

[Pan95]

Davis Yen Pan, A Tutorial on MPEG/Audio Compression


IEEE Multimedia, Summer 1995, pag. 60-74

[PCD8544]

Philips Semiconductors. PCD8544 48x84 pixels matrix LCD


controller/driver, 1999.

[PIC18FXX2]

Microchip Technology, PIC18FXX2 Datasheet

[PJB100]

PJB-100 Info Site


http://www.mpython.com/pjb/index.htm

[PLSREF]

Especificaciones del formato PLS


http://developer.apple.com/documentation/QuickTime/QT6Whats
New/Chap1/chapter_1_section_58.html

[PODCASTREF]

Especificaciones del formato Podcast


http://www.apple.com/itunes/store/podcaststechspecs.html

[Samsung]

Samsung Semiconductors, NAND Flash


http://www.samsung.com/global/business/semiconductor/products/
flash/Products_NANDFlash.html

[Samsung04]

Samsung, Multimedia Card Specification, 2004

[SanDisk03]

SanDisk, Multimedia Card Product Manual, 2003

[TC115]

Microchip, Especificaciones del regulador de tensin TC115, 2003

[VargasDuque01]

Alexander Vargas y Alejandro Duque, Codificador MP3 en


Matlab, 2001. Universidad Pontificia Bolivariana de Medelln,
Colombia. http://members.fortunecity.com/alex1944/index.html

179

[VS1001K]

VSLI Solution, VS1001K Datasheet 4.14, 2004

[VS10XXANOUT] VSLI Solution, VS10XX AppNote: Connecting analog outputs, Rev


1.22, 2006
[ZXM61P03F]

180

Zetex, Especificaciones del MOSFET de canal P ZXM61P03, 1999

También podría gustarte