/* * @Author: wujunchao wujunchao@wuxismart.com * @Date: 2025-03-17 14:38:22 * @LastEditors: wujunchao wujunchao@wuxismart.com * @LastEditTime: 2025-04-01 14:42:01 * @FilePath: \signal_generator\App\APP_WU\Inc\eeprom_spi.h * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ #ifndef _EEPROM_SPI_H #define _EEPROM_SPI_H #include "apps_gather.h" //模拟SPI, CS->PB9, WR->PD6, SCLK->PB3, MOSI->PB5, MISO->PB4 //CS->PB9 #define EEPROM_CS_H HAL_GPIO_WritePin(EEPROM_CS_GPIO_Port, EEPROM_CS_Pin, GPIO_PIN_SET) #define EEPROM_CS_L HAL_GPIO_WritePin(EEPROM_CS_GPIO_Port, EEPROM_CS_Pin, GPIO_PIN_RESET) //WR->PD6 #define EEPROM_WR_H HAL_GPIO_WritePin(EEPROM_WR_GPIO_Port, EEPROM_WR_Pin, GPIO_PIN_SET) #define EEPROM_WR_L HAL_GPIO_WritePin(EEPROM_WR_GPIO_Port, EEPROM_WR_Pin, GPIO_PIN_RESET) //SCLK->PB3 #define EEPROM_SCLK_H HAL_GPIO_WritePin(EEPROM_SCLK_GPIO_Port, EEPROM_SCLK_Pin, GPIO_PIN_SET) #define EEPROM_SCLK_L HAL_GPIO_WritePin(EEPROM_SCLK_GPIO_Port, EEPROM_SCLK_Pin, GPIO_PIN_RESET) //MOSI->PB5 #define EEPROM_MOSI_H HAL_GPIO_WritePin(EEPROM_MOSI_GPIO_Port, EEPROM_MOSI_Pin, GPIO_PIN_SET) #define EEPROM_MOSI_L HAL_GPIO_WritePin(EEPROM_MOSI_GPIO_Port, EEPROM_MOSI_Pin, GPIO_PIN_RESET) //MISO->PB4 #define EEPROM_MISO HAL_GPIO_ReadPin(EEPROM_MISO_GPIO_Port, EEPROM_MISO_Pin) //eeprom cmd #define WRITE_ENABLE 0x06 #define WRITE_DISABLE 0x04 #define WRITE_MEMORY 0x02 #define READ_MEMORY 0x03 #define READ_STATUS 0x05 //my address //{ //0x7D0 - 0x7E0,标记后写入0xAAAA(连续16位“1”“0”交替) #define DEVICE_CHECK 0x0007D0 #define EE_START_ADDR 0x000000 #define EE_INTERVAL 16 //电压V上限,tag:0 #define VOL_V_UP_ADDR EE_START_ADDR //电压V下限,tag:0 #define VOL_V_LOW_ADDR (VOL_V_UP_ADDR + EE_INTERVAL) //电压mV上限,tag:0 #define VOL_MV_UP_ADDR (VOL_V_LOW_ADDR + EE_INTERVAL) //电压mV下限,tag:0 #define VOL_MV_LOW_ADDR (VOL_MV_UP_ADDR + EE_INTERVAL) //电流上限,tag:1 #define CUR_UP_ADDR (VOL_MV_LOW_ADDR + EE_INTERVAL) //电流下限,tag:1 #define CUR_LOW_ADDR (CUR_UP_ADDR + EE_INTERVAL) //电阻上限,tag:2 #define RES_UP_ADDR (CUR_LOW_ADDR + EE_INTERVAL) //电阻下限,tag:2 #define RES_LOW_ADDR (RES_UP_ADDR + EE_INTERVAL) //频率上限,tag:3 #define FRE_UP_ADDR (RES_LOW_ADDR + EE_INTERVAL) //频率下限,tag:3 #define FRE_LOW_ADDR (FRE_UP_ADDR + EE_INTERVAL) //TC_K上限,tag:4 #define TC_K_UP_ADDR (FRE_LOW_ADDR + EE_INTERVAL) //TC_K下限,tag:4 #define TC_K_LOW_ADDR (TC_K_UP_ADDR + EE_INTERVAL) //TC_S上限,tag:5 #define TC_S_UP_ADDR (TC_K_LOW_ADDR + EE_INTERVAL) //TC_S下限,tag:5 #define TC_S_LOW_ADDR (TC_S_UP_ADDR + EE_INTERVAL) //TC_N上限,tag:6 #define TC_N_UP_ADDR (TC_S_LOW_ADDR + EE_INTERVAL) //TC_N下限,tag:6 #define TC_N_LOW_ADDR (TC_N_UP_ADDR + EE_INTERVAL) //TC_B上限,tag:7 #define TC_B_UP_ADDR (TC_N_LOW_ADDR + EE_INTERVAL) //TC_B下限,tag:7 #define TC_B_LOW_ADDR (TC_B_UP_ADDR + EE_INTERVAL) //TC_E上限,tag:8 #define TC_E_UP_ADDR (TC_B_LOW_ADDR + EE_INTERVAL) //TC_E下限,tag:8 #define TC_E_LOW_ADDR (TC_E_UP_ADDR + EE_INTERVAL) //TC_J上限,tag:9 #define TC_J_UP_ADDR (TC_E_LOW_ADDR + EE_INTERVAL) //TC_J下限,tag:9 #define TC_J_LOW_ADDR (TC_J_UP_ADDR + EE_INTERVAL) //TC_R上限,tag:10 #define TC_R_UP_ADDR (TC_J_LOW_ADDR + EE_INTERVAL) //TC_R下限,tag:10 #define TC_R_LOW_ADDR (TC_R_UP_ADDR + EE_INTERVAL) //TC_T上限,tag:11 #define TC_T_UP_ADDR (TC_R_LOW_ADDR + EE_INTERVAL) //TC_T下限,tag:11 #define TC_T_LOW_ADDR (TC_T_UP_ADDR + EE_INTERVAL) //RTD上限,tag:12 #define RTD_UP_ADDR (TC_T_LOW_ADDR + EE_INTERVAL) //RTD下限,tag:12 #define RTD_LOW_ADDR (RTD_UP_ADDR + EE_INTERVAL) //根据需求后续在此处向后添加 //} #define DATA_SAVE_ALL 0 extern uint8_t eeprom_wrt_error_flag; extern uint8_t eeprom_rd_error_flag; void eeprom_spi_init(void); void eeprom_spi_writebyte(uint8_t wrt_data); uint8_t SPI_WriteReadByte(uint8_t data); uint8_t eeprom_spi_readbyte(void); void eeprom_writedata(int32_t addr_long, uint8_t txd); uint8_t eeprom_readdata(int32_t addr_long); //开机上电后读取参数 void eeprom_dataread(void); //判断EEPROM内是否已存在数据 uint8_t eeprom_device_check(void); //保存指定数据 void eeprom_datasave_single(uint8_t tag); #if DATA_SAVE_ALL //存储参数,全部 void eeprom_datasave(void); #else //保存修改过的数据 void eeprom_datasave_changed(void); #endif #endif