Kenji Arai / mbed-os_TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Committer:
kenjiArai
Date:
Tue Dec 31 06:02:27 2019 +0000
Revision:
1:9db0e321a9f4
Parent:
0:5b88d5760320
updated based on mbed-os5.15.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:5b88d5760320 1
kenjiArai 0:5b88d5760320 2 /** \addtogroup hal */
kenjiArai 0:5b88d5760320 3 /** @{*/
kenjiArai 0:5b88d5760320 4 /* mbed Microcontroller Library
kenjiArai 0:5b88d5760320 5 * Copyright (c) 2006-2013 ARM Limited
kenjiArai 0:5b88d5760320 6 * SPDX-License-Identifier: Apache-2.0
kenjiArai 0:5b88d5760320 7 *
kenjiArai 0:5b88d5760320 8 * Licensed under the Apache License, Version 2.0 (the "License");
kenjiArai 0:5b88d5760320 9 * you may not use this file except in compliance with the License.
kenjiArai 0:5b88d5760320 10 * You may obtain a copy of the License at
kenjiArai 0:5b88d5760320 11 *
kenjiArai 0:5b88d5760320 12 * http://www.apache.org/licenses/LICENSE-2.0
kenjiArai 0:5b88d5760320 13 *
kenjiArai 0:5b88d5760320 14 * Unless required by applicable law or agreed to in writing, software
kenjiArai 0:5b88d5760320 15 * distributed under the License is distributed on an "AS IS" BASIS,
kenjiArai 0:5b88d5760320 16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kenjiArai 0:5b88d5760320 17 * See the License for the specific language governing permissions and
kenjiArai 0:5b88d5760320 18 * limitations under the License.
kenjiArai 0:5b88d5760320 19 */
kenjiArai 0:5b88d5760320 20 #ifndef MBED_ANALOGOUT_API_H
kenjiArai 0:5b88d5760320 21 #define MBED_ANALOGOUT_API_H
kenjiArai 0:5b88d5760320 22
kenjiArai 0:5b88d5760320 23 #include "device.h"
kenjiArai 0:5b88d5760320 24 #include "pinmap.h"
kenjiArai 0:5b88d5760320 25
kenjiArai 0:5b88d5760320 26 #if DEVICE_ANALOGOUT
kenjiArai 0:5b88d5760320 27
kenjiArai 0:5b88d5760320 28 #ifdef __cplusplus
kenjiArai 0:5b88d5760320 29 extern "C" {
kenjiArai 0:5b88d5760320 30 #endif
kenjiArai 0:5b88d5760320 31
kenjiArai 0:5b88d5760320 32 /** Analogout hal structure. dac_s is declared in the target's hal
kenjiArai 0:5b88d5760320 33 */
kenjiArai 0:5b88d5760320 34 typedef struct dac_s dac_t;
kenjiArai 0:5b88d5760320 35
kenjiArai 0:5b88d5760320 36 /**
kenjiArai 0:5b88d5760320 37 * \defgroup hal_analogout Analogout hal functions
kenjiArai 1:9db0e321a9f4 38 *
kenjiArai 1:9db0e321a9f4 39 * # Defined behaviour
kenjiArai 1:9db0e321a9f4 40 * * The function ::analogout_init initializes the dac_t control structure
kenjiArai 1:9db0e321a9f4 41 * * The function ::analogout_write sets the output voltage, specified as a percentage (float) in range [0.0 (GND), 1.0 (VCC)]
kenjiArai 1:9db0e321a9f4 42 * * The function ::analogout_write_u16 sets the output voltage, specified as unsigned 16-bit value [0 (GND), MAX_UINT16 (VCC)]
kenjiArai 1:9db0e321a9f4 43 * * The function ::analogout_read reads the current voltage value on the pin and returns a floating-point value representing the current voltage in range [0.0 (GND), 1.0 (VCC)]
kenjiArai 1:9db0e321a9f4 44 * * The function ::analogout_read_u16 reads the current voltage value on the pin and returns the output voltage, specified as unsigned 16-bit value [0 (GND), MAX_UINT16 (VCC)]
kenjiArai 1:9db0e321a9f4 45 * * The accuracy of the DAC is +/- 10%
kenjiArai 1:9db0e321a9f4 46 * * The DAC operations ::analogout_write, ::analogout_write_u16, ::analogout_read, ::analogout_read_u16 take less than 20us to complete
kenjiArai 1:9db0e321a9f4 47 * * The function ::analogout_free releases the analogout object
kenjiArai 1:9db0e321a9f4 48 *
kenjiArai 1:9db0e321a9f4 49 * # Undefined behaviour
kenjiArai 1:9db0e321a9f4 50 *
kenjiArai 1:9db0e321a9f4 51 * * ::analogout_init is called with invalid pin (which does not support analog output function)
kenjiArai 1:9db0e321a9f4 52 * * Calling other functions before ::analogout_init
kenjiArai 0:5b88d5760320 53 * @{
kenjiArai 0:5b88d5760320 54 */
kenjiArai 0:5b88d5760320 55
kenjiArai 1:9db0e321a9f4 56 /**
kenjiArai 1:9db0e321a9f4 57 * \defgroup hal_analogin_tests Analogout hal tests
kenjiArai 1:9db0e321a9f4 58 * The Analogout HAL tests ensure driver conformance to defined behaviour.
kenjiArai 1:9db0e321a9f4 59 *
kenjiArai 1:9db0e321a9f4 60 * To run the Analogout hal tests use the command:
kenjiArai 1:9db0e321a9f4 61 *
kenjiArai 1:9db0e321a9f4 62 * mbed test -t <toolchain> -m <target> -n tests-mbed_hal_fpga_ci_test_shield-analogout
kenjiArai 1:9db0e321a9f4 63 *
kenjiArai 1:9db0e321a9f4 64 */
kenjiArai 1:9db0e321a9f4 65
kenjiArai 1:9db0e321a9f4 66 /** Initialize the analogout peripheral
kenjiArai 1:9db0e321a9f4 67 *
kenjiArai 1:9db0e321a9f4 68 * Configures the pin used by analogout.
kenjiArai 1:9db0e321a9f4 69 * @param obj The analogout object to initialize
kenjiArai 1:9db0e321a9f4 70 * @param pinmap pointer to structure which holds static pinmap
kenjiArai 1:9db0e321a9f4 71 */
kenjiArai 1:9db0e321a9f4 72 void analogout_init_direct(dac_t *obj, const PinMap *pinmap);
kenjiArai 1:9db0e321a9f4 73
kenjiArai 0:5b88d5760320 74 /** Initialize the analogout peripheral
kenjiArai 0:5b88d5760320 75 *
kenjiArai 0:5b88d5760320 76 * Configures the pin used by analogout.
kenjiArai 0:5b88d5760320 77 * @param obj The analogout object to initialize
kenjiArai 0:5b88d5760320 78 * @param pin The analogout pin name
kenjiArai 0:5b88d5760320 79 */
kenjiArai 0:5b88d5760320 80 void analogout_init(dac_t *obj, PinName pin);
kenjiArai 0:5b88d5760320 81
kenjiArai 0:5b88d5760320 82 /** Release the analogout object
kenjiArai 0:5b88d5760320 83 *
kenjiArai 0:5b88d5760320 84 * @param obj The analogout object
kenjiArai 0:5b88d5760320 85 */
kenjiArai 0:5b88d5760320 86 void analogout_free(dac_t *obj);
kenjiArai 0:5b88d5760320 87
kenjiArai 0:5b88d5760320 88 /** Set the output voltage, specified as a percentage (float)
kenjiArai 0:5b88d5760320 89 *
kenjiArai 0:5b88d5760320 90 * @param obj The analogin object
kenjiArai 0:5b88d5760320 91 * @param value The floating-point output voltage to be set
kenjiArai 0:5b88d5760320 92 */
kenjiArai 0:5b88d5760320 93 void analogout_write(dac_t *obj, float value);
kenjiArai 0:5b88d5760320 94
kenjiArai 0:5b88d5760320 95 /** Set the output voltage, specified as unsigned 16-bit
kenjiArai 0:5b88d5760320 96 *
kenjiArai 0:5b88d5760320 97 * @param obj The analogin object
kenjiArai 0:5b88d5760320 98 * @param value The unsigned 16-bit output voltage to be set
kenjiArai 0:5b88d5760320 99 */
kenjiArai 0:5b88d5760320 100 void analogout_write_u16(dac_t *obj, uint16_t value);
kenjiArai 0:5b88d5760320 101
kenjiArai 0:5b88d5760320 102 /** Read the current voltage value on the pin
kenjiArai 0:5b88d5760320 103 *
kenjiArai 0:5b88d5760320 104 * @param obj The analogin object
kenjiArai 0:5b88d5760320 105 * @return A floating-point value representing the current voltage on the pin,
kenjiArai 0:5b88d5760320 106 * measured as a percentage
kenjiArai 0:5b88d5760320 107 */
kenjiArai 0:5b88d5760320 108 float analogout_read(dac_t *obj);
kenjiArai 0:5b88d5760320 109
kenjiArai 0:5b88d5760320 110 /** Read the current voltage value on the pin, as a normalized unsigned 16bit value
kenjiArai 0:5b88d5760320 111 *
kenjiArai 0:5b88d5760320 112 * @param obj The analogin object
kenjiArai 0:5b88d5760320 113 * @return An unsigned 16-bit value representing the current voltage on the pin
kenjiArai 0:5b88d5760320 114 */
kenjiArai 0:5b88d5760320 115 uint16_t analogout_read_u16(dac_t *obj);
kenjiArai 0:5b88d5760320 116
kenjiArai 0:5b88d5760320 117 /** Get the pins that support analogout
kenjiArai 0:5b88d5760320 118 *
kenjiArai 0:5b88d5760320 119 * Return a PinMap array of pins that support analogout. The
kenjiArai 0:5b88d5760320 120 * array is terminated with {NC, NC, 0}.
kenjiArai 0:5b88d5760320 121 *
kenjiArai 0:5b88d5760320 122 * @return PinMap array
kenjiArai 0:5b88d5760320 123 */
kenjiArai 0:5b88d5760320 124 const PinMap *analogout_pinmap(void);
kenjiArai 0:5b88d5760320 125
kenjiArai 0:5b88d5760320 126 /**@}*/
kenjiArai 0:5b88d5760320 127
kenjiArai 0:5b88d5760320 128 #ifdef __cplusplus
kenjiArai 0:5b88d5760320 129 }
kenjiArai 0:5b88d5760320 130 #endif
kenjiArai 0:5b88d5760320 131
kenjiArai 0:5b88d5760320 132 #endif
kenjiArai 0:5b88d5760320 133
kenjiArai 0:5b88d5760320 134 #endif
kenjiArai 0:5b88d5760320 135
kenjiArai 0:5b88d5760320 136 /** @}*/