Evironmental Shield API
BSP/Components/uvis3/uvis3.c@1:d37d15b70bc5, 2014-08-19 (annotated)
- 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?
User | Revision | Line number | New 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>© 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 |