sggt/App/APP_WU/Inc/eeprom_spi.h

158 lines
4.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* @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上限tag0
#define VOL_V_UP_ADDR EE_START_ADDR
//电压V下限tag0
#define VOL_V_LOW_ADDR (VOL_V_UP_ADDR + EE_INTERVAL)
//电压mV上限tag0
#define VOL_MV_UP_ADDR (VOL_V_LOW_ADDR + EE_INTERVAL)
//电压mV下限tag0
#define VOL_MV_LOW_ADDR (VOL_MV_UP_ADDR + EE_INTERVAL)
//电流上限tag1
#define CUR_UP_ADDR (VOL_MV_LOW_ADDR + EE_INTERVAL)
//电流下限tag1
#define CUR_LOW_ADDR (CUR_UP_ADDR + EE_INTERVAL)
//电阻上限tag2
#define RES_UP_ADDR (CUR_LOW_ADDR + EE_INTERVAL)
//电阻下限tag2
#define RES_LOW_ADDR (RES_UP_ADDR + EE_INTERVAL)
//频率上限tag3
#define FRE_UP_ADDR (RES_LOW_ADDR + EE_INTERVAL)
//频率下限tag3
#define FRE_LOW_ADDR (FRE_UP_ADDR + EE_INTERVAL)
//TC_K上限tag4
#define TC_K_UP_ADDR (FRE_LOW_ADDR + EE_INTERVAL)
//TC_K下限tag4
#define TC_K_LOW_ADDR (TC_K_UP_ADDR + EE_INTERVAL)
//TC_S上限tag5
#define TC_S_UP_ADDR (TC_K_LOW_ADDR + EE_INTERVAL)
//TC_S下限tag5
#define TC_S_LOW_ADDR (TC_S_UP_ADDR + EE_INTERVAL)
//TC_N上限tag6
#define TC_N_UP_ADDR (TC_S_LOW_ADDR + EE_INTERVAL)
//TC_N下限tag6
#define TC_N_LOW_ADDR (TC_N_UP_ADDR + EE_INTERVAL)
//TC_B上限tag7
#define TC_B_UP_ADDR (TC_N_LOW_ADDR + EE_INTERVAL)
//TC_B下限tag7
#define TC_B_LOW_ADDR (TC_B_UP_ADDR + EE_INTERVAL)
//TC_E上限tag8
#define TC_E_UP_ADDR (TC_B_LOW_ADDR + EE_INTERVAL)
//TC_E下限tag8
#define TC_E_LOW_ADDR (TC_E_UP_ADDR + EE_INTERVAL)
//TC_J上限tag9
#define TC_J_UP_ADDR (TC_E_LOW_ADDR + EE_INTERVAL)
//TC_J下限tag9
#define TC_J_LOW_ADDR (TC_J_UP_ADDR + EE_INTERVAL)
//TC_R上限tag10
#define TC_R_UP_ADDR (TC_J_LOW_ADDR + EE_INTERVAL)
//TC_R下限tag10
#define TC_R_LOW_ADDR (TC_R_UP_ADDR + EE_INTERVAL)
//TC_T上限tag11
#define TC_T_UP_ADDR (TC_R_LOW_ADDR + EE_INTERVAL)
//TC_T下限tag11
#define TC_T_LOW_ADDR (TC_T_UP_ADDR + EE_INTERVAL)
//RTD上限tag12
#define RTD_UP_ADDR (TC_T_LOW_ADDR + EE_INTERVAL)
//RTD下限tag12
#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);
//判断EEPROM内是否已存在数据
uint8_t eeprom_device_check(void);
void eeprom_datasave_single(uint8_t tag);
#endif