Library to handle the X-NUCLEO-CCA01M1 Sound Terminal Expansion Board.

Dependencies:   ST_I2S X_NUCLEO_COMMON

Dependents:   HelloWorld_CCA01M1 HelloWorld_CCA01M1_mbedOS HelloWorld_CCA01M1_mbedOS Karaoke_CCA01M1_CCA02M1_mbedOS ... more

Fork of X_NUCLEO_CCA01M1 by ST Expansion SW Team

Sound Terminal Library

Library to handle the X-NUCLEO-CCA01M1 Sound Terminal Expansion Board based on the STA350BW Sound Terminal device. A single board allows the output of a standard 2-channel stereo signal, while two boards stacked up realize a 4-channel audio system.


Power supply

The X-NUCLEO-CCA01M1 Sound Terminal Expansion Board has to be powered with at least 5V DC. You can connect the VCC terminal to an external power supplier or directly to the +5V pin of the CN6 Arduino connector.


Platform compatibility

  • This board can be currently used with the Nucleo F4 Family only, please see the ST_I2S library compatibility for further information.
  • The library is compatible both with mbed OS 5.x and mbed classic 2.x (to work with mbed classic, the main application has to import the "events" library, which is not included into the "mbed" library).


I2S Peripheral Usage

This board makes use of an I2S peripheral available on Nucleo boards, and when stacked up two times on the same Nucleo board each expansion board have to be configured to use a different I2S peripheral.

By default it comes with solder bridges configured to use the I2S1 peripheral, as depicted here below:

/media/uploads/Davidroid/solder_bridges_i2s1.png

And can be set to use the I2S2 peripheral by configuring the solder bridges this way:

/media/uploads/Davidroid/solder_bridges_i2s2.png


Committer:
davide.aliprandi@st.com
Date:
Fri Feb 10 17:29:23 2017 +0100
Revision:
0:542c79e7e0ef
First version of the library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
davide.aliprandi@st.com 0:542c79e7e0ef 1 /**
davide.aliprandi@st.com 0:542c79e7e0ef 2 ******************************************************************************
davide.aliprandi@st.com 0:542c79e7e0ef 3 * @file sta350bw_class.cpp
davide.aliprandi@st.com 0:542c79e7e0ef 4 * @author Central Labs
davide.aliprandi@st.com 0:542c79e7e0ef 5 * @version V1.0.0
davide.aliprandi@st.com 0:542c79e7e0ef 6 * @date 18-August-2015
davide.aliprandi@st.com 0:542c79e7e0ef 7 * @brief This file provides the STA350BW SOUND TERMINAL audio driver.
davide.aliprandi@st.com 0:542c79e7e0ef 8 ******************************************************************************
davide.aliprandi@st.com 0:542c79e7e0ef 9 * @attention
davide.aliprandi@st.com 0:542c79e7e0ef 10 *
davide.aliprandi@st.com 0:542c79e7e0ef 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
davide.aliprandi@st.com 0:542c79e7e0ef 12 *
davide.aliprandi@st.com 0:542c79e7e0ef 13 * Redistribution and use in source and binary forms, with or without modification,
davide.aliprandi@st.com 0:542c79e7e0ef 14 * are permitted provided that the following conditions are met:
davide.aliprandi@st.com 0:542c79e7e0ef 15 * 1. Redistributions of source code must retain the above copyright notice,
davide.aliprandi@st.com 0:542c79e7e0ef 16 * this list of conditions and the following disclaimer.
davide.aliprandi@st.com 0:542c79e7e0ef 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
davide.aliprandi@st.com 0:542c79e7e0ef 18 * this list of conditions and the following disclaimer in the documentation
davide.aliprandi@st.com 0:542c79e7e0ef 19 * and/or other materials provided with the distribution.
davide.aliprandi@st.com 0:542c79e7e0ef 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
davide.aliprandi@st.com 0:542c79e7e0ef 21 * may be used to endorse or promote products derived from this software
davide.aliprandi@st.com 0:542c79e7e0ef 22 * without specific prior written permission.
davide.aliprandi@st.com 0:542c79e7e0ef 23 *
davide.aliprandi@st.com 0:542c79e7e0ef 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
davide.aliprandi@st.com 0:542c79e7e0ef 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
davide.aliprandi@st.com 0:542c79e7e0ef 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
davide.aliprandi@st.com 0:542c79e7e0ef 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
davide.aliprandi@st.com 0:542c79e7e0ef 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
davide.aliprandi@st.com 0:542c79e7e0ef 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
davide.aliprandi@st.com 0:542c79e7e0ef 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
davide.aliprandi@st.com 0:542c79e7e0ef 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
davide.aliprandi@st.com 0:542c79e7e0ef 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
davide.aliprandi@st.com 0:542c79e7e0ef 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
davide.aliprandi@st.com 0:542c79e7e0ef 34 *
davide.aliprandi@st.com 0:542c79e7e0ef 35 ******************************************************************************
davide.aliprandi@st.com 0:542c79e7e0ef 36 */
davide.aliprandi@st.com 0:542c79e7e0ef 37
davide.aliprandi@st.com 0:542c79e7e0ef 38
davide.aliprandi@st.com 0:542c79e7e0ef 39 /* Generated with STM32CubeTOO -----------------------------------------------*/
davide.aliprandi@st.com 0:542c79e7e0ef 40
davide.aliprandi@st.com 0:542c79e7e0ef 41
davide.aliprandi@st.com 0:542c79e7e0ef 42 /* Revision ------------------------------------------------------------------*/
davide.aliprandi@st.com 0:542c79e7e0ef 43 /*
davide.aliprandi@st.com 0:542c79e7e0ef 44 Repository: http://svn.x-nucleodev.codex.cro.st.com/svnroot/X-NucleoDev
davide.aliprandi@st.com 0:542c79e7e0ef 45 Branch/Trunk/Tag: trunk
davide.aliprandi@st.com 0:542c79e7e0ef 46 Based on: X-CUBE-SOUNDTER1/trunk/Drivers/BSP/Components/sta350bw/sta350bw.c
davide.aliprandi@st.com 0:542c79e7e0ef 47 Revision: 0
davide.aliprandi@st.com 0:542c79e7e0ef 48 */
davide.aliprandi@st.com 0:542c79e7e0ef 49
davide.aliprandi@st.com 0:542c79e7e0ef 50
davide.aliprandi@st.com 0:542c79e7e0ef 51 /* Includes ------------------------------------------------------------------*/
davide.aliprandi@st.com 0:542c79e7e0ef 52
davide.aliprandi@st.com 0:542c79e7e0ef 53 #include "sta350bw_class.h"
davide.aliprandi@st.com 0:542c79e7e0ef 54
davide.aliprandi@st.com 0:542c79e7e0ef 55
davide.aliprandi@st.com 0:542c79e7e0ef 56 /* Methods -------------------------------------------------------------------*/
davide.aliprandi@st.com 0:542c79e7e0ef 57
davide.aliprandi@st.com 0:542c79e7e0ef 58 /**
davide.aliprandi@st.com 0:542c79e7e0ef 59 * @brief Initializes the STA350BW and the control interface.
davide.aliprandi@st.com 0:542c79e7e0ef 60 * @param init: initialization data.
davide.aliprandi@st.com 0:542c79e7e0ef 61 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 62 */
davide.aliprandi@st.com 0:542c79e7e0ef 63 int32_t STA350BW::STA350BW_Init(void *init)
davide.aliprandi@st.com 0:542c79e7e0ef 64 {
davide.aliprandi@st.com 0:542c79e7e0ef 65 uint8_t tmp = 0x00;
davide.aliprandi@st.com 0:542c79e7e0ef 66
davide.aliprandi@st.com 0:542c79e7e0ef 67 /* Reset Audio Device */
davide.aliprandi@st.com 0:542c79e7e0ef 68 _reset = 0;
davide.aliprandi@st.com 0:542c79e7e0ef 69 wait_ms(100);
davide.aliprandi@st.com 0:542c79e7e0ef 70 _reset = 1;
davide.aliprandi@st.com 0:542c79e7e0ef 71
davide.aliprandi@st.com 0:542c79e7e0ef 72 /* Low level I2C init */
davide.aliprandi@st.com 0:542c79e7e0ef 73 STA350BW_IO_Init();
davide.aliprandi@st.com 0:542c79e7e0ef 74
davide.aliprandi@st.com 0:542c79e7e0ef 75 /* Set Master clock depending on sampling frequency */
davide.aliprandi@st.com 0:542c79e7e0ef 76 if (STA350BW_SetFrequency((*((STA350BW_Init_t *) init)).frequency) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 77 {
davide.aliprandi@st.com 0:542c79e7e0ef 78 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 79 }
davide.aliprandi@st.com 0:542c79e7e0ef 80
davide.aliprandi@st.com 0:542c79e7e0ef 81 STA350BW_IO_Delay(500);
davide.aliprandi@st.com 0:542c79e7e0ef 82
davide.aliprandi@st.com 0:542c79e7e0ef 83 /* Read Status Register */
davide.aliprandi@st.com 0:542c79e7e0ef 84 if (STA350BW_IO_Read(STA350BW_STATUS, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 85 {
davide.aliprandi@st.com 0:542c79e7e0ef 86 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 87 }
davide.aliprandi@st.com 0:542c79e7e0ef 88
davide.aliprandi@st.com 0:542c79e7e0ef 89 #if 0
davide.aliprandi@st.com 0:542c79e7e0ef 90 if (tmp != 0x7F)
davide.aliprandi@st.com 0:542c79e7e0ef 91 {
davide.aliprandi@st.com 0:542c79e7e0ef 92 /* Status register highlights undesired behaviour (PLL not locked, ...) */
davide.aliprandi@st.com 0:542c79e7e0ef 93 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 94 }
davide.aliprandi@st.com 0:542c79e7e0ef 95 #else
davide.aliprandi@st.com 0:542c79e7e0ef 96 if ((tmp & ~0x80) != 0x7F)
davide.aliprandi@st.com 0:542c79e7e0ef 97 {
davide.aliprandi@st.com 0:542c79e7e0ef 98 /*Status register highlights undesired behavior
davide.aliprandi@st.com 0:542c79e7e0ef 99 (betzw: excluding PLL not locked, ...) */
davide.aliprandi@st.com 0:542c79e7e0ef 100 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 101 }
davide.aliprandi@st.com 0:542c79e7e0ef 102 #endif
davide.aliprandi@st.com 0:542c79e7e0ef 103
davide.aliprandi@st.com 0:542c79e7e0ef 104 /* Setup Master volume */
davide.aliprandi@st.com 0:542c79e7e0ef 105 uint8_t value = (*((STA350BW_Init_t *) init)).volume;
davide.aliprandi@st.com 0:542c79e7e0ef 106 if (!(value >= MIN_VOLUME && value <= MAX_VOLUME))
davide.aliprandi@st.com 0:542c79e7e0ef 107 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 108 if (STA350BW_SetVolume(STA350BW_CHANNEL_MASTER, (uint8_t) MAX_VOLUME - value) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 109 {
davide.aliprandi@st.com 0:542c79e7e0ef 110 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 111 }
davide.aliprandi@st.com 0:542c79e7e0ef 112
davide.aliprandi@st.com 0:542c79e7e0ef 113 if (STA350BW_IO_Read(STA350BW_CONF_REGF, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 114 {
davide.aliprandi@st.com 0:542c79e7e0ef 115 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 116 }
davide.aliprandi@st.com 0:542c79e7e0ef 117
davide.aliprandi@st.com 0:542c79e7e0ef 118 #if 0
davide.aliprandi@st.com 0:542c79e7e0ef 119 tmp &= ~0x80;
davide.aliprandi@st.com 0:542c79e7e0ef 120 tmp |= 0x80;
davide.aliprandi@st.com 0:542c79e7e0ef 121
davide.aliprandi@st.com 0:542c79e7e0ef 122 /* Enable Power Out Stage */
davide.aliprandi@st.com 0:542c79e7e0ef 123 if (STA350BW_IO_Write(STA350BW_CONF_REGF, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 124 {
davide.aliprandi@st.com 0:542c79e7e0ef 125 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 126 }
davide.aliprandi@st.com 0:542c79e7e0ef 127 #else
davide.aliprandi@st.com 0:542c79e7e0ef 128 /*Enable Power Out Stage*/
davide.aliprandi@st.com 0:542c79e7e0ef 129 if (STA350BW_PowerOn() != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 130 {
davide.aliprandi@st.com 0:542c79e7e0ef 131 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 132 }
davide.aliprandi@st.com 0:542c79e7e0ef 133
davide.aliprandi@st.com 0:542c79e7e0ef 134 #endif
davide.aliprandi@st.com 0:542c79e7e0ef 135
davide.aliprandi@st.com 0:542c79e7e0ef 136 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 137 }
davide.aliprandi@st.com 0:542c79e7e0ef 138
davide.aliprandi@st.com 0:542c79e7e0ef 139 /**
davide.aliprandi@st.com 0:542c79e7e0ef 140 * @brief Deinitializes the STA350BW and the control interface.
davide.aliprandi@st.com 0:542c79e7e0ef 141 * @param None.
davide.aliprandi@st.com 0:542c79e7e0ef 142 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise.
davide.aliprandi@st.com 0:542c79e7e0ef 143 */
davide.aliprandi@st.com 0:542c79e7e0ef 144 int32_t STA350BW::STA350BW_DeInit(void)
davide.aliprandi@st.com 0:542c79e7e0ef 145 {
davide.aliprandi@st.com 0:542c79e7e0ef 146 if (STA350BW_PowerOff() != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 147 {
davide.aliprandi@st.com 0:542c79e7e0ef 148 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 149 }
davide.aliprandi@st.com 0:542c79e7e0ef 150 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 151 }
davide.aliprandi@st.com 0:542c79e7e0ef 152
davide.aliprandi@st.com 0:542c79e7e0ef 153 /**
davide.aliprandi@st.com 0:542c79e7e0ef 154 * @brief Read the device ID.
davide.aliprandi@st.com 0:542c79e7e0ef 155 * @param id: identifier.
davide.aliprandi@st.com 0:542c79e7e0ef 156 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 157 */
davide.aliprandi@st.com 0:542c79e7e0ef 158 int32_t STA350BW::STA350BW_ReadID(uint8_t *id)
davide.aliprandi@st.com 0:542c79e7e0ef 159 {
davide.aliprandi@st.com 0:542c79e7e0ef 160 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 161 }
davide.aliprandi@st.com 0:542c79e7e0ef 162
davide.aliprandi@st.com 0:542c79e7e0ef 163 /**
davide.aliprandi@st.com 0:542c79e7e0ef 164 * @brief Start the audio play.
davide.aliprandi@st.com 0:542c79e7e0ef 165 * @param *pData: pointer to audio data.
davide.aliprandi@st.com 0:542c79e7e0ef 166 * @param Size: size of the data buffer.
davide.aliprandi@st.com 0:542c79e7e0ef 167 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 168 */
davide.aliprandi@st.com 0:542c79e7e0ef 169 int32_t STA350BW::STA350BW_Play(int16_t *pData, uint16_t Size)
davide.aliprandi@st.com 0:542c79e7e0ef 170 {
davide.aliprandi@st.com 0:542c79e7e0ef 171 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 172 }
davide.aliprandi@st.com 0:542c79e7e0ef 173
davide.aliprandi@st.com 0:542c79e7e0ef 174 /**
davide.aliprandi@st.com 0:542c79e7e0ef 175 * @brief Pause the audio play.
davide.aliprandi@st.com 0:542c79e7e0ef 176 * @param None.
davide.aliprandi@st.com 0:542c79e7e0ef 177 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 178 */
davide.aliprandi@st.com 0:542c79e7e0ef 179 int32_t STA350BW::STA350BW_Pause(void)
davide.aliprandi@st.com 0:542c79e7e0ef 180 {
davide.aliprandi@st.com 0:542c79e7e0ef 181 /* Mute the output*/
davide.aliprandi@st.com 0:542c79e7e0ef 182 if (STA350BW_SetMute(STA350BW_CHANNEL_MASTER, STA350BW_ENABLE) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 183 {
davide.aliprandi@st.com 0:542c79e7e0ef 184 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 185 }
davide.aliprandi@st.com 0:542c79e7e0ef 186 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 187 }
davide.aliprandi@st.com 0:542c79e7e0ef 188
davide.aliprandi@st.com 0:542c79e7e0ef 189 /**
davide.aliprandi@st.com 0:542c79e7e0ef 190 * @brief Resume the audio play.
davide.aliprandi@st.com 0:542c79e7e0ef 191 * @param None.
davide.aliprandi@st.com 0:542c79e7e0ef 192 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 193 */
davide.aliprandi@st.com 0:542c79e7e0ef 194 int32_t STA350BW::STA350BW_Resume(void)
davide.aliprandi@st.com 0:542c79e7e0ef 195 {
davide.aliprandi@st.com 0:542c79e7e0ef 196 /* Unmute the output*/
davide.aliprandi@st.com 0:542c79e7e0ef 197 if (STA350BW_SetMute(STA350BW_CHANNEL_MASTER, STA350BW_DISABLE) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 198 {
davide.aliprandi@st.com 0:542c79e7e0ef 199 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 200 }
davide.aliprandi@st.com 0:542c79e7e0ef 201 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 202 }
davide.aliprandi@st.com 0:542c79e7e0ef 203
davide.aliprandi@st.com 0:542c79e7e0ef 204 /**
davide.aliprandi@st.com 0:542c79e7e0ef 205 * @brief Control the mute features of the STA350BW.
davide.aliprandi@st.com 0:542c79e7e0ef 206 * @param channel: channel to be muted.
davide.aliprandi@st.com 0:542c79e7e0ef 207 * This parameter can be a value of @ref STA350BW_channel_define
davide.aliprandi@st.com 0:542c79e7e0ef 208 * @param state: enable disable parameter
davide.aliprandi@st.com 0:542c79e7e0ef 209 * This parameter can be a value of @ref STA350BW_state_define
davide.aliprandi@st.com 0:542c79e7e0ef 210 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 211 */
davide.aliprandi@st.com 0:542c79e7e0ef 212 int32_t STA350BW::STA350BW_SetMute(uint8_t channel, uint8_t state)
davide.aliprandi@st.com 0:542c79e7e0ef 213 {
davide.aliprandi@st.com 0:542c79e7e0ef 214 uint8_t tmp;
davide.aliprandi@st.com 0:542c79e7e0ef 215
davide.aliprandi@st.com 0:542c79e7e0ef 216 if (STA350BW_IO_Read(STA350BW_MUTE, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 217 {
davide.aliprandi@st.com 0:542c79e7e0ef 218 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 219 }
davide.aliprandi@st.com 0:542c79e7e0ef 220 if (state == STA350BW_ENABLE)
davide.aliprandi@st.com 0:542c79e7e0ef 221 {
davide.aliprandi@st.com 0:542c79e7e0ef 222 tmp |= channel;
davide.aliprandi@st.com 0:542c79e7e0ef 223 } else
davide.aliprandi@st.com 0:542c79e7e0ef 224 {
davide.aliprandi@st.com 0:542c79e7e0ef 225 tmp &= ~channel;
davide.aliprandi@st.com 0:542c79e7e0ef 226 }
davide.aliprandi@st.com 0:542c79e7e0ef 227
davide.aliprandi@st.com 0:542c79e7e0ef 228 if (STA350BW_IO_Write(STA350BW_MUTE, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 229 {
davide.aliprandi@st.com 0:542c79e7e0ef 230 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 231 }
davide.aliprandi@st.com 0:542c79e7e0ef 232 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 233 }
davide.aliprandi@st.com 0:542c79e7e0ef 234
davide.aliprandi@st.com 0:542c79e7e0ef 235 /**
davide.aliprandi@st.com 0:542c79e7e0ef 236 * @brief Control the volume features of the STA350BW.
davide.aliprandi@st.com 0:542c79e7e0ef 237 * @param channel: channel to be controlled.
davide.aliprandi@st.com 0:542c79e7e0ef 238 * This parameter can be a value of @ref STA350BW_channel_define
davide.aliprandi@st.com 0:542c79e7e0ef 239 * @param volume: volume to be set
davide.aliprandi@st.com 0:542c79e7e0ef 240 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 241 */
davide.aliprandi@st.com 0:542c79e7e0ef 242 int32_t STA350BW::STA350BW_SetVolume(uint8_t channel, uint8_t value)
davide.aliprandi@st.com 0:542c79e7e0ef 243 {
davide.aliprandi@st.com 0:542c79e7e0ef 244 /*Setup volume */
davide.aliprandi@st.com 0:542c79e7e0ef 245 uint8_t tmp = value;
davide.aliprandi@st.com 0:542c79e7e0ef 246 if (STA350BW_IO_Write(STA350BW_MVOL + channel, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 247 {
davide.aliprandi@st.com 0:542c79e7e0ef 248 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 249 }
davide.aliprandi@st.com 0:542c79e7e0ef 250 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 251 }
davide.aliprandi@st.com 0:542c79e7e0ef 252
davide.aliprandi@st.com 0:542c79e7e0ef 253 /**
davide.aliprandi@st.com 0:542c79e7e0ef 254 * @brief set the sampling frequency for STA350BW.
davide.aliprandi@st.com 0:542c79e7e0ef 255 * @param audio_freq: audio frequency to be set.
davide.aliprandi@st.com 0:542c79e7e0ef 256 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 257 */
davide.aliprandi@st.com 0:542c79e7e0ef 258 int32_t STA350BW::STA350BW_SetFrequency(uint32_t audio_freq)
davide.aliprandi@st.com 0:542c79e7e0ef 259 {
davide.aliprandi@st.com 0:542c79e7e0ef 260 uint8_t tmp;
davide.aliprandi@st.com 0:542c79e7e0ef 261
davide.aliprandi@st.com 0:542c79e7e0ef 262 if (STA350BW_IO_Read(STA350BW_CONF_REGA, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 263 {
davide.aliprandi@st.com 0:542c79e7e0ef 264 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 265 }
davide.aliprandi@st.com 0:542c79e7e0ef 266
davide.aliprandi@st.com 0:542c79e7e0ef 267 tmp &= ~0x1F;
davide.aliprandi@st.com 0:542c79e7e0ef 268
davide.aliprandi@st.com 0:542c79e7e0ef 269 if (audio_freq == STA350BW_Fs_32000 || audio_freq == STA350BW_Fs_44100 || audio_freq == STA350BW_Fs_48000)
davide.aliprandi@st.com 0:542c79e7e0ef 270 {
davide.aliprandi@st.com 0:542c79e7e0ef 271 tmp |= STA350BW_MCLK_256_LR_48K;
davide.aliprandi@st.com 0:542c79e7e0ef 272 }
davide.aliprandi@st.com 0:542c79e7e0ef 273 else if (audio_freq == STA350BW_Fs_88200 || audio_freq == STA350BW_Fs_96000)
davide.aliprandi@st.com 0:542c79e7e0ef 274 {
davide.aliprandi@st.com 0:542c79e7e0ef 275 tmp |= STA350BW_MCLK_256_LR_96K;
davide.aliprandi@st.com 0:542c79e7e0ef 276 }
davide.aliprandi@st.com 0:542c79e7e0ef 277 else
davide.aliprandi@st.com 0:542c79e7e0ef 278 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 279
davide.aliprandi@st.com 0:542c79e7e0ef 280 if (STA350BW_IO_Write(STA350BW_CONF_REGA, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 281 {
davide.aliprandi@st.com 0:542c79e7e0ef 282 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 283 }
davide.aliprandi@st.com 0:542c79e7e0ef 284
davide.aliprandi@st.com 0:542c79e7e0ef 285 /* Set I2S audio frequency. */
davide.aliprandi@st.com 0:542c79e7e0ef 286 dev_i2s.audio_frequency(audio_freq);
davide.aliprandi@st.com 0:542c79e7e0ef 287
davide.aliprandi@st.com 0:542c79e7e0ef 288 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 289 }
davide.aliprandi@st.com 0:542c79e7e0ef 290
davide.aliprandi@st.com 0:542c79e7e0ef 291 /**
davide.aliprandi@st.com 0:542c79e7e0ef 292 * @brief Set equalization parameters for STA350BW biquad section.
davide.aliprandi@st.com 0:542c79e7e0ef 293 * @param ram_block: ram block to be set
davide.aliprandi@st.com 0:542c79e7e0ef 294 * @param filter_number: filter number
davide.aliprandi@st.com 0:542c79e7e0ef 295 * @param *filter_values: pointer to a uint32_t array containing filter coefficients
davide.aliprandi@st.com 0:542c79e7e0ef 296 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 297 */
davide.aliprandi@st.com 0:542c79e7e0ef 298 int32_t STA350BW::STA350BW_SetEq(uint8_t ram_block, uint8_t filter_number, uint32_t * filter_values)
davide.aliprandi@st.com 0:542c79e7e0ef 299 {
davide.aliprandi@st.com 0:542c79e7e0ef 300 /*5 is due to the ram adressing: first filter is on the adresses 0x00 to 0x04; the second is on 0x05 to 0x09 ...*/
davide.aliprandi@st.com 0:542c79e7e0ef 301 STA350BW_WriteRAMSet(ram_block, filter_number * 5, (uint8_t *) filter_values);
davide.aliprandi@st.com 0:542c79e7e0ef 302 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 303 }
davide.aliprandi@st.com 0:542c79e7e0ef 304
davide.aliprandi@st.com 0:542c79e7e0ef 305 /**
davide.aliprandi@st.com 0:542c79e7e0ef 306 * @brief Set tone value in the STA350BW tone register.
davide.aliprandi@st.com 0:542c79e7e0ef 307 * @param tone_gain: gain of the tone control
davide.aliprandi@st.com 0:542c79e7e0ef 308 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 309 */
davide.aliprandi@st.com 0:542c79e7e0ef 310 int32_t STA350BW::STA350BW_SetTone(uint8_t tone_gain)
davide.aliprandi@st.com 0:542c79e7e0ef 311 {
davide.aliprandi@st.com 0:542c79e7e0ef 312 uint8_t tmp = tone_gain;
davide.aliprandi@st.com 0:542c79e7e0ef 313
davide.aliprandi@st.com 0:542c79e7e0ef 314 if (STA350BW_IO_Write(STA350BW_TONE, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 315 {
davide.aliprandi@st.com 0:542c79e7e0ef 316 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 317 }
davide.aliprandi@st.com 0:542c79e7e0ef 318 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 319 }
davide.aliprandi@st.com 0:542c79e7e0ef 320
davide.aliprandi@st.com 0:542c79e7e0ef 321 /**
davide.aliprandi@st.com 0:542c79e7e0ef 322 * @brief Power on the device.
davide.aliprandi@st.com 0:542c79e7e0ef 323 * @param None.
davide.aliprandi@st.com 0:542c79e7e0ef 324 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 325 */
davide.aliprandi@st.com 0:542c79e7e0ef 326 int32_t STA350BW::STA350BW_PowerOn(void)
davide.aliprandi@st.com 0:542c79e7e0ef 327 {
davide.aliprandi@st.com 0:542c79e7e0ef 328 uint8_t tmp;
davide.aliprandi@st.com 0:542c79e7e0ef 329 if (STA350BW_IO_Read(STA350BW_CONF_REGF, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 330 {
davide.aliprandi@st.com 0:542c79e7e0ef 331 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 332 }
davide.aliprandi@st.com 0:542c79e7e0ef 333 tmp |= 0xC0;
davide.aliprandi@st.com 0:542c79e7e0ef 334 if (STA350BW_IO_Write(STA350BW_CONF_REGF, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 335 {
davide.aliprandi@st.com 0:542c79e7e0ef 336 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 337 }
davide.aliprandi@st.com 0:542c79e7e0ef 338 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 339 }
davide.aliprandi@st.com 0:542c79e7e0ef 340
davide.aliprandi@st.com 0:542c79e7e0ef 341 /**
davide.aliprandi@st.com 0:542c79e7e0ef 342 * @brief Power off the device.
davide.aliprandi@st.com 0:542c79e7e0ef 343 * @param None.
davide.aliprandi@st.com 0:542c79e7e0ef 344 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 345 */
davide.aliprandi@st.com 0:542c79e7e0ef 346 int32_t STA350BW::STA350BW_PowerOff(void)
davide.aliprandi@st.com 0:542c79e7e0ef 347 {
davide.aliprandi@st.com 0:542c79e7e0ef 348 uint8_t tmp;
davide.aliprandi@st.com 0:542c79e7e0ef 349 if (STA350BW_IO_Read(STA350BW_CONF_REGF, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 350 {
davide.aliprandi@st.com 0:542c79e7e0ef 351 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 352 }
davide.aliprandi@st.com 0:542c79e7e0ef 353 tmp &= ~0xC0;
davide.aliprandi@st.com 0:542c79e7e0ef 354 if (STA350BW_IO_Write(STA350BW_CONF_REGF, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 355 {
davide.aliprandi@st.com 0:542c79e7e0ef 356 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 357 }
davide.aliprandi@st.com 0:542c79e7e0ef 358 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 359 }
davide.aliprandi@st.com 0:542c79e7e0ef 360
davide.aliprandi@st.com 0:542c79e7e0ef 361 /**
davide.aliprandi@st.com 0:542c79e7e0ef 362 * @brief Stop audio stream.
davide.aliprandi@st.com 0:542c79e7e0ef 363 * @param None.
davide.aliprandi@st.com 0:542c79e7e0ef 364 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 365 */
davide.aliprandi@st.com 0:542c79e7e0ef 366 int32_t STA350BW::STA350BW_Stop(void)
davide.aliprandi@st.com 0:542c79e7e0ef 367 {
davide.aliprandi@st.com 0:542c79e7e0ef 368 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 369 }
davide.aliprandi@st.com 0:542c79e7e0ef 370
davide.aliprandi@st.com 0:542c79e7e0ef 371 /**
davide.aliprandi@st.com 0:542c79e7e0ef 372 * @brief Reset device.
davide.aliprandi@st.com 0:542c79e7e0ef 373 * @param NOne.
davide.aliprandi@st.com 0:542c79e7e0ef 374 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 375 */
davide.aliprandi@st.com 0:542c79e7e0ef 376 int32_t STA350BW::STA350BW_Reset(void)
davide.aliprandi@st.com 0:542c79e7e0ef 377 {
davide.aliprandi@st.com 0:542c79e7e0ef 378 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 379 }
davide.aliprandi@st.com 0:542c79e7e0ef 380
davide.aliprandi@st.com 0:542c79e7e0ef 381 /**
davide.aliprandi@st.com 0:542c79e7e0ef 382 * @brief This function can be used to set advanced DSP options in order to
davide.aliprandi@st.com 0:542c79e7e0ef 383 * use advanced features on the STA350BW device.
davide.aliprandi@st.com 0:542c79e7e0ef 384 * @param option: specific option to be setted up
davide.aliprandi@st.com 0:542c79e7e0ef 385 * This parameter can be a value of @ref STA350BW_DSP_option_selection
davide.aliprandi@st.com 0:542c79e7e0ef 386 * @param state: state of the option to be controlled. Depending on the selected
davide.aliprandi@st.com 0:542c79e7e0ef 387 * DSP feature to be controlled, this value can be either ENABLE/DISABLE
davide.aliprandi@st.com 0:542c79e7e0ef 388 * or a specific numerical parameter related to the specific DSP function.
davide.aliprandi@st.com 0:542c79e7e0ef 389 * This parameter can be a value of @ref STA350BW_state_define
davide.aliprandi@st.com 0:542c79e7e0ef 390 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 391 */
davide.aliprandi@st.com 0:542c79e7e0ef 392 int32_t STA350BW::STA350BW_SetDSPOption(uint8_t option, uint8_t state)
davide.aliprandi@st.com 0:542c79e7e0ef 393 {
davide.aliprandi@st.com 0:542c79e7e0ef 394 uint8_t tmp = 0;
davide.aliprandi@st.com 0:542c79e7e0ef 395
davide.aliprandi@st.com 0:542c79e7e0ef 396 switch (option)
davide.aliprandi@st.com 0:542c79e7e0ef 397 {
davide.aliprandi@st.com 0:542c79e7e0ef 398 case STA350BW_DSPB:
davide.aliprandi@st.com 0:542c79e7e0ef 399 {
davide.aliprandi@st.com 0:542c79e7e0ef 400 if (STA350BW_IO_Read(STA350BW_CONF_REGD, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 401 {
davide.aliprandi@st.com 0:542c79e7e0ef 402 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 403 }
davide.aliprandi@st.com 0:542c79e7e0ef 404 tmp &= ~0x04;
davide.aliprandi@st.com 0:542c79e7e0ef 405 tmp |= state << 0x02;
davide.aliprandi@st.com 0:542c79e7e0ef 406
davide.aliprandi@st.com 0:542c79e7e0ef 407 if (STA350BW_IO_Write(STA350BW_CONF_REGD, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 408 {
davide.aliprandi@st.com 0:542c79e7e0ef 409 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 410 }
davide.aliprandi@st.com 0:542c79e7e0ef 411 break;
davide.aliprandi@st.com 0:542c79e7e0ef 412 }
davide.aliprandi@st.com 0:542c79e7e0ef 413 case STA350BW_HPB:
davide.aliprandi@st.com 0:542c79e7e0ef 414 {
davide.aliprandi@st.com 0:542c79e7e0ef 415 if (STA350BW_IO_Read(STA350BW_CONF_REGD, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 416 {
davide.aliprandi@st.com 0:542c79e7e0ef 417 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 418 }
davide.aliprandi@st.com 0:542c79e7e0ef 419 tmp &= ~0x01;
davide.aliprandi@st.com 0:542c79e7e0ef 420 tmp |= state << 0x00;
davide.aliprandi@st.com 0:542c79e7e0ef 421
davide.aliprandi@st.com 0:542c79e7e0ef 422 if (STA350BW_IO_Write(STA350BW_CONF_REGD, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 423 {
davide.aliprandi@st.com 0:542c79e7e0ef 424 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 425 }
davide.aliprandi@st.com 0:542c79e7e0ef 426 break;
davide.aliprandi@st.com 0:542c79e7e0ef 427 }
davide.aliprandi@st.com 0:542c79e7e0ef 428 case STA350BW_DEMP:
davide.aliprandi@st.com 0:542c79e7e0ef 429 {
davide.aliprandi@st.com 0:542c79e7e0ef 430 if (STA350BW_IO_Read(STA350BW_CONF_REGD, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 431 {
davide.aliprandi@st.com 0:542c79e7e0ef 432 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 433 }
davide.aliprandi@st.com 0:542c79e7e0ef 434 tmp &= ~0x02;
davide.aliprandi@st.com 0:542c79e7e0ef 435 tmp |= state << 0x01;
davide.aliprandi@st.com 0:542c79e7e0ef 436
davide.aliprandi@st.com 0:542c79e7e0ef 437 if (STA350BW_IO_Write(STA350BW_CONF_REGD, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 438 {
davide.aliprandi@st.com 0:542c79e7e0ef 439 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 440 }
davide.aliprandi@st.com 0:542c79e7e0ef 441 break;
davide.aliprandi@st.com 0:542c79e7e0ef 442 }
davide.aliprandi@st.com 0:542c79e7e0ef 443 case STA350BW_BQL:
davide.aliprandi@st.com 0:542c79e7e0ef 444 {
davide.aliprandi@st.com 0:542c79e7e0ef 445 if (STA350BW_IO_Read(STA350BW_CONF_REGD, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 446 {
davide.aliprandi@st.com 0:542c79e7e0ef 447 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 448 }
davide.aliprandi@st.com 0:542c79e7e0ef 449 tmp &= ~0x08;
davide.aliprandi@st.com 0:542c79e7e0ef 450 tmp |= state << 0x04;
davide.aliprandi@st.com 0:542c79e7e0ef 451
davide.aliprandi@st.com 0:542c79e7e0ef 452 if (STA350BW_IO_Write(STA350BW_CONF_REGD, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 453 {
davide.aliprandi@st.com 0:542c79e7e0ef 454 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 455 }
davide.aliprandi@st.com 0:542c79e7e0ef 456 break;
davide.aliprandi@st.com 0:542c79e7e0ef 457 }
davide.aliprandi@st.com 0:542c79e7e0ef 458 case STA350BW_BQ5:
davide.aliprandi@st.com 0:542c79e7e0ef 459 {
davide.aliprandi@st.com 0:542c79e7e0ef 460 if (STA350BW_IO_Read(STA350BW_CONFX, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 461 {
davide.aliprandi@st.com 0:542c79e7e0ef 462 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 463 }
davide.aliprandi@st.com 0:542c79e7e0ef 464 tmp &= ~0x04;
davide.aliprandi@st.com 0:542c79e7e0ef 465 tmp |= state << 0x02;
davide.aliprandi@st.com 0:542c79e7e0ef 466
davide.aliprandi@st.com 0:542c79e7e0ef 467 if (STA350BW_IO_Write(STA350BW_CONFX, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 468 {
davide.aliprandi@st.com 0:542c79e7e0ef 469 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 470 }
davide.aliprandi@st.com 0:542c79e7e0ef 471 break;
davide.aliprandi@st.com 0:542c79e7e0ef 472 }
davide.aliprandi@st.com 0:542c79e7e0ef 473 case STA350BW_BQ6:
davide.aliprandi@st.com 0:542c79e7e0ef 474 {
davide.aliprandi@st.com 0:542c79e7e0ef 475 if (STA350BW_IO_Read(STA350BW_CONFX, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 476 {
davide.aliprandi@st.com 0:542c79e7e0ef 477 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 478 }
davide.aliprandi@st.com 0:542c79e7e0ef 479 tmp &= ~0x02;
davide.aliprandi@st.com 0:542c79e7e0ef 480 tmp |= state << 0x01;
davide.aliprandi@st.com 0:542c79e7e0ef 481
davide.aliprandi@st.com 0:542c79e7e0ef 482 if (STA350BW_IO_Write(STA350BW_CONFX, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 483 {
davide.aliprandi@st.com 0:542c79e7e0ef 484 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 485 }
davide.aliprandi@st.com 0:542c79e7e0ef 486 break;
davide.aliprandi@st.com 0:542c79e7e0ef 487 }
davide.aliprandi@st.com 0:542c79e7e0ef 488 case STA350BW_BQ7:
davide.aliprandi@st.com 0:542c79e7e0ef 489 {
davide.aliprandi@st.com 0:542c79e7e0ef 490 if (STA350BW_IO_Read(STA350BW_CONFX, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 491 {
davide.aliprandi@st.com 0:542c79e7e0ef 492 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 493 }
davide.aliprandi@st.com 0:542c79e7e0ef 494 tmp &= ~0x01;
davide.aliprandi@st.com 0:542c79e7e0ef 495 tmp |= state << 0x00;
davide.aliprandi@st.com 0:542c79e7e0ef 496
davide.aliprandi@st.com 0:542c79e7e0ef 497 if (STA350BW_IO_Write(STA350BW_CONFX, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 498 {
davide.aliprandi@st.com 0:542c79e7e0ef 499 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 500 }
davide.aliprandi@st.com 0:542c79e7e0ef 501 break;
davide.aliprandi@st.com 0:542c79e7e0ef 502 }
davide.aliprandi@st.com 0:542c79e7e0ef 503 case STA350BW_C1EQBP:
davide.aliprandi@st.com 0:542c79e7e0ef 504 {
davide.aliprandi@st.com 0:542c79e7e0ef 505 if (STA350BW_IO_Read(STA350BW_C1CFG, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 506 {
davide.aliprandi@st.com 0:542c79e7e0ef 507 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 508 }
davide.aliprandi@st.com 0:542c79e7e0ef 509 tmp &= ~0x02;
davide.aliprandi@st.com 0:542c79e7e0ef 510 tmp |= state << 0x01;
davide.aliprandi@st.com 0:542c79e7e0ef 511
davide.aliprandi@st.com 0:542c79e7e0ef 512 if (STA350BW_IO_Write(STA350BW_C1CFG, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 513 {
davide.aliprandi@st.com 0:542c79e7e0ef 514 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 515 }
davide.aliprandi@st.com 0:542c79e7e0ef 516 break;
davide.aliprandi@st.com 0:542c79e7e0ef 517 }
davide.aliprandi@st.com 0:542c79e7e0ef 518 case STA350BW_C2EQBP:
davide.aliprandi@st.com 0:542c79e7e0ef 519 {
davide.aliprandi@st.com 0:542c79e7e0ef 520 if (STA350BW_IO_Read(STA350BW_C2CFG, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 521 {
davide.aliprandi@st.com 0:542c79e7e0ef 522 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 523 }
davide.aliprandi@st.com 0:542c79e7e0ef 524 tmp &= ~0x02;
davide.aliprandi@st.com 0:542c79e7e0ef 525 tmp |= state << 0x01;
davide.aliprandi@st.com 0:542c79e7e0ef 526
davide.aliprandi@st.com 0:542c79e7e0ef 527 if (STA350BW_IO_Write(STA350BW_C2CFG, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 528 {
davide.aliprandi@st.com 0:542c79e7e0ef 529 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 530 }
davide.aliprandi@st.com 0:542c79e7e0ef 531 break;
davide.aliprandi@st.com 0:542c79e7e0ef 532 }
davide.aliprandi@st.com 0:542c79e7e0ef 533 case STA350BW_C1TCB:
davide.aliprandi@st.com 0:542c79e7e0ef 534 {
davide.aliprandi@st.com 0:542c79e7e0ef 535 if (STA350BW_IO_Read(STA350BW_C1CFG, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 536 {
davide.aliprandi@st.com 0:542c79e7e0ef 537 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 538 }
davide.aliprandi@st.com 0:542c79e7e0ef 539 tmp &= ~0x01;
davide.aliprandi@st.com 0:542c79e7e0ef 540 tmp |= state << 0x00;
davide.aliprandi@st.com 0:542c79e7e0ef 541
davide.aliprandi@st.com 0:542c79e7e0ef 542 if (STA350BW_IO_Write(STA350BW_C1CFG, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 543 {
davide.aliprandi@st.com 0:542c79e7e0ef 544 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 545 }
davide.aliprandi@st.com 0:542c79e7e0ef 546 break;
davide.aliprandi@st.com 0:542c79e7e0ef 547 }
davide.aliprandi@st.com 0:542c79e7e0ef 548 case STA350BW_C2TCB:
davide.aliprandi@st.com 0:542c79e7e0ef 549 {
davide.aliprandi@st.com 0:542c79e7e0ef 550 if (STA350BW_IO_Read(STA350BW_C2CFG, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 551 {
davide.aliprandi@st.com 0:542c79e7e0ef 552 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 553 }
davide.aliprandi@st.com 0:542c79e7e0ef 554 tmp &= ~0x01;
davide.aliprandi@st.com 0:542c79e7e0ef 555 tmp |= state << 0x00;
davide.aliprandi@st.com 0:542c79e7e0ef 556
davide.aliprandi@st.com 0:542c79e7e0ef 557 if (STA350BW_IO_Write(STA350BW_C2CFG, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 558 {
davide.aliprandi@st.com 0:542c79e7e0ef 559 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 560 }
davide.aliprandi@st.com 0:542c79e7e0ef 561 break;
davide.aliprandi@st.com 0:542c79e7e0ef 562 }
davide.aliprandi@st.com 0:542c79e7e0ef 563 case STA350BW_C1VBP:
davide.aliprandi@st.com 0:542c79e7e0ef 564 {
davide.aliprandi@st.com 0:542c79e7e0ef 565 if (STA350BW_IO_Read(STA350BW_C1CFG, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 566 {
davide.aliprandi@st.com 0:542c79e7e0ef 567 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 568 }
davide.aliprandi@st.com 0:542c79e7e0ef 569 tmp &= ~0x04;
davide.aliprandi@st.com 0:542c79e7e0ef 570 tmp |= state << 0x02;
davide.aliprandi@st.com 0:542c79e7e0ef 571
davide.aliprandi@st.com 0:542c79e7e0ef 572 if (STA350BW_IO_Write(STA350BW_C1CFG, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 573 {
davide.aliprandi@st.com 0:542c79e7e0ef 574 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 575 }
davide.aliprandi@st.com 0:542c79e7e0ef 576 break;
davide.aliprandi@st.com 0:542c79e7e0ef 577 }
davide.aliprandi@st.com 0:542c79e7e0ef 578 case STA350BW_C2VBP:
davide.aliprandi@st.com 0:542c79e7e0ef 579 {
davide.aliprandi@st.com 0:542c79e7e0ef 580 if (STA350BW_IO_Read(STA350BW_C2CFG, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 581 {
davide.aliprandi@st.com 0:542c79e7e0ef 582 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 583 }
davide.aliprandi@st.com 0:542c79e7e0ef 584 tmp &= ~0x04;
davide.aliprandi@st.com 0:542c79e7e0ef 585 tmp |= state << 0x02;
davide.aliprandi@st.com 0:542c79e7e0ef 586
davide.aliprandi@st.com 0:542c79e7e0ef 587 if (STA350BW_IO_Write(STA350BW_C2CFG, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 588 {
davide.aliprandi@st.com 0:542c79e7e0ef 589 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 590 }
davide.aliprandi@st.com 0:542c79e7e0ef 591 break;
davide.aliprandi@st.com 0:542c79e7e0ef 592 }
davide.aliprandi@st.com 0:542c79e7e0ef 593 case STA350BW_EXT_RANGE_BQ1:
davide.aliprandi@st.com 0:542c79e7e0ef 594 {
davide.aliprandi@st.com 0:542c79e7e0ef 595 if (STA350BW_IO_Read(STA350BW_CXT_B4B1, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 596 {
davide.aliprandi@st.com 0:542c79e7e0ef 597 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 598 }
davide.aliprandi@st.com 0:542c79e7e0ef 599 tmp &= ~0x03;
davide.aliprandi@st.com 0:542c79e7e0ef 600 tmp |= (state>>1);
davide.aliprandi@st.com 0:542c79e7e0ef 601
davide.aliprandi@st.com 0:542c79e7e0ef 602 if (STA350BW_IO_Write(STA350BW_CXT_B4B1, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 603 {
davide.aliprandi@st.com 0:542c79e7e0ef 604 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 605 }
davide.aliprandi@st.com 0:542c79e7e0ef 606 break;
davide.aliprandi@st.com 0:542c79e7e0ef 607 }
davide.aliprandi@st.com 0:542c79e7e0ef 608 case STA350BW_EXT_RANGE_BQ2:
davide.aliprandi@st.com 0:542c79e7e0ef 609 {
davide.aliprandi@st.com 0:542c79e7e0ef 610 if (STA350BW_IO_Read(STA350BW_CXT_B4B1, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 611 {
davide.aliprandi@st.com 0:542c79e7e0ef 612 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 613 }
davide.aliprandi@st.com 0:542c79e7e0ef 614 tmp &= ~0x0C;
davide.aliprandi@st.com 0:542c79e7e0ef 615 tmp |= (state>>1) << 2;
davide.aliprandi@st.com 0:542c79e7e0ef 616
davide.aliprandi@st.com 0:542c79e7e0ef 617 if (STA350BW_IO_Write(STA350BW_CXT_B4B1, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 618 {
davide.aliprandi@st.com 0:542c79e7e0ef 619 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 620 }
davide.aliprandi@st.com 0:542c79e7e0ef 621 break;
davide.aliprandi@st.com 0:542c79e7e0ef 622 }
davide.aliprandi@st.com 0:542c79e7e0ef 623 case STA350BW_EXT_RANGE_BQ3:
davide.aliprandi@st.com 0:542c79e7e0ef 624 {
davide.aliprandi@st.com 0:542c79e7e0ef 625 if (STA350BW_IO_Read(STA350BW_CXT_B4B1, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 626 {
davide.aliprandi@st.com 0:542c79e7e0ef 627 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 628 }
davide.aliprandi@st.com 0:542c79e7e0ef 629 tmp &= ~0x30;
davide.aliprandi@st.com 0:542c79e7e0ef 630 tmp |= (state>>1) << 4;
davide.aliprandi@st.com 0:542c79e7e0ef 631
davide.aliprandi@st.com 0:542c79e7e0ef 632 if (STA350BW_IO_Write(STA350BW_CXT_B4B1, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 633 {
davide.aliprandi@st.com 0:542c79e7e0ef 634 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 635 }
davide.aliprandi@st.com 0:542c79e7e0ef 636 break;
davide.aliprandi@st.com 0:542c79e7e0ef 637 }
davide.aliprandi@st.com 0:542c79e7e0ef 638 case STA350BW_EXT_RANGE_BQ4:
davide.aliprandi@st.com 0:542c79e7e0ef 639 {
davide.aliprandi@st.com 0:542c79e7e0ef 640 if (STA350BW_IO_Read(STA350BW_CXT_B4B1, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 641 {
davide.aliprandi@st.com 0:542c79e7e0ef 642 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 643 }
davide.aliprandi@st.com 0:542c79e7e0ef 644 tmp &= ~0xC0;
davide.aliprandi@st.com 0:542c79e7e0ef 645 tmp |= (state>>1) << 6;
davide.aliprandi@st.com 0:542c79e7e0ef 646
davide.aliprandi@st.com 0:542c79e7e0ef 647 if (STA350BW_IO_Write(STA350BW_CXT_B4B1, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 648 {
davide.aliprandi@st.com 0:542c79e7e0ef 649 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 650 }
davide.aliprandi@st.com 0:542c79e7e0ef 651 break;
davide.aliprandi@st.com 0:542c79e7e0ef 652 }
davide.aliprandi@st.com 0:542c79e7e0ef 653 case STA350BW_EXT_RANGE_BQ5:
davide.aliprandi@st.com 0:542c79e7e0ef 654 {
davide.aliprandi@st.com 0:542c79e7e0ef 655 if (STA350BW_IO_Read(STA350BW_CXT_B7B5, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 656 {
davide.aliprandi@st.com 0:542c79e7e0ef 657 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 658 }
davide.aliprandi@st.com 0:542c79e7e0ef 659 tmp &= ~0x03;
davide.aliprandi@st.com 0:542c79e7e0ef 660 tmp |= (state>>1);
davide.aliprandi@st.com 0:542c79e7e0ef 661
davide.aliprandi@st.com 0:542c79e7e0ef 662 if (STA350BW_IO_Write(STA350BW_CXT_B7B5, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 663 {
davide.aliprandi@st.com 0:542c79e7e0ef 664 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 665 }
davide.aliprandi@st.com 0:542c79e7e0ef 666 break;
davide.aliprandi@st.com 0:542c79e7e0ef 667 }
davide.aliprandi@st.com 0:542c79e7e0ef 668 case STA350BW_EXT_RANGE_BQ6:
davide.aliprandi@st.com 0:542c79e7e0ef 669 {
davide.aliprandi@st.com 0:542c79e7e0ef 670 if (STA350BW_IO_Read(STA350BW_CXT_B7B5, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 671 {
davide.aliprandi@st.com 0:542c79e7e0ef 672 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 673 }
davide.aliprandi@st.com 0:542c79e7e0ef 674 tmp &= ~0x0C;
davide.aliprandi@st.com 0:542c79e7e0ef 675 tmp |= (state>>1) << 2;
davide.aliprandi@st.com 0:542c79e7e0ef 676
davide.aliprandi@st.com 0:542c79e7e0ef 677 if (STA350BW_IO_Write(STA350BW_CXT_B7B5, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 678 {
davide.aliprandi@st.com 0:542c79e7e0ef 679 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 680 }
davide.aliprandi@st.com 0:542c79e7e0ef 681 break;
davide.aliprandi@st.com 0:542c79e7e0ef 682 }
davide.aliprandi@st.com 0:542c79e7e0ef 683 case STA350BW_EXT_RANGE_BQ7:
davide.aliprandi@st.com 0:542c79e7e0ef 684 {
davide.aliprandi@st.com 0:542c79e7e0ef 685 if (STA350BW_IO_Read(STA350BW_CXT_B7B5, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 686 {
davide.aliprandi@st.com 0:542c79e7e0ef 687 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 688 }
davide.aliprandi@st.com 0:542c79e7e0ef 689 tmp &= ~0x30;
davide.aliprandi@st.com 0:542c79e7e0ef 690 tmp |= (state>>1) << 4;
davide.aliprandi@st.com 0:542c79e7e0ef 691
davide.aliprandi@st.com 0:542c79e7e0ef 692 if (STA350BW_IO_Write(STA350BW_CXT_B7B5, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 693 {
davide.aliprandi@st.com 0:542c79e7e0ef 694 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 695 }
davide.aliprandi@st.com 0:542c79e7e0ef 696 break;
davide.aliprandi@st.com 0:542c79e7e0ef 697 }
davide.aliprandi@st.com 0:542c79e7e0ef 698 case STA350BW_RAM_BANK_SELECT:
davide.aliprandi@st.com 0:542c79e7e0ef 699 {
davide.aliprandi@st.com 0:542c79e7e0ef 700 if (STA350BW_IO_Read(STA350BW_EQCFG, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 701 {
davide.aliprandi@st.com 0:542c79e7e0ef 702 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 703 }
davide.aliprandi@st.com 0:542c79e7e0ef 704 tmp &= ~0x03;
davide.aliprandi@st.com 0:542c79e7e0ef 705 tmp |= state;
davide.aliprandi@st.com 0:542c79e7e0ef 706
davide.aliprandi@st.com 0:542c79e7e0ef 707 if (STA350BW_IO_Write(STA350BW_EQCFG, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 708 {
davide.aliprandi@st.com 0:542c79e7e0ef 709 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 710 }
davide.aliprandi@st.com 0:542c79e7e0ef 711 break;
davide.aliprandi@st.com 0:542c79e7e0ef 712 }
davide.aliprandi@st.com 0:542c79e7e0ef 713 }
davide.aliprandi@st.com 0:542c79e7e0ef 714 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 715 }
davide.aliprandi@st.com 0:542c79e7e0ef 716
davide.aliprandi@st.com 0:542c79e7e0ef 717 /**
davide.aliprandi@st.com 0:542c79e7e0ef 718 * @brief private function for writing a RAM set.
davide.aliprandi@st.com 0:542c79e7e0ef 719 * @param RAM_block: ram block to be written.
davide.aliprandi@st.com 0:542c79e7e0ef 720 * @param RAM_address: ram address to be written.
davide.aliprandi@st.com 0:542c79e7e0ef 721 * @param *pIn: pointer to the desired value to be write.
davide.aliprandi@st.com 0:542c79e7e0ef 722 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 0:542c79e7e0ef 723 */
davide.aliprandi@st.com 0:542c79e7e0ef 724 int32_t STA350BW::STA350BW_WriteRAMSet(uint8_t RAM_block, uint8_t RAM_address, uint8_t * pIn)
davide.aliprandi@st.com 0:542c79e7e0ef 725 {
davide.aliprandi@st.com 0:542c79e7e0ef 726 uint8_t tmp = 0x00;
davide.aliprandi@st.com 0:542c79e7e0ef 727 /*choose block*/
davide.aliprandi@st.com 0:542c79e7e0ef 728 if (STA350BW_IO_Read(STA350BW_EQCFG, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 729 {
davide.aliprandi@st.com 0:542c79e7e0ef 730 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 731 }
davide.aliprandi@st.com 0:542c79e7e0ef 732 tmp &= ~0x03;
davide.aliprandi@st.com 0:542c79e7e0ef 733 RAM_block &= 0x03;
davide.aliprandi@st.com 0:542c79e7e0ef 734 tmp |= RAM_block;
davide.aliprandi@st.com 0:542c79e7e0ef 735 if (STA350BW_IO_Write(STA350BW_EQCFG, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 736 {
davide.aliprandi@st.com 0:542c79e7e0ef 737 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 738 }
davide.aliprandi@st.com 0:542c79e7e0ef 739 /*set address*/
davide.aliprandi@st.com 0:542c79e7e0ef 740 if (STA350BW_IO_Read(STA350BW_CFADDR, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 741 {
davide.aliprandi@st.com 0:542c79e7e0ef 742 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 743 }
davide.aliprandi@st.com 0:542c79e7e0ef 744 tmp &= ~0x3F;
davide.aliprandi@st.com 0:542c79e7e0ef 745 RAM_address &= 0x3F;
davide.aliprandi@st.com 0:542c79e7e0ef 746 tmp |= RAM_address;
davide.aliprandi@st.com 0:542c79e7e0ef 747 if (STA350BW_IO_Write(STA350BW_CFADDR, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 748 {
davide.aliprandi@st.com 0:542c79e7e0ef 749 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 750 }
davide.aliprandi@st.com 0:542c79e7e0ef 751 /*write*/
davide.aliprandi@st.com 0:542c79e7e0ef 752 if (STA350BW_IO_Write(STA350BW_B1CF1, pIn[2]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 753 {
davide.aliprandi@st.com 0:542c79e7e0ef 754 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 755 }
davide.aliprandi@st.com 0:542c79e7e0ef 756 if (STA350BW_IO_Write(STA350BW_B1CF2, pIn[1]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 757 {
davide.aliprandi@st.com 0:542c79e7e0ef 758 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 759 }
davide.aliprandi@st.com 0:542c79e7e0ef 760 if (STA350BW_IO_Write(STA350BW_B1CF3, pIn[0]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 761 {
davide.aliprandi@st.com 0:542c79e7e0ef 762 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 763 }
davide.aliprandi@st.com 0:542c79e7e0ef 764 if (STA350BW_IO_Write(STA350BW_B2CF1, pIn[6]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 765 {
davide.aliprandi@st.com 0:542c79e7e0ef 766 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 767 }
davide.aliprandi@st.com 0:542c79e7e0ef 768 if (STA350BW_IO_Write(STA350BW_B2CF2, pIn[5]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 769 {
davide.aliprandi@st.com 0:542c79e7e0ef 770 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 771 }
davide.aliprandi@st.com 0:542c79e7e0ef 772 if (STA350BW_IO_Write(STA350BW_B2CF3, pIn[4]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 773 {
davide.aliprandi@st.com 0:542c79e7e0ef 774 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 775 }
davide.aliprandi@st.com 0:542c79e7e0ef 776 if (STA350BW_IO_Write(STA350BW_A1CF1, pIn[10]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 777 {
davide.aliprandi@st.com 0:542c79e7e0ef 778 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 779 }
davide.aliprandi@st.com 0:542c79e7e0ef 780 if (STA350BW_IO_Write(STA350BW_A1CF2, pIn[9]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 781 {
davide.aliprandi@st.com 0:542c79e7e0ef 782 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 783 }
davide.aliprandi@st.com 0:542c79e7e0ef 784 if (STA350BW_IO_Write(STA350BW_A1CF3, pIn[8]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 785 {
davide.aliprandi@st.com 0:542c79e7e0ef 786 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 787 }
davide.aliprandi@st.com 0:542c79e7e0ef 788 if (STA350BW_IO_Write(STA350BW_A2CF1, pIn[14]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 789 {
davide.aliprandi@st.com 0:542c79e7e0ef 790 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 791 }
davide.aliprandi@st.com 0:542c79e7e0ef 792 if (STA350BW_IO_Write(STA350BW_A2CF2, pIn[13]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 793 {
davide.aliprandi@st.com 0:542c79e7e0ef 794 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 795 }
davide.aliprandi@st.com 0:542c79e7e0ef 796 if (STA350BW_IO_Write(STA350BW_A2CF3, pIn[12]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 797 {
davide.aliprandi@st.com 0:542c79e7e0ef 798 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 799 }
davide.aliprandi@st.com 0:542c79e7e0ef 800 if (STA350BW_IO_Write(STA350BW_B0CF1, pIn[18]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 801 {
davide.aliprandi@st.com 0:542c79e7e0ef 802 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 803 }
davide.aliprandi@st.com 0:542c79e7e0ef 804 if (STA350BW_IO_Write(STA350BW_B0CF2, pIn[17]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 805 {
davide.aliprandi@st.com 0:542c79e7e0ef 806 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 807 }
davide.aliprandi@st.com 0:542c79e7e0ef 808 if (STA350BW_IO_Write(STA350BW_B0CF3, pIn[16]) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 809 {
davide.aliprandi@st.com 0:542c79e7e0ef 810 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 811 }
davide.aliprandi@st.com 0:542c79e7e0ef 812 /*Set WA PIN*/
davide.aliprandi@st.com 0:542c79e7e0ef 813 if (STA350BW_IO_Read(STA350BW_CFUD, &tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 814 {
davide.aliprandi@st.com 0:542c79e7e0ef 815 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 816 }
davide.aliprandi@st.com 0:542c79e7e0ef 817 tmp &= ~0x02;
davide.aliprandi@st.com 0:542c79e7e0ef 818 tmp = 0x02;
davide.aliprandi@st.com 0:542c79e7e0ef 819
davide.aliprandi@st.com 0:542c79e7e0ef 820 if (STA350BW_IO_Write(STA350BW_CFUD, tmp) != 0)
davide.aliprandi@st.com 0:542c79e7e0ef 821 {
davide.aliprandi@st.com 0:542c79e7e0ef 822 return COMPONENT_ERROR;
davide.aliprandi@st.com 0:542c79e7e0ef 823 }
davide.aliprandi@st.com 0:542c79e7e0ef 824 return COMPONENT_OK;
davide.aliprandi@st.com 0:542c79e7e0ef 825 }
davide.aliprandi@st.com 0:542c79e7e0ef 826
davide.aliprandi@st.com 0:542c79e7e0ef 827 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/