-
Notifications
You must be signed in to change notification settings - Fork 0
/
stm32303c_eval_eeprom.h
147 lines (121 loc) · 4.55 KB
/
stm32303c_eval_eeprom.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/**
******************************************************************************
* @file stm32303c_eval_eeprom.h
* @author MCD Application Team
* @brief This file contains all the functions prototypes for
* the stm32303c_eval_eeprom.c firmware driver.
******************************************************************************
* @attention
*
* Copyright (c) 2016 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __STM32303C_EVAL_EEPROM_H
#define __STM32303C_EVAL_EEPROM_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include "stm32303c_eval.h"
/** @addtogroup BSP
* @{
*/
/** @addtogroup STM32303C_EVAL
* @{
*/
/** @defgroup STM32303C_EVAL_EEPROM STM32303C-EVAL EEPROM
* @{
*/
/** @defgroup STM32303C_EVAL_EEPROM_Private_Variables Private Variables
* @{
*/
/**
* @}
*/
/** @defgroup STM32303C_EVAL_EEPROM_Exported_Types Exported Types
* @{
*/
typedef struct
{
uint32_t (*Init)(void);
uint32_t (*ReadBuffer)(uint8_t* , uint16_t , uint32_t* );
uint32_t (*WritePage)(uint8_t* , uint16_t , uint32_t* );
}EEPROM_DrvTypeDef;
/**
* @}
*/
/** @defgroup STM32303C_EVAL_EEPROM_Exported_Constants Exported Constants
* @{
*/
/* EEPROMs hardware address and page size */
#define EEPROM_ADDRESS_M24M01 0xA4 /* EEPROM M24M01-HR used */
#define EEPROM_ADDRESS_M24LR64_A01 0xA0 /* RF EEPROM ANT7-M24LR-A01 used */
#define EEPROM_ADDRESS_M24LR64_A02 0xA6 /* RF EEPROM ANT7-M24LR-A02 used */
#define EEPROM_PAGESIZE_M24M01 28 /* EEPROM M24M01-HR used */
#define EEPROM_PAGESIZE_M24LR64 4 /* RF EEPROM ANT7-M24LR-A used */
#define EEPROM_PAGESIZE_M95M01 256 /* EEPROM M95M01 used */
/* EEPROM BSP return values */
#define EEPROM_OK 0
#define EEPROM_FAIL 1
#define EEPROM_TIMEOUT 2
/* EEPROM BSP devices definition list supported */
#define BSP_EEPROM_M24LR64 1 /* RF I2C EEPROM M24LR64 */
#define BSP_EEPROM_M24M01 2 /* I2C EEPROM M24M01 */
#define BSP_EEPROM_M95M01 3 /* SPI EEPROM M95M01 */
/* Maximum number of trials for EEPROM_I2C_WaitEepromStandbyState() function */
#define EEPROM_MAX_TRIALS 300
/**
* @}
*/
/** @defgroup STM32303C_EVAL_EEPROM_Exported_Functions Exported Functions
* @{
*/
uint32_t BSP_EEPROM_Init(void);
void BSP_EEPROM_SelectDevice(uint8_t DeviceID);
uint32_t BSP_EEPROM_ReadBuffer(uint8_t* pBuffer, uint16_t ReadAddr, uint32_t* NumByteToRead);
uint32_t BSP_EEPROM_WriteBuffer(uint8_t* pBuffer, uint16_t WriteAddr, uint32_t NumByteToWrite);
/* USER Callbacks: This function is declared as __weak in EEPROM driver and
should be implemented into user application.
BSP_EEPROM_TIMEOUT_UserCallback() function is called whenever a timeout condition
occurred during communication (waiting on an event that doesn't occur, bus
errors, busy devices ...). */
void BSP_EEPROM_TIMEOUT_UserCallback(void);
/* Link functions for I2C EEPROM peripheral */
void EEPROM_I2C_IO_Init(void);
HAL_StatusTypeDef EEPROM_I2C_IO_WriteData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize);
HAL_StatusTypeDef EEPROM_I2C_IO_ReadData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize);
HAL_StatusTypeDef EEPROM_I2C_IO_IsDeviceReady(uint16_t DevAddress, uint32_t Trials);
/* Link functions for EEPROM peripheral over SPI */
void EEPROM_SPI_IO_Init(void);
void EEPROM_SPI_IO_WriteByte(uint8_t Data);
uint8_t EEPROM_SPI_IO_ReadByte(void);
HAL_StatusTypeDef EEPROM_SPI_IO_WriteData(uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize);
HAL_StatusTypeDef EEPROM_SPI_IO_ReadData(uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize);
HAL_StatusTypeDef EEPROM_SPI_IO_WaitEepromStandbyState(void);
void EEPROM_SPI_IO_WriteDummy(void);
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __H */