2 ******************************************************************************
\r
3 * @file tsl_acq_stm32f0xx.h
\r
4 * @author MCD Application Team
\r
6 * @date 22-January-2013
\r
7 * @brief This file contains all functions prototypes that manage the TSC
\r
8 * acquisition on STM32F0x products.
\r
9 ******************************************************************************
\r
12 * <h2><center>© COPYRIGHT 2013 STMicroelectronics</center></h2>
\r
14 * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
\r
15 * You may not use this file except in compliance with the License.
\r
16 * You may obtain a copy of the License at:
\r
18 * http://www.st.com/software_license_agreement_liberty_v2
\r
20 * Unless required by applicable law or agreed to in writing, software
\r
21 * distributed under the License is distributed on an "AS IS" BASIS,
\r
22 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
23 * See the License for the specific language governing permissions and
\r
24 * limitations under the License.
\r
26 ******************************************************************************
\r
29 /* Define to prevent recursive inclusion -------------------------------------*/
\r
30 #ifndef __TSL_ACQ_STM32F0XX_H
\r
31 #define __TSL_ACQ_STM32F0XX_H
\r
33 /* Includes ------------------------------------------------------------------*/
\r
34 #include "stm32f0xx.h"
\r
35 #include "tsl_conf_stm32f0xx.h"
\r
36 #include "tsl_types.h"
\r
38 /* Defines -------------------------------------------------------------------*/
\r
44 // SysTick enable/disable interrupt macros
\r
45 #define enableInterrupts() {SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk;}
\r
46 #define disableInterrupts() {SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk;}
\r
48 #define TSL_NB_GROUPS (6) // Only 6 groups on STM32F0xx
\r
50 #define TSL_GROUP1 (0x01)
\r
51 #define TSL_GROUP2 (0x02)
\r
52 #define TSL_GROUP3 (0x04)
\r
53 #define TSL_GROUP4 (0x08)
\r
54 #define TSL_GROUP5 (0x10)
\r
55 #define TSL_GROUP6 (0x20)
\r
58 #define TSL_GROUP1_IO1 (0x00000001)
\r
59 #define TSL_GROUP1_IO2 (0x00000002)
\r
60 #define TSL_GROUP1_IO3 (0x00000004)
\r
61 #define TSL_GROUP1_IO4 (0x00000008)
\r
62 #define TSL_GROUP2_IO1 (0x00000010)
\r
63 #define TSL_GROUP2_IO2 (0x00000020)
\r
64 #define TSL_GROUP2_IO3 (0x00000040)
\r
65 #define TSL_GROUP2_IO4 (0x00000080)
\r
66 #define TSL_GROUP3_IO1 (0x00000100)
\r
67 #define TSL_GROUP3_IO2 (0x00000200)
\r
68 #define TSL_GROUP3_IO3 (0x00000400)
\r
69 #define TSL_GROUP3_IO4 (0x00000800)
\r
70 #define TSL_GROUP4_IO1 (0x00001000)
\r
71 #define TSL_GROUP4_IO2 (0x00002000)
\r
72 #define TSL_GROUP4_IO3 (0x00004000)
\r
73 #define TSL_GROUP4_IO4 (0x00008000)
\r
74 #define TSL_GROUP5_IO1 (0x00010000)
\r
75 #define TSL_GROUP5_IO2 (0x00020000)
\r
76 #define TSL_GROUP5_IO3 (0x00040000)
\r
77 #define TSL_GROUP5_IO4 (0x00080000)
\r
78 #define TSL_GROUP6_IO1 (0x00100000)
\r
79 #define TSL_GROUP6_IO2 (0x00200000)
\r
80 #define TSL_GROUP6_IO3 (0x00400000)
\r
81 #define TSL_GROUP6_IO4 (0x00800000)
\r
83 /* Exported types ------------------------------------------------------------*/
\r
85 // For all devices/acquisitions
\r
87 typedef uint16_t TSL_tMeas_T; /**< Measurement */
\r
88 typedef uint16_t TSL_tRef_T; /**< Reference */
\r
89 typedef int16_t TSL_tDelta_T; /**< Delta */
\r
91 typedef uint8_t TSL_tIndexSrc_T; /**< Channel source index */
\r
92 typedef uint16_t TSL_tIndexDest_T; /**< Channel destination index */
\r
94 typedef uint8_t TSL_tRefRest_T; /**< Reference Rest (ECS) */
\r
95 typedef uint16_t TSL_tKCoeff_T; /**< K coefficient (ECS) */
\r
97 typedef uint8_t TSL_tIndex_T; /**< Generic index */
\r
98 typedef uint16_t TSL_tNb_T; /**< Generic number */
\r
99 typedef uint8_t TSL_tCounter_T; /**< Generic counter used for debounce */
\r
101 typedef uint8_t TSL_tThreshold_T; /**< Delta threshold */
\r
103 typedef int16_t TSL_tsignPosition_T; /**< Linear and Rotary sensors position */
\r
104 typedef uint8_t TSL_tPosition_T; /**< Linear and Rotary sensors position */
\r
106 typedef uint16_t TSL_tTick_ms_T; /**< Time in ms */
\r
107 typedef uint8_t TSL_tTick_sec_T; /**< Time in sec */
\r
109 //------------------------------------------------------------------------------
\r
111 //------------------------------------------------------------------------------
\r
113 /** Channel destination index
\r
117 TSL_tIndexDest_T IdxDest; /**< Index in the Channel data array */
\r
118 } TSL_ChannelDest_T;
\r
120 /** Channel Source and Configuration
\r
124 TSL_tIndexSrc_T IdxSrc; /**< Index of TSC->IOGXCR[] registers */
\r
125 // For stm32f0x TSC acquisition only
\r
126 uint32_t msk_IOCCR_channel; /**< Mask of the Channel IO (electrodes ONLY) */
\r
127 uint32_t msk_IOGCSR_group; /**< Mask of the Group used (electrodes ONLY) */
\r
128 } TSL_ChannelSrc_T;
\r
134 unsigned int DataReady : 1; /**< To identify a new measurement (TSL_DataReady_enum_T) */
\r
135 unsigned int AcqStatus : 2; /**< Acquisition status (TSL_AcqStatus_enum_T) */
\r
136 unsigned int ObjStatus : 2; /**< Object status (TSL_ObjStatus_enum_T) */
\r
137 } TSL_ChannelFlags_T;
\r
143 TSL_ChannelFlags_T Flags; /**< Flags */
\r
144 TSL_tRef_T Ref; /**< Reference */
\r
145 TSL_tRefRest_T RefRest; /**< Reference rest for ECS */
\r
146 TSL_tDelta_T Delta; /**< Delta */
\r
147 #if TSLPRM_USE_MEAS > 0
\r
148 TSL_tMeas_T Meas; /**< Hold the last acquisition measure */
\r
150 } TSL_ChannelData_T;
\r
152 //------------------------------------------------------------------------------
\r
154 //------------------------------------------------------------------------------
\r
160 // Common to all acquisitions
\r
161 CONST TSL_ChannelSrc_T *p_chSrc; /**< Pointer to the Channel Source and Configuration */
\r
162 CONST TSL_ChannelDest_T *p_chDest; /**< Pointer to the Channel Destination */
\r
163 TSL_ChannelData_T *p_chData; /**< Pointer to the Channel Data */
\r
164 TSL_tNb_T NbChannels; /**< Number of channels in the bank */
\r
165 // For STM32F0x TSC acquisition only
\r
166 uint32_t msk_IOCCR_channels; /**< Mask of all channel IOs (electrodes AND shields) */
\r
167 uint32_t msk_IOGCSR_groups; /**< Mask of all groups used (electrodes ONLY) */
\r
170 /* Exported variables --------------------------------------------------------*/
\r
171 /* Exported macros -----------------------------------------------------------*/
\r
172 /* Exported functions ------------------------------------------------------- */
\r
174 TSL_Status_enum_T TSL_acq_Init(void);
\r
175 void TSL_acq_InitGPIOs(void);
\r
176 TSL_Status_enum_T TSL_acq_BankConfig(TSL_tIndex_T idx_bk);
\r
177 TSL_Bool_enum_T TSL_acq_UseFilter(TSL_ChannelData_T *pCh);
\r
178 TSL_Bool_enum_T TSL_acq_TestReferenceOutOfRange(TSL_ChannelData_T *pCh);
\r
179 TSL_Bool_enum_T TSL_acq_TestFirstReferenceIsValid(TSL_ChannelData_T *pCh, TSL_tMeas_T new_meas);
\r
180 void TSL_acq_BankStartAcq(void);
\r
181 TSL_Status_enum_T TSL_acq_BankWaitEOC(void);
\r
182 TSL_AcqStatus_enum_T TSL_acq_CheckNoise(void);
\r
183 TSL_tMeas_T TSL_acq_GetMeas(TSL_tIndexSrc_T index);
\r
184 TSL_tDelta_T TSL_acq_ComputeDelta(TSL_tRef_T ref, TSL_tMeas_T meas);
\r
185 TSL_tMeas_T TSL_acq_ComputeMeas(TSL_tRef_T ref, TSL_tDelta_T delta);
\r
187 #endif /* __TSL_ACQ_STM32F0XX_H */
\r
189 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
\r