Funcionamiento de la serie TM4C w25q128flash
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