summaryrefslogtreecommitdiff
path: root/msp340/Break/driverlib/MSP430FR5xx_6xx/ref_a.h
blob: 4169b20da88d4fa7a9d0a11106e5e1d4379656a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
/* --COPYRIGHT--,BSD
 * Copyright (c) 2014, Texas Instruments Incorporated
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * *  Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * *  Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * *  Neither the name of Texas Instruments Incorporated nor the names of
 *    its contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * --/COPYRIGHT--*/
//*****************************************************************************
//
// ref_a.h - Driver for the REF_A Module.
//
//*****************************************************************************

#ifndef __MSP430WARE_REF_A_H__
#define __MSP430WARE_REF_A_H__

#include "inc/hw_memmap.h"

#ifdef __MSP430_HAS_REF_A__

//*****************************************************************************
//
// If building with a C++ compiler, make all of the definitions in this header
// have a C binding.
//
//*****************************************************************************
#ifdef __cplusplus
extern "C"
{
#endif

//*****************************************************************************
//
// The following are values that can be passed to the referenceVoltageSelect
// parameter for functions: Ref_A_setReferenceVoltage().
//
//*****************************************************************************
#define REF_A_VREF1_2V                                              (REFVSEL_0)
#define REF_A_VREF2_0V                                              (REFVSEL_1)
#define REF_A_VREF2_5V                                              (REFVSEL_2)

//*****************************************************************************
//
// The following are values that can be passed toThe following are values that
// can be returned by the Ref_A_isBandgapActive() function and the
// Ref_A_isRefGenActive() function.
//
//*****************************************************************************
#define REF_A_ACTIVE                                                       true
#define REF_A_INACTIVE                                                    false

//*****************************************************************************
//
// The following are values that can be passed toThe following are values that
// can be returned by the Ref_A_getBandgapMode() function.
//
//*****************************************************************************
#define REF_A_STATICMODE                                                   0x00
#define REF_A_SAMPLEMODE                                                 BGMODE

//*****************************************************************************
//
// The following are values that can be passed toThe following are values that
// can be returned by the Ref_A_isRefGenBusy() function.
//
//*****************************************************************************
#define REF_A_NOTBUSY                                                      0x00
#define REF_A_BUSY                                                   REFGENBUSY

//*****************************************************************************
//
// The following are values that can be passed toThe following are values that
// can be returned by the Ref_A_isVariableReferenceVoltageOutputReady()
// function and the Ref_A_isBufferedBandgapVoltageReady() function.
//
//*****************************************************************************
#define REF_A_NOTREADY                                                    false
#define REF_A_READY                                                        true

//*****************************************************************************
//
// Prototypes for the APIs.
//
//*****************************************************************************

//*****************************************************************************
//
//! \brief Sets the reference voltage for the voltage generator.
//!
//! This function sets the reference voltage generated by the voltage generator
//! to be used by other peripherals. This reference voltage will only be valid
//! while the Ref_A module is in control. Please note, if the
//! Ref_A_isRefGenBusy() returns Ref_A_BUSY, this function will have no effect.
//!
//! \param baseAddress is the base address of the REF_A module.
//! \param referenceVoltageSelect is the desired voltage to generate for a
//!        reference voltage.
//!        Valid values are:
//!        - \b REF_A_VREF1_2V [Default]
//!        - \b REF_A_VREF2_0V
//!        - \b REF_A_VREF2_5V
//!        \n Modified bits are \b REFVSEL of \b REFCTL0 register.
//!
//! \return None
//
//*****************************************************************************
extern void Ref_A_setReferenceVoltage(uint16_t baseAddress,
                                      uint8_t referenceVoltageSelect);

//*****************************************************************************
//
//! \brief Disables the internal temperature sensor to save power consumption.
//!
//! This function is used to turn off the internal temperature sensor to save
//! on power consumption. The temperature sensor is enabled by default. Please
//! note, that giving ADC12 module control over the Ref_A module, the state of
//! the temperature sensor is dependent on the controls of the ADC12 module.
//! Please note, if the Ref_A_isRefGenBusy() returns Ref_A_BUSY, this function
//! will have no effect.
//!
//! \param baseAddress is the base address of the REF_A module.
//!
//! Modified bits are \b REFTCOFF of \b REFCTL0 register.
//!
//! \return None
//
//*****************************************************************************
extern void Ref_A_disableTempSensor(uint16_t baseAddress);

//*****************************************************************************
//
//! \brief Enables the internal temperature sensor.
//!
//! This function is used to turn on the internal temperature sensor to use by
//! other peripherals. The temperature sensor is enabled by default. Please
//! note, if the Ref_A_isRefGenBusy() returns Ref_A_BUSY, this function will
//! have no effect.
//!
//! \param baseAddress is the base address of the REF_A module.
//!
//! Modified bits are \b REFTCOFF of \b REFCTL0 register.
//!
//! \return None
//
//*****************************************************************************
extern void Ref_A_enableTempSensor(uint16_t baseAddress);

//*****************************************************************************
//
//! \brief Outputs the reference voltage to an output pin.
//!
//! This function is used to output the reference voltage being generated to an
//! output pin. Please note, the output pin is device specific. Please note,
//! that giving ADC12 module control over the Ref_A module, the state of the
//! reference voltage as an output to a pin is dependent on the controls of the
//! ADC12 module. Please note, if the Ref_A_isRefGenBusy() returns Ref_A_BUSY,
//! this function will have no effect.
//!
//! \param baseAddress is the base address of the REF_A module.
//!
//! Modified bits are \b REFOUT of \b REFCTL0 register.
//!
//! \return None
//
//*****************************************************************************
extern void Ref_A_enableReferenceVoltageOutput(uint16_t baseAddress);

//*****************************************************************************
//
//! \brief Disables the reference voltage as an output to a pin.
//!
//! This function is used to disables the reference voltage being generated to
//! be given to an output pin. Please note, if the Ref_A_isRefGenBusy() returns
//! Ref_A_BUSY, this function will have no effect.
//!
//! \param baseAddress is the base address of the REF_A module.
//!
//! Modified bits are \b REFOUT of \b REFCTL0 register.
//!
//! \return None
//
//*****************************************************************************
extern void Ref_A_disableReferenceVoltageOutput(uint16_t baseAddress);

//*****************************************************************************
//
//! \brief Enables the reference voltage to be used by peripherals.
//!
//! This function is used to enable the generated reference voltage to be used
//! other peripherals or by an output pin, if enabled. Please note, that giving
//! ADC12 module control over the Ref_A module, the state of the reference
//! voltage is dependent on the controls of the ADC12 module. Please note, if
//! the Ref_A_isRefGenBusy() returns Ref_A_BUSY, this function will have no
//! effect.
//!
//! \param baseAddress is the base address of the REF_A module.
//!
//! Modified bits are \b REFON of \b REFCTL0 register.
//!
//! \return None
//
//*****************************************************************************
extern void Ref_A_enableReferenceVoltage(uint16_t baseAddress);

//*****************************************************************************
//
//! \brief Disables the reference voltage.
//!
//! This function is used to disable the generated reference voltage. Please
//! note, if the Ref_A_isRefGenBusy() returns Ref_A_BUSY, this function will
//! have no effect.
//!
//! \param baseAddress is the base address of the REF_A module.
//!
//! Modified bits are \b REFON of \b REFCTL0 register.
//!
//! \return None
//
//*****************************************************************************
extern void Ref_A_disableReferenceVoltage(uint16_t baseAddress);

//*****************************************************************************
//
//! \brief Returns the bandgap mode of the Ref_A module.
//!
//! This function is used to return the bandgap mode of the Ref_A module,
//! requested by the peripherals using the bandgap. If a peripheral requests
//! static mode, then the bandgap mode will be static for all modules, whereas
//! if all of the peripherals using the bandgap request sample mode, then that
//! will be the mode returned. Sample mode allows the bandgap to be active only
//! when necessary to save on power consumption, static mode requires the
//! bandgap to be active until no peripherals are using it anymore.
//!
//! \param baseAddress is the base address of the REF_A module.
//!
//! \return One of the following:
//!         - \b Ref_A_STATICMODE if the bandgap is operating in static mode
//!         - \b Ref_A_SAMPLEMODE if the bandgap is operating in sample mode
//!         \n indicating the bandgap mode of the module
//
//*****************************************************************************
extern uint16_t Ref_A_getBandgapMode(uint16_t baseAddress);

//*****************************************************************************
//
//! \brief Returns the active status of the bandgap in the Ref_A module.
//!
//! This function is used to return the active status of the bandgap in the
//! Ref_A module. If the bandgap is in use by a peripheral, then the status
//! will be seen as active.
//!
//! \param baseAddress is the base address of the REF_A module.
//!
//! \return One of the following:
//!         - \b Ref_A_ACTIVE if active
//!         - \b Ref_A_INACTIVE if not active
//!         \n indicating the bandgap active status of the module
//
//*****************************************************************************
extern bool Ref_A_isBandgapActive(uint16_t baseAddress);

//*****************************************************************************
//
//! \brief Returns the busy status of the reference generator in the Ref_A
//! module.
//!
//! This function is used to return the busy status of the reference generator
//! in the Ref_A module. If the ref generator is in use by a peripheral, then
//! the status will be seen as busy.
//!
//! \param baseAddress is the base address of the REF_A module.
//!
//! \return One of the following:
//!         - \b Ref_A_NOTBUSY if the reference generator is not being used
//!         - \b Ref_A_BUSY if the reference generator is being used,
//!         disallowing changes to be made to the Ref_A module controls
//!         \n indicating the reference generator busy status of the module
//
//*****************************************************************************
extern uint16_t Ref_A_isRefGenBusy(uint16_t baseAddress);

//*****************************************************************************
//
//! \brief Returns the active status of the reference generator in the Ref_A
//! module.
//!
//! This function is used to return the active status of the reference
//! generator in the Ref_A module. If the ref generator is on and ready to use,
//! then the status will be seen as active.
//!
//! \param baseAddress is the base address of the REF_A module.
//!
//! \return One of the following:
//!         - \b Ref_A_ACTIVE if active
//!         - \b Ref_A_INACTIVE if not active
//!         \n indicating the reference generator active status of the module
//
//*****************************************************************************
extern bool Ref_A_isRefGenActive(uint16_t baseAddress);

//*****************************************************************************
//
//! \brief Returns the busy status of the reference generator in the Ref_A
//! module.
//!
//! This function is used to return the buys status of the buffered bandgap
//! voltage in the Ref_A module. If the ref generator is on and ready to use,
//! then the status will be seen as active.
//!
//! \param baseAddress is the base address of the REF_A module.
//!
//! \return One of the following:
//!         - \b Ref_A_NOTREADY if NOT ready to be used
//!         - \b Ref_A_READY if ready to be used
//!         \n indicating the the busy status of the reference generator in the
//!         module
//
//*****************************************************************************
extern bool Ref_A_isBufferedBandgapVoltageReady(uint16_t baseAddress);

//*****************************************************************************
//
//! \brief Returns the busy status of the variable reference voltage in the
//! Ref_A module.
//!
//! This function is used to return the busy status of the variable reference
//! voltage in the Ref_A module. If the ref generator is on and ready to use,
//! then the status will be seen as active.
//!
//! \param baseAddress is the base address of the REF_A module.
//!
//! \return One of the following:
//!         - \b Ref_A_NOTREADY if NOT ready to be used
//!         - \b Ref_A_READY if ready to be used
//!         \n indicating the the busy status of the variable reference voltage
//!         in the module
//
//*****************************************************************************
extern bool Ref_A_isVariableReferenceVoltageOutputReady(uint16_t baseAddress);

//*****************************************************************************
//
//! \brief Enables the one-time trigger of the reference voltage.
//!
//! Triggers the one-time generation of the variable reference voltage. Once
//! the reference voltage request is set, this bit is cleared by hardware
//!
//! \param baseAddress is the base address of the REF_A module.
//!
//! Modified bits are \b REFGENOT of \b REFCTL0 register.
//!
//! \return None
//
//*****************************************************************************
extern void Ref_A_setReferenceVoltageOneTimeTrigger(uint16_t baseAddress);

//*****************************************************************************
//
//! \brief Enables the one-time trigger of the buffered bandgap voltage.
//!
//! Triggers the one-time generation of the buffered bandgap voltage. Once the
//! buffered bandgap voltage request is set, this bit is cleared by hardware
//!
//! \param baseAddress is the base address of the REF_A module.
//!
//! Modified bits are \b REFBGOT of \b REFCTL0 register.
//!
//! \return None
//
//*****************************************************************************
extern void Ref_A_setBufferedBandgapVoltageOneTimeTrigger(uint16_t baseAddress);

//*****************************************************************************
//
// Mark the end of the C bindings section for C++ compilers.
//
//*****************************************************************************
#ifdef __cplusplus
}
#endif

#endif
#endif // __MSP430WARE_REF_A_H__