diff options
Diffstat (limited to 'Libraries/TouchSense/STMTouch_Driver/inc/tsl_acq_stm8l_sw.h')
-rw-r--r-- | Libraries/TouchSense/STMTouch_Driver/inc/tsl_acq_stm8l_sw.h | 275 |
1 files changed, 275 insertions, 0 deletions
diff --git a/Libraries/TouchSense/STMTouch_Driver/inc/tsl_acq_stm8l_sw.h b/Libraries/TouchSense/STMTouch_Driver/inc/tsl_acq_stm8l_sw.h new file mode 100644 index 0000000..7ac57de --- /dev/null +++ b/Libraries/TouchSense/STMTouch_Driver/inc/tsl_acq_stm8l_sw.h @@ -0,0 +1,275 @@ +/** + ****************************************************************************** + * @file tsl_acq_stm8l_sw.h + * @author MCD Application Team + * @version V1.4.4 + * @date 31-March-2014 + * @brief This file contains external declarations of the tsl_acq_stm8l_sw.c file. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT 2014 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 __TSL_ACQ_STM8L_SW_H +#define __TSL_ACQ_STM8L_SW_H + +/* Includes ------------------------------------------------------------------*/ + +#if defined(STM8L15X_LD) || defined(STM8L15X_MD) || defined(STM8L15X_MDP) || defined(STM8L15X_HD) +#include "stm8l15x.h" +#endif + +#if defined(STM8L10X) +#include "stm8l10x.h" +#endif + +#include "tsl_conf_stm8l.h" +#include "tsl_types.h" + +/* Defines -------------------------------------------------------------------*/ + +#ifndef CONST +#define CONST const +#endif + +#if !defined(STM8L10X) + +enum +{ + GR1 = 0, + GR2, + GR3, + GR4, + GR5, + GR6, + GR7, + GR8 +}; + +/** GPIOs list: + - bits 7:3 GPIO number (0=GPIOA, 1=GPIOB, 2=GPIOC, 3=GPIOD, 4=GPIOE) + - bits 2:0 IO number (0=pin0, ..., 7=pin7) + */ + +// GROUP1 +#define PA4 (0x00|0x04) // CH1 +#define PA5 (0x00|0x05) // CH2 +#define PA6 (0x00|0x06) // CH3 +#ifdef STM8L15X_LD +#define PA7 (0x00|0x07) // CH4 +#endif +// GROUP2 +#define PC7 (0x10|0x07) // CH1 +#define PC4 (0x10|0x04) // CH2 +#define PC3 (0x10|0x03) // CH3 +#ifdef STM8L15X_LD +#define PE7 (0x20|0x07) // CH4 +#endif +// GROUP3 +#define PC2 (0x10|0x02) // CH1 +#define PD7 (0x18|0x07) // CH2 +#define PD6 (0x18|0x06) // CH3 +// GROUP4 +#define PD5 (0x18|0x05) // CH1 +#define PD4 (0x18|0x04) // CH2 +#define PB7 (0x08|0x07) // CH3 +// GROUP5 +#define PB6 (0x08|0x06) // CH1 +#define PB5 (0x08|0x05) // CH2 +#define PB4 (0x08|0x04) // CH3 +// GROUP6 +#define PB3 (0x08|0x03) // CH1 +#define PB2 (0x08|0x02) // CH2 +#define PB1 (0x08|0x01) // CH3 +// GROUP7 +#define PB0 (0x08|0x00) // CH1 +#define PD3 (0x18|0x03) // CH2 +#define PD2 (0x18|0x02) // CH3 +#ifdef STM8L15X_LD +#define PE3 (0x20|0x03) // CH4 +#endif +// GROUP8 +#define PD1 (0x18|0x01) // CH1 +#define PD0 (0x18|0x00) // CH2 +#define PE5 (0x20|0x05) // CH3 +#ifdef STM8L15X_LD +#define PE4 (0x20|0x04) // CH4 +#endif + +#else // STM8L10X + +enum +{ + GR1 = 0, + GR2 +}; + +/** GPIOs list: + - bits 7:2 GPIO number (0=GPIOB, 1=GPIOD) + - bits 1:0 IO number (0=pin0, ..., 3=pin3) + */ +// GROUP1 +#define PB0 (0x00|0x00) // CH1 +#define PB1 (0x00|0x01) // CH2 +#define PD0 (0x04|0x00) // CH3 +#define PD1 (0x04|0x01) // CH4 +// GROUP2 +#define PB2 (0x00|0x02) // CH1 +#define PB3 (0x00|0x03) // CH2 +#define PD2 (0x04|0x02) // CH3 +#define PD3 (0x04|0x03) // CH4 + +#endif // !defined(STM8L10X) + +/* Exported types ------------------------------------------------------------*/ + +// For all devices/acquisitions + +typedef uint16_t TSL_tMeas_T; /**< Measurement */ +typedef uint16_t TSL_tRef_T; /**< Reference */ +typedef int16_t TSL_tDelta_T; /**< Delta */ + +typedef uint8_t TSL_tIndexSrc_T; /**< Channel source index */ +typedef uint8_t TSL_tIndexDest_T; /**< Channel destination index */ + +typedef uint8_t TSL_tRefRest_T; /**< Reference Rest (ECS) */ +typedef uint16_t TSL_tKCoeff_T; /**< K coefficient (ECS) */ + +typedef uint16_t TSL_tIndex_T; /**< Generic index */ +typedef uint16_t TSL_tNb_T; /**< Generic number */ +typedef uint8_t TSL_tCounter_T; /**< Generic counter used for debounce */ + +typedef uint8_t TSL_tThreshold_T; /**< Delta threshold */ + +typedef int16_t TSL_tsignPosition_T; /**< Linear and Rotary sensors position */ +typedef uint8_t TSL_tPosition_T; /**< Linear and Rotary sensors position */ + +typedef uint16_t TSL_tTick_ms_T; /**< Time in ms */ +typedef uint8_t TSL_tTick_sec_T; /**< Time in sec */ + +//------------------------------------------------------------------------------ +// Channel +//------------------------------------------------------------------------------ + +typedef uint8_t TSL_Conf_T; + +/** Channel destination index + */ +typedef struct +{ + TSL_tIndexDest_T IdxDest; /**< Index in the Channel data array */ +} TSL_ChannelDest_T; + +/** Channel Source and Configuration + */ +typedef struct +{ + TSL_tIndex_T IdxSrc; /**< Index of source value */ + // For stm8l acquisition only + TSL_Conf_T sampling; /**< Indicates which GPIO.n is used for the sample */ + TSL_Conf_T channel; /**< Indicates which GPIO.n is used for the channel */ +} TSL_ChannelSrc_T; + +/** Channel flags + */ +typedef struct +{ +unsigned int DataReady : 1; /**< To identify a new measurement (TSL_DataReady_enum_T) */ +unsigned int AcqStatus : 2; /**< Acquisition status (TSL_AcqStatus_enum_T) */ +unsigned int ObjStatus : 2; /**< Object status (TSL_ObjStatus_enum_T) */ +} TSL_ChannelFlags_T; + +/** Channel Data + */ +typedef struct +{ + TSL_ChannelFlags_T Flags; /**< Flags */ + TSL_tRef_T Ref; /**< Reference */ + TSL_tRefRest_T RefRest; /**< Reference rest for ECS */ + TSL_tDelta_T Delta; /**< Delta */ +#if TSLPRM_USE_MEAS > 0 + TSL_tMeas_T Meas; /**< Hold the last acquisition measure */ +#endif +} TSL_ChannelData_T; + +//------------------------------------------------------------------------------ +// Bank +//------------------------------------------------------------------------------ + +/** Bank + */ +typedef struct +{ + // Common to all acquisitions + CONST TSL_ChannelSrc_T *p_chSrc; /**< Pointer to the Channel Source and Configuration */ + CONST TSL_ChannelDest_T *p_chDest; /**< Pointer to the Channel Destination */ + TSL_ChannelData_T *p_chData; /**< Pointer to the Channel Data */ + TSL_tNb_T NbChannels; /**< Number of channels in the bank */ + // For stm8l acquisition only + TSL_Conf_T shield_sampling; /**< Indicates which GPIO.n is used for the shield sample */ + TSL_Conf_T shield_channel; /**< Indicates which GPIO.n is used for the shield channel */ +} TSL_Bank_T; + +#if !defined(STM8L10X) + +/** Bank Config Mask + */ +typedef struct +{ + uint8_t ch1; /**< Contains the mask for all first channel of group */ + uint8_t ch2; /**< Contains the mask for all second channel of group */ + uint8_t ch3; /**< Contains the mask for all third channel of group */ + uint8_t ch4; /**< Contains the mask for all fourth channel of group (if LD device)*/ +} TSL_Bank_Config_Mask_T; + +#else // STM8L10X + +/** Bank Config Mask + */ +typedef struct +{ + uint8_t GPIOB_IO; /**< Contains the mask for all first channel of group */ + uint8_t GPIOB_Samp; /**< Contains the mask for all second channel of group */ + uint8_t GPIOD_IO; /**< Contains the mask for all third channel of group */ + uint8_t GPIOD_Samp; /**< Contains the mask for all fourth channel of group (if LD device)*/ +} TSL_Bank_Config_Mask_T; + +#endif // !defined(STM8L10X) + +/* Exported variables --------------------------------------------------------*/ + +/* Exported macros -----------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +TSL_Status_enum_T TSL_acq_Init(void); +TSL_Status_enum_T TSL_acq_BankConfig(TSL_tIndex_T idx_bk); +void TSL_acq_BankStartAcq(void); +TSL_Status_enum_T TSL_acq_BankWaitEOC(void); +void TSL_acq_ProcessIT(void); +TSL_tMeas_T TSL_acq_GetMeas(TSL_tIndex_T index); +TSL_AcqStatus_enum_T TSL_acq_CheckNoise(void); + +TSL_Bool_enum_T TSL_acq_UseFilter(TSL_ChannelData_T *pCh); +TSL_tDelta_T TSL_acq_ComputeDelta(TSL_tRef_T ref, TSL_tMeas_T meas); +TSL_tMeas_T TSL_acq_ComputeMeas(TSL_tRef_T ref, TSL_tDelta_T delta); +TSL_Bool_enum_T TSL_acq_TestReferenceOutOfRange(TSL_ChannelData_T *pCh); +TSL_Bool_enum_T TSL_acq_TestFirstReferenceIsValid(TSL_ChannelData_T *pCh, TSL_tMeas_T new_meas); + +#endif /* __TSL_ACQ_STM8L_SW_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |