Evironmental Shield API

Committer:
Deepti
Date:
Tue Aug 19 07:00:40 2014 +0000
Revision:
1:d37d15b70bc5
Parent:
0:9ac219c9a7df
Environment Shield API;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Deepti 0:9ac219c9a7df 1 /**
Deepti 0:9ac219c9a7df 2 ******************************************************************************
Deepti 0:9ac219c9a7df 3 * @file uvis3.c
Deepti 0:9ac219c9a7df 4 * @author AST Robotics Team
Deepti 0:9ac219c9a7df 5 * @version V0.0.1
Deepti 0:9ac219c9a7df 6 * @date 10-March-2014
Deepti 0:9ac219c9a7df 7 * @brief This file provides a set of functions needed to manage the uvis3.
Deepti 0:9ac219c9a7df 8 ******************************************************************************
Deepti 0:9ac219c9a7df 9 * @attention
Deepti 0:9ac219c9a7df 10 *
Deepti 0:9ac219c9a7df 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
Deepti 0:9ac219c9a7df 12 *
Deepti 0:9ac219c9a7df 13 * Redistribution and use in source and binary forms, with or without modification,
Deepti 0:9ac219c9a7df 14 * are permitted provided that the following conditions are met:
Deepti 0:9ac219c9a7df 15 * 1. Redistributions of source code must retain the above copyright notice,
Deepti 0:9ac219c9a7df 16 * this list of conditions and the following disclaimer.
Deepti 0:9ac219c9a7df 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
Deepti 0:9ac219c9a7df 18 * this list of conditions and the following disclaimer in the documentation
Deepti 0:9ac219c9a7df 19 * and/or other materials provided with the distribution.
Deepti 0:9ac219c9a7df 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Deepti 0:9ac219c9a7df 21 * may be used to endorse or promote products derived from this software
Deepti 0:9ac219c9a7df 22 * without specific prior written permission.
Deepti 0:9ac219c9a7df 23 *
Deepti 0:9ac219c9a7df 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Deepti 0:9ac219c9a7df 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Deepti 0:9ac219c9a7df 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Deepti 0:9ac219c9a7df 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Deepti 0:9ac219c9a7df 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Deepti 0:9ac219c9a7df 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Deepti 0:9ac219c9a7df 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Deepti 0:9ac219c9a7df 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Deepti 0:9ac219c9a7df 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Deepti 0:9ac219c9a7df 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Deepti 0:9ac219c9a7df 34 *
Deepti 0:9ac219c9a7df 35 ******************************************************************************
Deepti 0:9ac219c9a7df 36 */
Deepti 0:9ac219c9a7df 37 /* Includes ------------------------------------------------------------------*/
Deepti 0:9ac219c9a7df 38 #include "uvis3.h"
Deepti 0:9ac219c9a7df 39
Deepti 0:9ac219c9a7df 40 /** @addtogroup BSP
Deepti 0:9ac219c9a7df 41 * @{
Deepti 0:9ac219c9a7df 42 */
Deepti 0:9ac219c9a7df 43
Deepti 0:9ac219c9a7df 44 /** @addtogroup STM32F439_SENSITRON
Deepti 0:9ac219c9a7df 45 * @{
Deepti 0:9ac219c9a7df 46 */
Deepti 0:9ac219c9a7df 47
Deepti 0:9ac219c9a7df 48 /** @addtogroup UVIS3
Deepti 0:9ac219c9a7df 49 * @{
Deepti 0:9ac219c9a7df 50 */
Deepti 0:9ac219c9a7df 51
Deepti 0:9ac219c9a7df 52
Deepti 0:9ac219c9a7df 53 /** @defgroup UVIS3_Private_TypesDefinitions
Deepti 0:9ac219c9a7df 54 * @{
Deepti 0:9ac219c9a7df 55 */
Deepti 0:9ac219c9a7df 56
Deepti 0:9ac219c9a7df 57 /**
Deepti 0:9ac219c9a7df 58 * @}
Deepti 0:9ac219c9a7df 59 */
Deepti 0:9ac219c9a7df 60
Deepti 0:9ac219c9a7df 61 /** @defgroup UVIS3_Private_Defines
Deepti 0:9ac219c9a7df 62 * @{
Deepti 0:9ac219c9a7df 63 */
Deepti 0:9ac219c9a7df 64
Deepti 0:9ac219c9a7df 65 /**
Deepti 0:9ac219c9a7df 66 * @}
Deepti 0:9ac219c9a7df 67 */
Deepti 0:9ac219c9a7df 68
Deepti 0:9ac219c9a7df 69 /** @defgroup UVIS3_Private_Macros
Deepti 0:9ac219c9a7df 70 * @{
Deepti 0:9ac219c9a7df 71 */
Deepti 0:9ac219c9a7df 72
Deepti 0:9ac219c9a7df 73 /**
Deepti 0:9ac219c9a7df 74 * @}
Deepti 0:9ac219c9a7df 75 */
Deepti 0:9ac219c9a7df 76
Deepti 0:9ac219c9a7df 77 /** @defgroup UVIS3_Private_Variables
Deepti 0:9ac219c9a7df 78 * @{
Deepti 0:9ac219c9a7df 79 */
Deepti 0:9ac219c9a7df 80
Deepti 0:9ac219c9a7df 81 UV_DrvTypeDef Uvis3Drv =
Deepti 0:9ac219c9a7df 82 {
Deepti 0:9ac219c9a7df 83 UVIS3_Init,
Deepti 0:9ac219c9a7df 84 UVIS3_ReadID,
Deepti 0:9ac219c9a7df 85 UVIS3_RebootCmd,
Deepti 0:9ac219c9a7df 86 0,//UVIS3_INT1InterruptConfig,
Deepti 0:9ac219c9a7df 87 0,//UVIS3_EnableIT,
Deepti 0:9ac219c9a7df 88 0,//UVIS3_DisableIT,
Deepti 0:9ac219c9a7df 89 0,
Deepti 0:9ac219c9a7df 90 0,
Deepti 0:9ac219c9a7df 91 UVIS3_GetIndex
Deepti 0:9ac219c9a7df 92 };
Deepti 0:9ac219c9a7df 93 /**
Deepti 0:9ac219c9a7df 94 * @}
Deepti 0:9ac219c9a7df 95 */
Deepti 0:9ac219c9a7df 96
Deepti 0:9ac219c9a7df 97 /** @defgroup UVIS3_Private_FunctionPrototypes
Deepti 0:9ac219c9a7df 98 * @{
Deepti 0:9ac219c9a7df 99 */
Deepti 0:9ac219c9a7df 100
Deepti 0:9ac219c9a7df 101 /**
Deepti 0:9ac219c9a7df 102 * @}
Deepti 0:9ac219c9a7df 103 */
Deepti 0:9ac219c9a7df 104
Deepti 0:9ac219c9a7df 105 /** @defgroup UVIS3_Private_Functions
Deepti 0:9ac219c9a7df 106 * @{
Deepti 0:9ac219c9a7df 107 */
Deepti 0:9ac219c9a7df 108
Deepti 0:9ac219c9a7df 109 /**
Deepti 0:9ac219c9a7df 110 * @brief Set UVIS3 Initialization.
Deepti 0:9ac219c9a7df 111 * @param InitStruct: it contains the configuration setting for the UVIS3.
Deepti 0:9ac219c9a7df 112 * @retval None
Deepti 0:9ac219c9a7df 113 */
Deepti 0:9ac219c9a7df 114 void UVIS3_Init(UV_InitTypeDef *UVIS3_Init)
Deepti 0:9ac219c9a7df 115 {
Deepti 0:9ac219c9a7df 116 uint8_t ctrl = 0x00;
Deepti 0:9ac219c9a7df 117
Deepti 0:9ac219c9a7df 118 /* Configure the low level interface ---------------------------------------*/
Deepti 0:9ac219c9a7df 119 UV_IO_Init();
Deepti 0:9ac219c9a7df 120
Deepti 0:9ac219c9a7df 121 /* Read CTRL_REG1 register */
Deepti 0:9ac219c9a7df 122 UV_IO_Read(&ctrl, UVIS3_ADDRESS, UVIS3_CTRL_REG1_ADDR, 1);
Deepti 0:9ac219c9a7df 123
Deepti 0:9ac219c9a7df 124 /* Power Mode selection */
Deepti 0:9ac219c9a7df 125 ctrl &= ~(UVIS3_MODE_MASK);
Deepti 0:9ac219c9a7df 126 ctrl |= UVIS3_Init->Power_Mode;
Deepti 0:9ac219c9a7df 127
Deepti 0:9ac219c9a7df 128 // if(UVIS3_Init->Power_Mode==UVIS3_MODE_POWERDOWN) {
Deepti 0:9ac219c9a7df 129 // ctrl |= 0x80;
Deepti 0:9ac219c9a7df 130 // } else {
Deepti 0:9ac219c9a7df 131 // ctrl &= 0x7F;
Deepti 0:9ac219c9a7df 132 // }
Deepti 0:9ac219c9a7df 133
Deepti 0:9ac219c9a7df 134 /* Data Rate selection */
Deepti 0:9ac219c9a7df 135 ctrl &= ~(UVIS3_ODR_MASK);
Deepti 0:9ac219c9a7df 136 ctrl |= UVIS3_Init->Output_DataRate;
Deepti 0:9ac219c9a7df 137
Deepti 0:9ac219c9a7df 138 // if(UVIS3_Init->Output_DataRate==UVIS3_ODR_1HZ) {
Deepti 0:9ac219c9a7df 139 // ctrl |= 0x01;
Deepti 0:9ac219c9a7df 140 // } else {
Deepti 0:9ac219c9a7df 141 // ctrl &= 0xFE;
Deepti 0:9ac219c9a7df 142 // }
Deepti 0:9ac219c9a7df 143
Deepti 0:9ac219c9a7df 144 /* Write value to MEMS CTRL_REG1 regsister */
Deepti 0:9ac219c9a7df 145 UV_IO_Write(&ctrl, UVIS3_ADDRESS, UVIS3_CTRL_REG1_ADDR, 1);
Deepti 0:9ac219c9a7df 146
Deepti 0:9ac219c9a7df 147 /* Write value to MEMS CTRL_REG2 regsister ??*/
Deepti 0:9ac219c9a7df 148 //ctrl = (uint8_t) InitStruct>>8;
Deepti 0:9ac219c9a7df 149 //UV_IO_Write(&ctrl, UVIS3_CTRL_REG2_ADDR, 1);
Deepti 0:9ac219c9a7df 150 }
Deepti 0:9ac219c9a7df 151
Deepti 0:9ac219c9a7df 152 /**
Deepti 0:9ac219c9a7df 153 * @brief Read ID address of UVIS3
Deepti 0:9ac219c9a7df 154 * @param Device ID address
Deepti 0:9ac219c9a7df 155 * @retval ID name
Deepti 0:9ac219c9a7df 156 */
Deepti 0:9ac219c9a7df 157 uint8_t UVIS3_ReadID(void)
Deepti 0:9ac219c9a7df 158 {
Deepti 0:9ac219c9a7df 159 uint8_t tmp;
Deepti 0:9ac219c9a7df 160
Deepti 0:9ac219c9a7df 161 /* Read WHO I AM register */
Deepti 0:9ac219c9a7df 162 UV_IO_Read(&tmp, UVIS3_ADDRESS, UVIS3_WHO_AM_I_ADDR, 1);
Deepti 0:9ac219c9a7df 163
Deepti 0:9ac219c9a7df 164 /* Return the ID */
Deepti 0:9ac219c9a7df 165 return (uint8_t)tmp;
Deepti 0:9ac219c9a7df 166 }
Deepti 0:9ac219c9a7df 167
Deepti 0:9ac219c9a7df 168 /**
Deepti 0:9ac219c9a7df 169 * @brief Reboot memory content of UVIS3
Deepti 0:9ac219c9a7df 170 * @param None
Deepti 0:9ac219c9a7df 171 * @retval None
Deepti 0:9ac219c9a7df 172 */
Deepti 0:9ac219c9a7df 173 void UVIS3_RebootCmd(void)
Deepti 0:9ac219c9a7df 174 {
Deepti 0:9ac219c9a7df 175 uint8_t tmpreg;
Deepti 0:9ac219c9a7df 176
Deepti 0:9ac219c9a7df 177 /* Read CTRL_REG5 register */
Deepti 0:9ac219c9a7df 178 UV_IO_Read(&tmpreg, UVIS3_ADDRESS, UVIS3_CTRL_REG2_ADDR, 1);
Deepti 0:9ac219c9a7df 179
Deepti 0:9ac219c9a7df 180 /* Enable or Disable the reboot memory */
Deepti 0:9ac219c9a7df 181 tmpreg |= UVIS3_BOOT_REBOOTMEMORY;
Deepti 0:9ac219c9a7df 182
Deepti 0:9ac219c9a7df 183 /* Write value to MEMS CTRL_REG5 regsister */
Deepti 0:9ac219c9a7df 184 UV_IO_Write(&tmpreg, UVIS3_ADDRESS, UVIS3_CTRL_REG2_ADDR, 1);
Deepti 0:9ac219c9a7df 185 }
Deepti 0:9ac219c9a7df 186
Deepti 0:9ac219c9a7df 187 /**
Deepti 0:9ac219c9a7df 188 * @brief Set UVIS3 Interrupt INT1 configuration
Deepti 0:9ac219c9a7df 189 * @param UVIS3_InterruptConfig_TypeDef: pointer to a UVIS3_InterruptConfig_TypeDef
Deepti 0:9ac219c9a7df 190 * structure that contains the configuration setting for the UVIS3 Interrupt.
Deepti 0:9ac219c9a7df 191 * @retval None
Deepti 0:9ac219c9a7df 192 */
Deepti 0:9ac219c9a7df 193 void UVIS3_INT1InterruptConfig(uint16_t Int1Config)
Deepti 0:9ac219c9a7df 194 {
Deepti 0:9ac219c9a7df 195
Deepti 0:9ac219c9a7df 196 }
Deepti 0:9ac219c9a7df 197
Deepti 0:9ac219c9a7df 198 /**
Deepti 0:9ac219c9a7df 199 * @brief Enable INT1
Deepti 0:9ac219c9a7df 200 * @retval None
Deepti 0:9ac219c9a7df 201 */
Deepti 0:9ac219c9a7df 202 void UVIS3_EnableIT()
Deepti 0:9ac219c9a7df 203 {
Deepti 0:9ac219c9a7df 204
Deepti 0:9ac219c9a7df 205 }
Deepti 0:9ac219c9a7df 206
Deepti 0:9ac219c9a7df 207 /**
Deepti 0:9ac219c9a7df 208 * @brief Disable INT1
Deepti 0:9ac219c9a7df 209 * @retval None
Deepti 0:9ac219c9a7df 210 */
Deepti 0:9ac219c9a7df 211 void UVIS3_DisableIT()
Deepti 0:9ac219c9a7df 212 {
Deepti 0:9ac219c9a7df 213
Deepti 0:9ac219c9a7df 214 }
Deepti 0:9ac219c9a7df 215
Deepti 0:9ac219c9a7df 216
Deepti 0:9ac219c9a7df 217 /**
Deepti 0:9ac219c9a7df 218 * @brief Calculate the UVIS3 UV index data.
Deepti 0:9ac219c9a7df 219 * @param pfData : Data out pointer
Deepti 0:9ac219c9a7df 220 * @retval None
Deepti 0:9ac219c9a7df 221 */
Deepti 0:9ac219c9a7df 222 void UVIS3_GetIndex(float* pfData)
Deepti 0:9ac219c9a7df 223 {
Deepti 0:9ac219c9a7df 224 uint8_t tmpreg;
Deepti 0:9ac219c9a7df 225 /* Read UVIS3_UVDATA_OUT_ADDR register */
Deepti 0:9ac219c9a7df 226 UV_IO_Read(&tmpreg, UVIS3_ADDRESS, UVIS3_UVDATA_OUT_ADDR, 1);
Deepti 0:9ac219c9a7df 227 //tmpreg=32;
Deepti 0:9ac219c9a7df 228 *pfData=(float)tmpreg/16.0f;
Deepti 0:9ac219c9a7df 229
Deepti 0:9ac219c9a7df 230 }
Deepti 0:9ac219c9a7df 231
Deepti 0:9ac219c9a7df 232 /**
Deepti 0:9ac219c9a7df 233 * @}
Deepti 0:9ac219c9a7df 234 */
Deepti 0:9ac219c9a7df 235
Deepti 0:9ac219c9a7df 236 /**
Deepti 0:9ac219c9a7df 237 * @}
Deepti 0:9ac219c9a7df 238 */
Deepti 0:9ac219c9a7df 239
Deepti 0:9ac219c9a7df 240 /**
Deepti 0:9ac219c9a7df 241 * @}
Deepti 0:9ac219c9a7df 242 */
Deepti 0:9ac219c9a7df 243
Deepti 0:9ac219c9a7df 244 /**
Deepti 0:9ac219c9a7df 245 * @}
Deepti 0:9ac219c9a7df 246 */
Deepti 0:9ac219c9a7df 247
Deepti 0:9ac219c9a7df 248
Deepti 0:9ac219c9a7df 249 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Deepti 0:9ac219c9a7df 250