📄 stm3210c_eval_ioe.h
字号:
/**
******************************************************************************
* @file stm3210c_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>© COPYRIGHT 2011 STMicroelectronics</center></h2>
******************************************************************************
*/
/* File Info : ---------------------------------------------------------------
SUPPORTED FEATURES:
- IO Read/write : Set/Reset and Read (Polling/Interrupt)
- Joystick: config and Read (Polling/Interrupt)
- Touch Screen Features: Single point mode (Polling/Interrupt)
- TempSensor Feature: accuracy not determined (Polling).
UNSUPPORTED FEATURES:
- Row ADC Feature is not supported (not implemented on STM3210C-EVAL board)
----------------------------------------------------------------------------*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __STM3210C_EVAL_IOE_H
#define __STM3210C_EVAL_IOE_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
/** @addtogroup Utilities
* @{
*/
/** @addtogroup STM32_EVAL
* @{
*/
/** @addtogroup STM3210C_EVAL
* @{
*/
/** @defgroup STM3210C_EVAL_IOE
* @{
*/
/** @defgroup STM3210C_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 Joystick State definitions
*/
#ifndef __STM32_EVAL_H
typedef enum
{
JOY_NONE = 0,
JOY_SEL = 1,
JOY_DOWN = 2,
JOY_LEFT = 3,
JOY_RIGHT = 4,
JOY_UP = 5
} JOYState_TypeDef
;
#endif /* __STM32_EVAL_H */
/**
* @brief IO_Expander Error codes
*/
typedef enum
{
IOE_OK = 0,
IOE_FAILURE,
IOE_TIMEOUT,
PARAM_ERROR,
IOE1_NOT_OPERATIONAL,
IOE2_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 STM3210C_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 I2C1
#define IOE_I2C_CLK RCC_APB1Periph_I2C1
#define IOE_I2C_SCL_PIN GPIO_Pin_6
#define IOE_I2C_SCL_GPIO_PORT GPIOB
#define IOE_I2C_SCL_GPIO_CLK RCC_APB2Periph_GPIOB
#define IOE_I2C_SDA_PIN GPIO_Pin_7
#define IOE_I2C_SDA_GPIO_PORT GPIOB
#define IOE_I2C_SDA_GPIO_CLK RCC_APB2Periph_GPIOB
#define IOE_I2C_DR ((uint32_t)0x40005410)
#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_Channel6
#define IOE_DMA_RX_CHANNEL DMA1_Channel7
#define IOE_DMA_TX_TCFLAG DMA1_FLAG_TC6
#define IOE_DMA_RX_TCFLAG DMA1_FLAG_TC7
/**
* @brief IO Expander Interrupt line on EXTI
*/
#define IOE_IT_PIN GPIO_Pin_14
#define IOE_IT_GPIO_PORT GPIOB
#define IOE_IT_GPIO_CLK RCC_APB2Periph_GPIOB
#define IOE_IT_EXTI_PORT_SOURCE GPIO_PortSourceGPIOB
#define IOE_IT_EXTI_PIN_SOURCE GPIO_PinSource14
#define IOE_IT_EXTI_LINE EXTI_Line14
#define IOE_IT_EXTI_IRQn EXTI15_10_IRQn
/**
* @brief Eval Board IO Pins definition
*/
#define AUDIO_RESET_PIN IO_Pin_2 /* IO_Exapnader_2 */ /* Output */
#define MII_INT_PIN IO_Pin_0 /* IO_Exapnader_2 */ /* Output */
#define VBAT_DIV_PIN IO_Pin_0 /* IO_Exapnader_1 */ /* Output */
#define MEMS_INT1_PIN IO_Pin_3 /* IO_Exapnader_1 */ /* Input */
#define MEMS_INT2_PIN IO_Pin_2 /* IO_Exapnader_1 */ /* Input */
/**
* @brief Eval Board both IO Exapanders Pins definition
*/
#define IO1_IN_ALL_PINS (uint32_t)(MEMS_INT1_PIN | MEMS_INT2_PIN)
#define IO2_IN_ALL_PINS (uint32_t)(JOY_IO_PINS)
#define IO1_OUT_ALL_PINS (uint32_t)(VBAT_DIV_PIN)
#define IO2_OUT_ALL_PINS (uint32_t)(AUDIO_RESET_PIN | MII_INT_PIN)
/**
* @brief The 7 bits IO Expanders adresses and chip IDs
*/
#define IOE_1_ADDR 0x82
#define IOE_2_ADDR 0x88
#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_INMEMS 0x02 /* IO_Exapnder 1 */
#define IOE_ITSRC_JOYSTICK 0x04 /* IO_Exapnder 2 */
#define IOE_ITSRC_TEMPSENS 0x08 /* IO_Exapnder 2 */
/**
* @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
/*------------------------------------------------------------------------------
STMPE811 device register definition
------------------------------------------------------------------------------*/
/**
* @brief Identification registers
*/
#define IOE_REG_CHP_ID 0x00
#define IOE_REG_ID_VER 0x02
/**
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -