站长 发表于 2025-6-30 08:44:33

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]
查看完整版本: W25Q64 Flash存储传感器数据