foxBMS  1.1.0
The foxBMS Battery Management System API Documentation
adc.h
Go to the documentation of this file.
1 /**
2  *
3  * @copyright © 2010 - 2021, Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V.
4  * All rights reserved.
5  *
6  * SPDX-License-Identifier: BSD-3-Clause
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions are met:
10  *
11  * 1. Redistributions of source code must retain the above copyright notice, this
12  * list of conditions and the following disclaimer.
13  *
14  * 2. Redistributions in binary form must reproduce the above copyright notice,
15  * this list of conditions and the following disclaimer in the documentation
16  * and/or other materials provided with the distribution.
17  *
18  * 3. Neither the name of the copyright holder nor the names of its
19  * contributors may be used to endorse or promote products derived from
20  * this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  *
33  * We kindly request you to use one or more of the following phrases to refer to
34  * foxBMS in your hardware, software, documentation or advertising materials:
35  *
36  * - ″This product uses parts of foxBMS®″
37  * - ″This product includes parts of foxBMS®″
38  * - ″This product is derived from foxBMS®″
39  *
40  */
41 
42 /**
43  * @file adc.h
44  * @author foxBMS Team
45  * @date 2019-01-07 (date of creation)
46  * @updated 2021-03-24 (date of last update)
47  * @ingroup DRIVERS
48  * @prefix ADC
49  *
50  * @brief Headers for the driver for the ADC module.
51  *
52  */
53 
54 #ifndef FOXBMS__ADC_H_
55 #define FOXBMS__ADC_H_
56 
57 /*========== Includes =======================================================*/
58 #include "general.h"
59 
60 #include "battery_system_cfg.h"
61 
62 #include "io.h"
63 #include "spi.h"
64 
65 /*========== Macros and Definitions =========================================*/
66 
67 /** HET1 GIO register that the ADC is connected to. */
68 #define ADC_HET1_GIO (hetREG1)
69 /** Pin of HET1 that the ADC Reset is connected to. */
70 #define ADC_HET1_RESET_PIN (28U)
71 
72 /** Voltage reference used by ADC0 */
73 #define ADC_VREF_1 (2.5f)
74 /** Voltage reference used by ADC1 */
75 #define ADC_VREF_2 (4.096f)
76 /** ADC digital gain, set in registers 0x11 to 0x14 */
77 #define ADC_GAIN (1.0f)
78 
79 /**
80  * Size of SPI messages used to send commands to the ADC
81  * Example of commands: NULL, read or write register, lock, unlock...
82  */
83 #define SINGLE_MESSAGE_LENGTH (2U)
84 /** Size of SPI messages used to retrieve conversion results of the ADC */
85 #define CONVERT_LENGTH (10U)
86 /** Number of channels measured by the ADC. ADS131A04 has four channels. */
87 #define ADC_NUMBER_OF_CHANNELS (4U)
88 
89 /**
90  * State for the ADC conversion
91  */
92 typedef enum {
105 } ADC_STATE_e;
106 
107 /*========== Extern Constant and Variable Declarations ======================*/
108 
109 /*========== Extern Function Prototypes =====================================*/
110 
111 /**
112  * @brief initializes the ADC devices. It is called during startup.
113  */
114 extern void ADC_Initialize(void);
115 
116 /**
117  * @brief determines which ADC is measured and stores result in database.
118  * @details It alternates between measurement on ADC1 and ADC2. Measurement
119  * read by SPI.
120  */
121 extern void ADC_Control(void);
122 
123 /*========== Externalized Static Functions Prototypes (Unit Test) ===========*/
124 
125 #endif /* FOXBMS__ADC_H_ */
ADC_STATE_e
Definition: adc.h:92
@ ADC_CONVERT_2
Definition: adc.h:104
@ ADC_LOCK
Definition: adc.h:102
@ ADC_ENDINIT
Definition: adc.h:94
@ ADC_WAKEUP
Definition: adc.h:101
@ ADC_READ_ADC_ENA
Definition: adc.h:99
@ ADC_CHECK_ADC_ENA
Definition: adc.h:100
@ ADC_UNLOCK
Definition: adc.h:96
@ ADC_CONVERT_1
Definition: adc.h:103
@ ADC_READY
Definition: adc.h:95
@ ADC_UNLOCKED
Definition: adc.h:97
@ ADC_WRITE_ADC_ENA
Definition: adc.h:98
@ ADC_INIT
Definition: adc.h:93
void ADC_Control(void)
determines which ADC is measured and stores result in database.
Definition: adc.c:211
void ADC_Initialize(void)
initializes the ADC devices. It is called during startup.
Definition: adc.c:194
Configuration of the battery system (e.g., number of battery modules, battery cells,...
General macros and definitions for the whole platform.
Header for the driver for the IO module.
Headers for the driver for the SPI module.