Red de conocimiento informático - Problemas con los teléfonos móviles - Funcionamiento de la serie TM4C w25q128flash

Funcionamiento de la serie TM4C w25q128flash

1. W25Q64 es un producto SPIFLASH de gran capacidad lanzado por Winbond. La capacidad de W25Q64 es de 64 Mb y la capacidad de W25Q128 es de 128 Mb. W25Q64 puede borrar y escribir como máximo en ciclos de 10 W, tiene un período de retención de datos de 20 años y admite un voltaje de 2,7 ~ 3,6 V.

2. Tiempo de operación.

Según el manual, CS debe estar bajo al enviar una instrucción. Después de enviar la instrucción, se levanta CS. Las instrucciones pueden ser de un solo byte o de varios bytes.

La siguiente figura muestra el tiempo del comando de escritura.

1. Cuando SPI envía datos, recibirá un byte de datos al mismo tiempo

2. SPI tiene cuatro líneas, tres líneas de datos: MISO, MOSI, SCLK y Línea de selección de chip CS La línea de selección de chip está activa en un nivel bajo para el dispositivo esclavo de la interfaz SPI. Cuando el host genera un nivel bajo, se selecciona el dispositivo esclavo. Esto permite que el host conecte fácilmente múltiples dispositivos esclavos simplemente usando diferentes líneas de selección de chip.

1. Configure FSS como un puerto IO normal durante el proceso de inicialización. Tire hacia arriba o hacia abajo según sea necesario.

2. Modo SPI avanzado oficial,

Código fuente:

SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2); //Habilitar reloj SPI2

SysCtlPeripheralEnable( SYSCTL_ PERIPH_GPIOD); //Habilitar reloj GPIOD

GPIOPinConfigure(GPIO_PD0_SSI2XDAT1); //Definición del puerto SPI2 IO

GPIOPinConfigure(GPIO_PD1_SSI2XDAT0);

GPIOPinConfigure(GPIO_PD2_SSI2FSS) ;

GPIOPinConfigure(GPIO_PD3_SSI2CLK);

GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 |GPIO_PIN_2|

? GPIO_PIN_3);

#if definido(TARGET_IS_TM4C129_RA0) ||\

definido(TARGET_IS_TM4C129_RA1) ||\

definido(TARGET_IS_TM4C129_RA2)

SSIConfigSetExpClk(SSI2_BASE, ui32SysClock, SSI_FRF_MOTO_MODE_0,

p>

? SSI_MODE_MASTER, 1000000, 8); //establecer el modo de reloj SSI

SSIAdvModeSet(SSI2_BASE, SSI_ADV_MODE_READ_WRITE);

#else

SSIConfigSetExpClk (SSI2_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0,

? SSI_MODE_MASTER, 1000000,

#endif

SSIAdvFrameHoldEnable(SSI2_BASE

);

SSIEnable(SSI2_BASE); //Habilitar SPI2

Antes de escribir en una dirección, debe asegurarse de que el valor en esa dirección no haya cambiado. La unidad mínima de borrado de W25Q64 es un sector, que es de 4k bytes, lo que significa que si desea escribir un valor en una dirección y el valor de la dirección no es 0xFF, debe borrar todo el sector y luego escribir nuevamente.

Por ejemplo, abra un caché de 4k para W25Q64, defina una matriz de 4k y luego, antes de escribir datos, primero determine si los datos en la dirección no son 0xFF y luego guarde el sector donde se encuentra la dirección. en el caché de 4k Todos los datos en el área, luego borre el sector, luego actualice los datos en la dirección correspondiente en el caché y luego escriba todos los datos en el caché de 4k en el sector a la vez.

Código fuente relacionado