Я использую микросхему WinBond W25Q64JV SPI Flash для хранения данных, а микроконтроллер - STM32F101RCT6. Когда я пытаюсь сохранить данные в микросхеме Winbond, она работает нормально, я могу читать и записывать данные в микросхеме Winbond, но если я хочу перезаписать новые данные по тому же адресу, это не перезаписывает, а дает старые данные, которые Если новые данные не записаны в одну и ту же память. Если я использую опцию стирания, стираются все данные во всех адресных ячейках, я не могу стереть данные определенного адреса. После того, как все данные адреса удалены, я могу записать новые данные, но я теряю данные во всех других местах, поэтому, пожалуйста, дайте мне знать, чтобы перезаписать новые данные в том же месте адреса / опция удаления для определенного адреса, мой код ниже
HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_RESET);
Spi_data[0]=0x06; //Write Enable
HAL_SPI_Transmit(&hspi2,Spi_data,1,1000);
HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_RESET);
Spi_data[0]=0x02; //Page Program
Spi_data[1]=0x00;
Spi_data[2]=0x10;
Spi_data[3]=0x14;
Spi_data[4]=0x43;
HAL_SPI_Transmit(&hspi2,Spi_data,5,10000);
HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_RESET);
Spi_data[0]=0x03;//Read Data
Spi_data[1]=0x00;
Spi_data[2]=0x10;
Spi_data[3]=0x14;
HAL_SPI_Transmit(&hspi2,Spi_data,4,100);
HAL_SPI_Receive(&hspi2,GSdata,4,100);
HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_SET);
когда я пытаюсь перезаписать новые данные в ячейке 0x1014, они не перезаписываются, если я использую следующую опцию стирания, это стирает все данные адреса памяти
HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_RESET);
Spi_data[0]=0x20;//Erase
Spi_data[1]=0x00;
Spi_data[2]=0x10;
Spi_data[3]=0x14;
HAL_SPI_Transmit(&hspi2,Spi_data,4,1000);
HAL_GPIO_WritePin(CHIP_SELECT_GPIO_Port, CHIP_SELECT_Pin, GPIO_PIN_SET);
, пожалуйста, помогите мне переписать новые данные в тот же адрес / стереть для определенного адреса