aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/STM32_USB-FS-Device_Lib_V4.0.0/Utilities/STM32_EVAL/STM32303C_EVAL/stm32303c_eval_i2c_ee_cpal.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/STM32_USB-FS-Device_Lib_V4.0.0/Utilities/STM32_EVAL/STM32303C_EVAL/stm32303c_eval_i2c_ee_cpal.h')
-rw-r--r--thirdparty/STM32_USB-FS-Device_Lib_V4.0.0/Utilities/STM32_EVAL/STM32303C_EVAL/stm32303c_eval_i2c_ee_cpal.h231
1 files changed, 231 insertions, 0 deletions
diff --git a/thirdparty/STM32_USB-FS-Device_Lib_V4.0.0/Utilities/STM32_EVAL/STM32303C_EVAL/stm32303c_eval_i2c_ee_cpal.h b/thirdparty/STM32_USB-FS-Device_Lib_V4.0.0/Utilities/STM32_EVAL/STM32303C_EVAL/stm32303c_eval_i2c_ee_cpal.h
new file mode 100644
index 0000000..32b14e9
--- /dev/null
+++ b/thirdparty/STM32_USB-FS-Device_Lib_V4.0.0/Utilities/STM32_EVAL/STM32303C_EVAL/stm32303c_eval_i2c_ee_cpal.h
@@ -0,0 +1,231 @@
+/**
+ ******************************************************************************
+ * @file stm32303c_eval_i2c_ee_cpal.h
+ * @author MCD Application Team
+ * @version V1.0.1
+ * @date 23-October-2012
+ * @brief This file contains all the functions prototypes for
+ * the stm32303c_eval_i2c_ee_cpal.c firmware driver.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; COPYRIGHT 2012 STMicroelectronics</center></h2>
+ *
+ * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.st.com/software_license_agreement_liberty_v2
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32303C_EVAL_I2C_EE_CPAL_H
+#define __STM32303C_EVAL_I2C_EE_CPAL_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+
+/*===================================================================================
+ User NOTES
+=====================================================================================
+
+---------------------------------
+ How To use the EEPROM Driver:
+---------------------------------
+----- All EEPROM operations are controlled and monitored through a single
+ structure. This structure holds all necessary parameters to manage EEPROM
+ communication (pointer to CPAL I2C device structure, EEPROM address,
+ EEPROM page size, EEPROM memory addressing mode, EEPROM state).
+
+----- User should follow these steps to use this driver correctly :
+
+ -1- STRUCTURE INITIALIZATION
+ Start by initializing the structure holding EEPROM Information. To perform
+ this action, the global variable sEEx_DevStructure declared in EEPROM driver
+ as sEE_InitTypeDef (sEE1_DevStructure for EEPROM connected with I2C1,
+ sEE2_DevStructure for EEPROM connected with I2C1 ...) must be used.
+
+ sEE_InitTypeDef structure contains five parameters:
+
+ *- CPAL_InitTypeDef* sEE_CPALStructure : Pointer on a CPAL Device structure
+ relative to the device instantiated
+ to communicate with EEPROM.
+
+ *- uint32_t sEEAddress : Contains the EEPROM device Address.
+
+ *- uint32_t sEEPageSize : Contains the page size of EEPROM Memory.
+
+ *- uint8_t sEEMemoryAddrMode : Bit-field value specifying Memory Addressing Mode.
+
+ *- __IO sEE_StateTypeDef sEEState : Holds the current State of the EEPROM device.
+
+ To configure this structure, user must initialize only three parameters
+ (sEEAddress, sEEPageSize, sEEMemoryAddrMode).
+
+ Example:
+ sEE1_DevStructure.sEEAddress = 0xA0; // set EEPROM address to 0xA0
+ sEE1_DevStructure.sEEPageSize = 32; // set page size to 32
+ sEE1_DevStructure.sEEMemoryAddrMode = sEE_OPT_16BIT_REG; // enable 16Bit memory addressing mode
+
+ -2- DEVICE CONFIGURATION
+ Call the function sEE_StructInit() to initialize I2Cx CPAL device structure
+ relative to EEPROM than call sEE_Init() to configure the selected device
+ with the selected configuration.
+
+ -3- READ / WRITE OPERATIONS
+ Call the function sEE_WriteBuffer() or sEE_ReadBuffer() to perform transfer operations.
+ These functions start data transfer and exit. sEE_WriteHandler() and sEE_ReadHandler()
+ handle the remainder of the communication. sEE_WriteHandler() must be called in
+ CPAL_I2C_TXTC_UserCallback() and sEE_ReadHandler() must be called in CPAL_I2C_RXTC_UserCallback().
+ These two callbacks are implemented in "cpal_usercallback.c" file.
+
+ Example of how to implement sEE_WriteHandler() in CPAL_I2C_TXTC_UserCallback():
+
+ 1** Comment "#define CPAL_I2C_TXTC_UserCallback (void)" in cpal_conf.h.
+ 2** Implement CPAL_I2C_TXTC_UserCallback in "cpal_usercallback.c" file.
+
+ void CPAL_I2C_TXTC_UserCallback(CPAL_InitTypeDef* pDevInitStruct)
+ {
+ sEE_WriteHandler(pDevInitStruct->CPAL_Dev);
+ }
+
+ User should monitor transfer by testing the value of sEEState parameter of
+ sEEx_DevStructure. When transfer is ongoing sEEState is equal to sEE_STATE_WRITING
+ or sEE_STATE_READING. After transfer complete this parameter is set to sEE_STATE_IDLE.
+
+ Example of how to wait until EEPROM communication finishes:
+
+ while(sEE_GetEepromState(&sEE_DevStructure) != sEE_STATE_IDLE)
+ {
+ //Application may perform other tasks while transfer operation is ongoing
+ }
+
+ -4- DEVICE DEINITIALIZATION
+ When transfer operations are finished, you may call sEE_DeInit() to disable I2Cx device
+ and related resources (GPIO, DMA , IT and NVIC) relative to used EEPROM.
+
+*****************************END OF User Notes**********************************************/
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f30x_i2c_cpal.h"
+
+/* Exported types ------------------------------------------------------------*/
+
+/*========= sEE_State_Enum =========*/
+/* sEE global State enumeration contains the current state of EEPROM.
+ Before starting each operation this state is tested. After each operation
+ sEE_State is updated with the new value resulting from the relative operation.*/
+
+ typedef enum
+{
+ sEE_STATE_IDLE = 0x01, /*!<This state indicates that the EEPROM device is in idle state */
+
+ sEE_STATE_WRITING = 0x02, /*!<This state indicates that write operation is ongoing */
+
+ sEE_STATE_READING = 0x03, /*!<This state indicates that read operation is ongoing */
+
+ sEE_STATE_ERROR = 0x04, /*!<This state indicates that an error is occurred during
+ last operation */
+
+}sEE_StateTypeDef;
+
+
+/*========= CPAL_sEE_TypeDef =========*/
+/* sEE Device structure definition */
+typedef struct
+{
+ CPAL_InitTypeDef* sEE_CPALStructure; /*!< Pointer on a CPAL Device structure relative to the device
+ instantiated to communicate with EEPROM */
+
+ uint16_t sEEPageSize; /*!< Contains the page size of EEPROM Memory*/
+
+ uint8_t sEEAddress; /*!< Contains the EEPROM device Address */
+
+
+ uint8_t sEEMemoryAddrMode; /*!< Bit-field value specifying Memory Addressing Mode. Can be
+ any combination of following values:
+ sEE_Memory_Addressing_Mode_Defines */
+
+ __IO sEE_StateTypeDef sEEState; /*!< Holds the current State of the EEPROM device. The state
+ parameter can be one of the following values: sEE_State_Enum */
+
+} sEE_InitTypeDef;
+
+
+/*========= sEE_Global_Device_Structures =========*/
+/* sEE Global Device Structures are the Global default structures which
+ are used to handle sEE configuration and status.*/
+
+extern sEE_InitTypeDef* sEE_DevStructures[];
+
+#ifdef CPAL_USE_I2C1
+extern sEE_InitTypeDef sEE1_DevStructure;
+#endif /* CPAL_USE_I2C1 */
+
+#ifdef CPAL_USE_I2C2
+extern sEE_InitTypeDef sEE2_DevStructure;
+#endif /* CPAL_USE_I2C2 */
+
+/* Exported constants --------------------------------------------------------*/
+
+/*============== TIMING Configuration ==========================*/
+/* I2C TIMING Register define */
+/* I2C TIMING is calculated in case of the I2C Clock source is the SYSCLK = 72 MHz */
+/* When using sEE_M24M01 set TIMING to 0x00C4092A to reach 1 MHz speed (Rise time = 26ns, Fall time = 2ns) */
+/* When using sEE_M24LR64 set TIMING to 0xC062121F to reach 100 KHz speed (Rise time = 640ns, Fall time = 20ns) */
+
+#define sEE_I2C_TIMING 0xC062121F
+
+
+/*============== Programming model Configuration ==========================*/
+/* Select interrupt programming model : By default DMA programming model is selected.
+ To select interrupt programming model uncomment this define */
+//#define sEE_IT
+
+/*========= sEE_Memory_Addressing_Mode_Defines =========*/
+/* sEE Memory_Addressing_Mode defines can be affected to sEEMemoryAddrMode which is
+ a bit-field argument so any combination of these parameters can be selected.
+ If one option is not selected then the relative feature is disabled.*/
+
+
+#define sEE_OPT_NO_MEM_ADDR ((uint8_t)0x01) /*!<Enable No Memory addressing mode for read operation : only EEPROM
+ device address sent. No Register/Physical address to be sent after
+ addressing phase */
+
+#define sEE_OPT_16BIT_REG ((uint8_t)0x02) /*!<Enable 16-Bit Register/Physical addressing mode (two bytes,
+ MSB first). This option is supported only when sEE_OPT_NO_MEM_ADDR
+ option is not set */
+
+
+
+/* Exported macro ------------------------------------------------------------*/
+/* Exported functions ------------------------------------------------------- */
+
+void sEE_DeInit(sEE_InitTypeDef* sEEInitStruct);
+void sEE_Init(sEE_InitTypeDef* sEEInitStruct);
+void sEE_StructInit(sEE_InitTypeDef* sEEInitStruct);
+uint32_t sEE_WriteBuffer(sEE_InitTypeDef* sEEInitStruct, uint8_t* pBuffer, uint16_t WriteAddr, uint32_t NumByteToWrite);
+uint32_t sEE_WriteHandler(CPAL_DevTypeDef Device);
+uint32_t sEE_ReadBuffer(sEE_InitTypeDef* sEEInitStruct, uint8_t* pBuffer, uint16_t ReadAddr, uint32_t NumByteToRead);
+uint32_t sEE_ReadHandler(CPAL_DevTypeDef Device);
+uint32_t sEE_WaitEepromStandbyState(CPAL_DevTypeDef Device);
+uint32_t sEE_GetEepromState(sEE_InitTypeDef* sEEInitStruct);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32303C_EVAL_I2C_EE_CPAL_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/