W25Q64 Flash存储传感器数据
W25Q64 Flash存储传感器数据🔥 实际问题:
"野外监测设备需要断电保存最后100条温湿度记录"🚀 三步解决方案:
[*]硬件接线:text
复制
下载
PA5 → FLASH_CLKPA6 → FLASH_MISOPA7 → FLASH_MOSIPA4 → FLASH_CS
[*]关键代码(带错误重试机制):
c
复制
下载
// 读取Flash ID(验证通信)uint32_t Read_ID() { uint8_t cmd[4 = {0x9F, 0, 0, 0}; uint8_t id[3; HAL_SPI_TransmitReceive(&hspi1, cmd, id, 4, 100); return (id[0<<16)|(id[1<<8)|id[2; // 应返回0xEF4017}// 写入数据(含擦除判断)void Flash_Write(uint32_t addr, uint8_t *data, uint16_t len) { W25Q64_WriteEnable(); HAL_SPI_Transmit(&hspi1, "\x02", 1, 100); // 页编程指令 HAL_SPI_Transmit(&hspi1, (uint8_t*)&addr, 3, 100); HAL_SPI_Transmit(&hspi1, data, len, 100); while(W25Q64_Busy()); // 等待写入完成}
[*]数据管理技巧:
[*]使用循环队列存储:addr = (index % 100) * 64
[*]添加CRC校验:HAL_CRC_Calculate(&hcrc, data, len)
页:
[1]