summaryrefslogtreecommitdiff
path: root/Libraries/TouchSense/STMTouch_Driver/inc/tsl_acq_stm8l_sw.h
diff options
context:
space:
mode:
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.h275
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>&copy; 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****/