sggt/App/APP_WU/Inc/eeprom_spi.h

96 lines
3.5 KiB
C

/*
* @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
//{
#define EE_START_ADDR 0x000000
#define EE_INTERVAL 16
#define VOL_V_UP_ADDR EE_START_ADDR
#define VOL_V_LOW_ADDR (VOL_V_UP_ADDR + EE_INTERVAL)
#define VOL_MV_UP_ADDR (VOL_V_LOW_ADDR + EE_INTERVAL)
#define VOL_MV_LOW_ADDR (VOL_MV_UP_ADDR + EE_INTERVAL)
#define CUR_UP_ADDR (VOL_MV_LOW_ADDR + EE_INTERVAL)
#define CUR_LOW_ADDR (CUR_UP_ADDR + EE_INTERVAL)
#define RES_UP_ADDR (CUR_LOW_ADDR + EE_INTERVAL)
#define RES_LOW_ADDR (RES_UP_ADDR + EE_INTERVAL)
#define FRE_UP_ADDR (RES_LOW_ADDR + EE_INTERVAL)
#define FRE_LOW_ADDR (FRE_UP_ADDR + EE_INTERVAL)
#define TC_K_UP_ADDR (FRE_LOW_ADDR + EE_INTERVAL)
#define TC_K_LOW_ADDR (TC_K_UP_ADDR + EE_INTERVAL)
#define TC_S_UP_ADDR (TC_K_LOW_ADDR + EE_INTERVAL)
#define TC_S_LOW_ADDR (TC_S_UP_ADDR + EE_INTERVAL)
#define TC_N_UP_ADDR (TC_S_LOW_ADDR + EE_INTERVAL)
#define TC_N_LOW_ADDR (TC_N_UP_ADDR + EE_INTERVAL)
#define TC_B_UP_ADDR (TC_N_LOW_ADDR + EE_INTERVAL)
#define TC_B_LOW_ADDR (TC_B_UP_ADDR + EE_INTERVAL)
#define TC_E_UP_ADDR (TC_B_LOW_ADDR + EE_INTERVAL)
#define TC_E_LOW_ADDR (TC_E_UP_ADDR + EE_INTERVAL)
#define TC_J_UP_ADDR (TC_E_LOW_ADDR + EE_INTERVAL)
#define TC_J_LOW_ADDR (TC_J_UP_ADDR + EE_INTERVAL)
#define TC_R_UP_ADDR (TC_J_LOW_ADDR + EE_INTERVAL)
#define TC_R_LOW_ADDR (TC_R_UP_ADDR + EE_INTERVAL)
#define TC_T_UP_ADDR (TC_R_LOW_ADDR + EE_INTERVAL)
#define TC_T_LOW_ADDR (TC_T_UP_ADDR + EE_INTERVAL)
#define RTD_UP_ADDR (TC_T_LOW_ADDR + EE_INTERVAL)
#define RTD_LOW_ADDR (RTD_UP_ADDR + EE_INTERVAL)
//}
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_datasave(void);
//开机上电后读取参数
void eeprom_dataread(void);
#endif