Я использую флеш-чип WinBond W25Q64JV SPI для хранения данных, а микроконтроллер — 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);
пожалуйста, помогите мне перезаписать новые данные в том же адресе / стереть параметр для определенного адреса