aboutsummaryrefslogtreecommitdiff
path: root/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Utilities/STM32_EVAL/STM32100E_EVAL/stm32100e_eval_ioe.h
diff options
context:
space:
mode:
Diffstat (limited to 'tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Utilities/STM32_EVAL/STM32100E_EVAL/stm32100e_eval_ioe.h')
-rw-r--r--tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Utilities/STM32_EVAL/STM32100E_EVAL/stm32100e_eval_ioe.h491
1 files changed, 491 insertions, 0 deletions
diff --git a/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Utilities/STM32_EVAL/STM32100E_EVAL/stm32100e_eval_ioe.h b/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Utilities/STM32_EVAL/STM32100E_EVAL/stm32100e_eval_ioe.h
new file mode 100644
index 0000000..76adb3b
--- /dev/null
+++ b/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Utilities/STM32_EVAL/STM32100E_EVAL/stm32100e_eval_ioe.h
@@ -0,0 +1,491 @@
+/**
+ ******************************************************************************
+ * @file stm32100e_eval_ioe.h
+ * @author MCD Application Team
+ * @version V4.5.0
+ * @date 07-March-2011
+ * @brief This file contains all the functions prototypes for the IO Expander
+ * firmware driver.
+ ******************************************************************************
+ * @attention
+ *
+ * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
+ * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
+ * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
+ * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
+ * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
+ * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
+ *
+ * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
+ ******************************************************************************
+ */
+
+ /* File Info : ---------------------------------------------------------------
+ SUPPORTED FEATURES:
+ - Touch Screen Features: Single point mode (Polling/Interrupt).
+ - TempSensor Feature: accuracy not determined (Polling).
+ - IO Read/write : Set/Reset and Read (Polling/Interrupt).
+
+ UNSUPPORTED FEATURES:
+ - Row ADC Feature is not supported (not implemented on STM32100E-EVAL board)
+ - Joystick: config and Read (Polling/Interrupt)
+----------------------------------------------------------------------------*/
+
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32100E_EVAL_IOE_H
+#define __STM32100E_EVAL_IOE_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f10x.h"
+
+/** @addtogroup Utilities
+ * @{
+ */
+
+/** @addtogroup STM32_EVAL
+ * @{
+ */
+
+/** @addtogroup STM32100E_EVAL
+ * @{
+ */
+
+/** @defgroup STM32100E_EVAL_IOE
+ * @{
+ */
+
+/** @defgroup STM32100E_EVAL_IOE_Exported_Types
+ * @{
+ */
+
+/**
+ * @brief Touch Screen Information structure
+ */
+typedef struct
+{
+ uint16_t TouchDetected;
+ uint16_t X;
+ uint16_t Y;
+ uint16_t Z;
+}TS_STATE;
+
+
+/**
+ * @brief IO_Expander Error codes
+ */
+typedef enum
+{
+ IOE_OK = 0,
+ IOE_FAILURE,
+ IOE_TIMEOUT,
+ PARAM_ERROR,
+ IOE1_NOT_OPERATIONAL
+}IOE_Status_TypDef;
+
+/**
+ * @brief IO bit values
+ */
+typedef enum
+{
+ BitReset = 0,
+ BitSet = 1
+}IOE_BitValue_TypeDef;
+
+/**
+ * @brief IOE DMA Direction
+ */
+typedef enum
+{
+ IOE_DMA_TX = 0,
+ IOE_DMA_RX = 1
+}IOE_DMADirection_TypeDef;
+
+/**
+ * @}
+ */
+
+/** @defgroup STM32100E_EVAL_IOE_Exported_Constants
+ * @{
+ */
+
+/**
+ * @brief Uncomment the line below to enable verfying each written byte in write
+ * operation. The I2C_WriteDeviceRegister() function will then compare the
+ * written and read data and return error status if a mismatch occurs.
+ */
+/* #define VERIFY_WRITTENDATA */
+
+/**
+ * @brief Uncomment the line below if you want to use user defined Delay function
+ * (for precise timing), otherwise default _delay_ function defined within
+ * this driver is used (less precise timing).
+ */
+/* #define USE_Delay */
+
+/**
+ * @brief Uncomment the line below if you want to use user timeout callback.
+ * Function prototypes is declared in this file but function body may be
+ * implemented into user application.
+ */
+/* #define USE_TIMEOUT_USER_CALLBACK */
+
+#ifdef USE_Delay
+#include "main.h"
+
+ #define _delay_ Delay /* !< User can provide more timing precise _delay_ function
+ (with 10ms time base), using SysTick for example */
+#else
+ #define _delay_ delay /* !< Default _delay_ function with less precise timing */
+#endif
+
+/*------------------------------------------------------------------------------
+ Hardware Configuration
+------------------------------------------------------------------------------*/
+/**
+ * @brief I2C port definitions
+ */
+#define IOE_I2C I2C2
+#define IOE_I2C_CLK RCC_APB1Periph_I2C2
+#define IOE_I2C_SCL_PIN GPIO_Pin_10
+#define IOE_I2C_SCL_GPIO_PORT GPIOB
+#define IOE_I2C_SCL_GPIO_CLK RCC_APB2Periph_GPIOB
+#define IOE_I2C_SDA_PIN GPIO_Pin_11
+#define IOE_I2C_SDA_GPIO_PORT GPIOB
+#define IOE_I2C_SDA_GPIO_CLK RCC_APB2Periph_GPIOB
+#define IOE_I2C_DR ((uint32_t)0x40005810)
+#define IOE_I2C_SPEED 300000
+
+/**
+ * @brief IOE DMA definitions
+ */
+#define IOE_DMA DMA1
+#define IOE_DMA_CLK RCC_AHBPeriph_DMA1
+#define IOE_DMA_TX_CHANNEL DMA1_Channel4
+#define IOE_DMA_RX_CHANNEL DMA1_Channel5
+#define IOE_DMA_TX_TCFLAG DMA1_FLAG_TC4
+#define IOE_DMA_RX_TCFLAG DMA1_FLAG_TC5
+
+
+/**
+ * @brief IO Expander Interrupt line on EXTI
+ */
+#define IOE_IT_PIN GPIO_Pin_12
+#define IOE_IT_GPIO_PORT GPIOA
+#define IOE_IT_GPIO_CLK RCC_APB2Periph_GPIOA
+#define IOE_IT_EXTI_PORT_SOURCE GPIO_PortSourceGPIOA
+#define IOE_IT_EXTI_PIN_SOURCE GPIO_PinSource12
+#define IOE_IT_EXTI_LINE EXTI_Line12
+#define IOE_IT_EXTI_IRQn EXTI15_10_IRQn
+
+
+/**
+ * @brief The 7 bits IO Expanders adresses and chip IDs
+ */
+#define IOE_1_ADDR 0x82
+#define STMPE811_ID 0x0811
+
+
+/*------------------------------------------------------------------------------
+ Functional and Interrupt Management
+------------------------------------------------------------------------------*/
+/**
+ * @brief IO Expander Functionalities definitions
+ */
+#define IOE_ADC_FCT 0x01
+#define IOE_TS_FCT 0x02
+#define IOE_IO_FCT 0x04
+#define IOE_TEMPSENS_FCT 0x08
+
+/**
+ * @brief Interrupt source configuration definitons
+ */
+#define IOE_ITSRC_TSC 0x01 /* IO_Exapnder 1 */
+#define IOE_ITSRC_TEMPSENS 0x08 /* IO_Exapnder 1 */
+
+/**
+ * @brief Glaobal Interrupts definitions
+ */
+#define IOE_GIT_GPIO 0x80
+#define IOE_GIT_ADC 0x40
+#define IOE_GIT_TEMP 0x20
+#define IOE_GIT_FE 0x10
+#define IOE_GIT_FF 0x08
+#define IOE_GIT_FOV 0x04
+#define IOE_GIT_FTH 0x02
+#define IOE_GIT_TOUCH 0x01
+
+/**
+ * @brief IO Exapanders Pins definition
+ */
+#define IO1_IN_ALL_PINS (uint32_t)(IO_Pin_ALL)
+#define IO1_OUT_ALL_PINS (uint32_t)(IO_Pin_ALL)
+
+
+/*------------------------------------------------------------------------------
+ STMPE811 device register definition
+------------------------------------------------------------------------------*/
+/**
+ * @brief Identification registers
+ */
+#define IOE_REG_CHP_ID 0x00
+#define IOE_REG_ID_VER 0x02
+
+/**
+ * @brief General Control Registers
+ */
+#define IOE_REG_SYS_CTRL1 0x03
+#define IOE_REG_SYS_CTRL2 0x04
+#define IOE_REG_SPI_CFG 0x08
+
+/**
+ * @brief Interrupt Control register
+ */
+#define IOE_REG_INT_CTRL 0x09
+#define IOE_REG_INT_EN 0x0A
+#define IOE_REG_INT_STA 0x0B
+#define IOE_REG_GPIO_INT_EN 0x0C
+#define IOE_REG_GPIO_INT_STA 0x0D
+
+/**
+ * @brief GPIO Registers
+ */
+#define IOE_REG_GPIO_SET_PIN 0x10
+#define IOE_REG_GPIO_CLR_PIN 0x11
+#define IOE_REG_GPIO_MP_STA 0x12
+#define IOE_REG_GPIO_DIR 0x13
+#define IOE_REG_GPIO_ED 0x14
+#define IOE_REG_GPIO_RE 0x15
+#define IOE_REG_GPIO_FE 0x16
+#define IOE_REG_GPIO_AF 0x17
+
+/**
+ * @brief ADC Registers
+ */
+#define IOE_REG_ADC_INT_EN 0x0E
+#define IOE_REG_ADC_INT_STA 0x0F
+#define IOE_REG_ADC_CTRL1 0x20
+#define IOE_REG_ADC_CTRL2 0x21
+#define IOE_REG_ADC_CAPT 0x22
+#define IOE_REG_ADC_DATA_CH0 0x30 /* 16-Bit register */
+#define IOE_REG_ADC_DATA_CH1 0x32 /* 16-Bit register */
+#define IOE_REG_ADC_DATA_CH2 0x34 /* 16-Bit register */
+#define IOE_REG_ADC_DATA_CH3 0x36 /* 16-Bit register */
+#define IOE_REG_ADC_DATA_CH4 0x38 /* 16-Bit register */
+#define IOE_REG_ADC_DATA_CH5 0x3A /* 16-Bit register */
+#define IOE_REG_ADC_DATA_CH6 0x3B /* 16-Bit register */
+#define IOE_REG_ADC_DATA_CH7 0x3C /* 16-Bit register */
+
+/**
+ * @brief TouchScreen Registers
+ */
+#define IOE_REG_TSC_CTRL 0x40
+#define IOE_REG_TSC_CFG 0x41
+#define IOE_REG_WDM_TR_X 0x42
+#define IOE_REG_WDM_TR_Y 0x44
+#define IOE_REG_WDM_BL_X 0x46
+#define IOE_REG_WDM_BL_Y 0x48
+#define IOE_REG_FIFO_TH 0x4A
+#define IOE_REG_FIFO_STA 0x4B
+#define IOE_REG_FIFO_SIZE 0x4C
+#define IOE_REG_TSC_DATA_X 0x4D
+#define IOE_REG_TSC_DATA_Y 0x4F
+#define IOE_REG_TSC_DATA_Z 0x51
+#define IOE_REG_TSC_DATA_XYZ 0x52
+#define IOE_REG_TSC_FRACT_XYZ 0x56
+#define IOE_REG_TSC_DATA 0x57
+#define IOE_REG_TSC_I_DRIVE 0x58
+#define IOE_REG_TSC_SHIELD 0x59
+
+/**
+ * @brief Temperature Sensor registers
+ */
+#define IOE_REG_TEMP_CTRL 0x60
+#define IOE_REG_TEMP_DATA 0x61
+#define IOE_REG_TEMP_TH 0x62
+
+/*------------------------------------------------------------------------------
+ Functions parameters defines
+------------------------------------------------------------------------------*/
+/**
+ * @brief Touch Screen Pins definition
+ */
+#define TOUCH_YD IO_Pin_1 /* IO_Exapnader_1 */ /* Input */
+#define TOUCH_XD IO_Pin_2 /* IO_Exapnader_1 */ /* Input */
+#define TOUCH_YU IO_Pin_3 /* IO_Exapnader_1 */ /* Input */
+#define TOUCH_XU IO_Pin_4 /* IO_Exapnader_1 */ /* Input */
+#define TOUCH_IO_ALL (uint32_t)(IO_Pin_1 | IO_Pin_2 | IO_Pin_3 | IO_Pin_4)
+
+/**
+ * @brief IO Pins
+ */
+#define IO_Pin_0 0x01
+#define IO_Pin_1 0x02
+#define IO_Pin_2 0x04
+#define IO_Pin_3 0x08
+#define IO_Pin_4 0x10
+#define IO_Pin_5 0x20
+#define IO_Pin_6 0x40
+#define IO_Pin_7 0x80
+#define IO_Pin_ALL 0xFF
+
+/**
+ * @brief IO Pin directions
+ */
+#define Direction_IN 0x00
+#define Direction_OUT 0x01
+
+/**
+ * @brief Interrupt Line output parameters
+ */
+#define Polarity_Low 0x00
+#define Polarity_High 0x04
+#define Type_Level 0x00
+#define Type_Edge 0x02
+
+/**
+ * @brief IO Interrupts
+ */
+#define IO_IT_0 0x01
+#define IO_IT_1 0x02
+#define IO_IT_2 0x04
+#define IO_IT_3 0x08
+#define IO_IT_4 0x10
+#define IO_IT_5 0x20
+#define IO_IT_6 0x40
+#define IO_IT_7 0x80
+#define ALL_IT 0xFF
+#define IOE_TS_IT (uint8_t)(IO_IT_0 | IO_IT_1 | IO_IT_2)
+
+/**
+ * @brief Edge detection value
+ */
+#define EDGE_FALLING 0x01
+#define EDGE_RISING 0x02
+
+/**
+ * @brief Global interrupt Enable bit
+ */
+#define IOE_GIT_EN 0x01
+
+/**
+ * @}
+ */
+
+
+
+/** @defgroup STM32100E_EVAL_IOE_Exported_Macros
+ * @{
+ */
+/**
+ * @}
+ */
+
+
+
+/** @defgroup STM32100E_EVAL_IOE_Exported_Functions
+ * @{
+ */
+
+/**
+ * @brief Configuration and initialization functions
+ */
+uint8_t IOE_Config(void);
+uint8_t IOE_ITConfig(uint32_t IOE_ITSRC_Source);
+
+/**
+ * @brief Timeout user callback function. This function is called when a timeout
+ * condition occurs during communication with IO Expander. Only protoype
+ * of this function is decalred in IO Expander driver. Its implementation
+ * may be done into user application. This function may typically stop
+ * current operations and reset the I2C peripheral and IO Expander.
+ * To enable this function use uncomment the define USE_TIMEOUT_USER_CALLBACK
+ * at the top of this file.
+ */
+#ifdef USE_TIMEOUT_USER_CALLBACK
+ uint8_t IOE_TimeoutUserCallback(void);
+#else
+ #define IOE_TimeoutUserCallback() IOE_TIMEOUT
+#endif /* USE_TIMEOUT_USER_CALLBACK */
+
+/**
+ * @brief IO pins control functions
+ */
+uint8_t IOE_WriteIOPin(uint8_t IO_Pin, IOE_BitValue_TypeDef BitVal);
+uint8_t IOE_ReadIOPin(uint32_t IO_Pin);
+
+/**
+ * @brief Touch Screen controller functions
+ */
+TS_STATE* IOE_TS_GetState(void);
+
+/**
+ * @brief Interrupts Mangement functions
+ */
+FlagStatus IOE_GetGITStatus(uint8_t DeviceAddr, uint8_t Global_IT);
+uint8_t IOE_ClearGITPending(uint8_t DeviceAddr, uint8_t IO_IT);
+FlagStatus IOE_GetIOITStatus(uint8_t DeviceAddr, uint8_t IO_IT);
+uint8_t IOE_ClearIOITPending(uint8_t DeviceAddr, uint8_t IO_IT);
+
+
+/**
+ * @brief Temperature Sensor functions
+ */
+uint32_t IOE_TempSens_GetData(void);
+
+
+/**
+ * @brief IO-Expander Control functions
+ */
+uint8_t IOE_IsOperational(uint8_t DeviceAddr);
+uint8_t IOE_Reset(uint8_t DeviceAddr);
+uint16_t IOE_ReadID(uint8_t DeviceAddr);
+
+uint8_t IOE_FnctCmd(uint8_t DeviceAddr, uint8_t Fct, FunctionalState NewState);
+uint8_t IOE_IOPinConfig(uint8_t DeviceAddr, uint8_t IO_Pin, uint8_t Direction);
+uint8_t IOE_GITCmd(uint8_t DeviceAddr, FunctionalState NewState);
+uint8_t IOE_GITConfig(uint8_t DeviceAddr, uint8_t Global_IT, FunctionalState NewState);
+uint8_t IOE_IOITConfig(uint8_t DeviceAddr, uint8_t IO_IT, FunctionalState NewState);
+
+/**
+ * @brief Low Layer functions
+ */
+uint8_t IOE_TS_Config(void);
+uint8_t IOE_TempSens_Config(void);
+uint8_t IOE_IOAFConfig(uint8_t DeviceAddr, uint8_t IO_Pin, FunctionalState NewState);
+uint8_t IOE_IOEdgeConfig(uint8_t DeviceAddr, uint8_t IO_Pin, uint8_t Edge);
+uint8_t IOE_ITOutConfig(uint8_t Polarity, uint8_t Type);
+
+uint8_t I2C_WriteDeviceRegister(uint8_t DeviceAddr, uint8_t RegisterAddr, uint8_t RegisterValue);
+uint8_t I2C_ReadDeviceRegister(uint8_t DeviceAddr, uint8_t RegisterAddr);
+uint16_t I2C_ReadDataBuffer(uint8_t DeviceAddr, uint32_t RegisterAddr);
+#ifdef __cplusplus
+}
+
+#endif
+#endif /* __STM32100E_EVAL_IOE_H */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/