Memoria flash y su uso en el microcontrolador MSP430F149 Universidad Técnica Federico Santa María Departamento de Electrónica Seminario de Computadores I: Diseño con microcontroladores Memoria flash y su uso en el microcontrolador MSP430F149 Grupo 1: Tamara Ramírez - Jaime Díaz - Francisco Villa - Juan Espoz – Luis Ehlen – Josey Avilés viernes, 16 de noviembre de 2018viernes, 16 de noviembre de 2018
Aspectos Básicos Tipos de memoria conocidas: - ROM - PROM - EPROM - EEPROM - RAM - FLASH
Características y contrastes La Flash no es volátil, a diferencia de las RAM. Es regrabable, a diferencia de las ROM y PROM. Capaz de almacenar gran cantidad de información en poco espacio físico, contrario a las EEPROM. Bajo consumo de potencia, no como las RAM. Son mas rápidas que una EEPROM pero no mas que una RAM. Sus precios son bastante convenientes en relación a una EEPROM o una RAM. En la Flash es posible eliminar bloques de información a diferencia de la EEPROM en donde esta debe ser eliminada bit a bit.
Segmentación de la flash La memoria flash está particionada en segmentos. El segmento es la medida más pequeña que se puede borrar. La memoria está dividida en memoria principal y memoria de información.
Operación de la flash Por defecto la flash se encuentra en el modo de lectura. Opera sin un voltaje externo adicional. La CPU puede programar su propia flash. Posee 3 modos de borrado y 2 de escritura.
Temporizador Las operaciones de borrado y escritura son controladas por el temporizador. El temporizador opera en el rango de 257 kHz a 476 kHz. La señal de reloj puede ser seleccionada desde las fuentes ACLK, SMCLK o MCLK. La señal de reloj también puede ser dividida hasta 64 veces para reunir los requerimientos de frecuencia.
Registros del controlador de la memoria flash Para controlar la memoria Flash, se utilizan los registros FCTLx. Corresponden a registros de escritura y lectura, de 16 bits y protegidos por password. Los 8 últimos bits son utilizados para almacenar el password para poder leer o escribir en el registro. El password de lectura corresponde a 096h y el password de escritura corresponde a 0A5h. Además, está el registro de 8 bits llamado IE1, para habilitar/deshabilitar la interrupción que se produce cuando ocurre una violación de acceso.
Registros FCTLx
Registros FCTLx
Registros FCTLx
Registro IE1
Borrado de la flash Existen 3 modos de borrado: Borrar todo 1 Borrado masivo Borrar segmento Modo de borrado ERASE MERAS Cada ciclo de borrado es iniciado por una escritura falsa, que debe escribir una dirección que este dentro del segmento que se desea borrar. El temporizador del ciclo de borrado de un segmento no depende de la cantidad de memoria presente.
Borrado de la flash Las interrupciones deben ser deshabilitadas antes del ciclo de borrado.
Iniciando el borrado desde la memoria Flash Deshabilitar las interrupciones y el watchdog Cuando el borrado de un segmento es iniciado desde la Flash todos los tiempos son controlados por el controlador de memoria Flash y la CPU es congelada. Escritura falsa Configurar el controlador de la Flash Setear LOCK=1, re-habilitar interrupciones y watchdog
Iniciando el borrado desde la RAM La CPU continua ejecutando el código desde la RAM, el bit BUSY debe ser encuestado para determinar el fin del ciclo de borrado.
Iniciando el borrado desde la RAM
Escribiendo la memoria Flash Existen 2 modos de escritura: Escritura por bloques 1 Escritura Byte/word Modos de escritura WRT BLKWRT El modo de escritura por bloques es aproximadamente dos veces más rápido que el modo de escritura Byte/word
Escritura Byte/word Cuando es iniciada desde la Flash, la temporización es controlada por su controlador interno y la CPU es congelada hasta que la operación termina.
Escritura Byte/word desde la flash
Escritura Byte/word desde la RAM Deshabilitar interrupciones y watchdog BUSY=1 si Setear el controlador de la Flash con WRT=1 Escribir byte o word Setear WRT=0, LOCK=1, re-habilitar interrupciones y watchdog
Escritura por bloques de la flash La escritura por bloque puede es usada para acelerar el proceso de escritura cuando es necesario escribir varios byte/word secuencialmente. Un bloque contiene 64 Bytes. Un escritura por bloque no puede ser iniciada desde la memoria Flash. Cuando se escriben bloques sucesivos, el bit BLKWRT debe ser limpiado después de la escritura del bloque correspondiente. BLKWRT debe ser seteado para la escritura del próximo bloque, después de un tiempo de recuperación requerido por la Flash.
Escritura por bloques de la flash
Escritura por bloques Deshabilitar interrupciones y watchdog si Escritura por bloques Deshabilitar interrupciones y watchdog BUSY=1 si Setear el controlador de la Flash Setear BLKWRT=WRT=1 Escribir byte o word WAIT=0? Block border? no Setear BLKWRT=0 BUSY=1? Otro block? Setear WRT=0, LOCK=1, re-habilitar interrupciones y watchdog