differential input adc board K64F Compatible hal freescale K64F

Fork of AnalogIn_Diff by Jim Carver

Committer:
fblanc
Date:
Fri Dec 05 14:06:38 2014 +0000
Revision:
2:ea5a4c22bd53
Parent:
1:7b36e4381d83
Compatible hal freescale K64F

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fblanc 2:ea5a4c22bd53 1 /* mbed Microcontroller Library
fblanc 2:ea5a4c22bd53 2 * Copyright (c) 2006-2013 ARM Limited
fblanc 2:ea5a4c22bd53 3 * Copyright (c) 2014 LAAS-CNRS
fblanc 2:ea5a4c22bd53 4 *
fblanc 2:ea5a4c22bd53 5 * Licensed under the Apache License, Version 2.0 (the "License");
fblanc 2:ea5a4c22bd53 6 * you may not use this file except in compliance with the License.
fblanc 2:ea5a4c22bd53 7 * You may obtain a copy of the License at
fblanc 2:ea5a4c22bd53 8 *
fblanc 2:ea5a4c22bd53 9 * http://www.apache.org/licenses/LICENSE-2.0
fblanc 2:ea5a4c22bd53 10 *
fblanc 2:ea5a4c22bd53 11 * Unless required by applicable law or agreed to in writing, software
fblanc 2:ea5a4c22bd53 12 * distributed under the License is distributed on an "AS IS" BASIS,
fblanc 2:ea5a4c22bd53 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
fblanc 2:ea5a4c22bd53 14 * See the License for the specific language governing permissions and
fblanc 2:ea5a4c22bd53 15 * limitations under the License.
fblanc 2:ea5a4c22bd53 16 */
JimCarver 0:0f6f4be28e21 17
fblanc 2:ea5a4c22bd53 18 #ifndef ANALOGIN_DIFF_H
fblanc 2:ea5a4c22bd53 19 #define ANALOGIN_DIFF_H
fblanc 2:ea5a4c22bd53 20
fblanc 2:ea5a4c22bd53 21 #include "mbed_assert.h"
fblanc 2:ea5a4c22bd53 22 #include "analogin_api.h"
fblanc 2:ea5a4c22bd53 23 #include "platform.h"
fblanc 2:ea5a4c22bd53 24 #include "cmsis.h"
fblanc 2:ea5a4c22bd53 25 #include "pinmap.h"
fblanc 2:ea5a4c22bd53 26 #include "PeripheralNames.h"
fblanc 2:ea5a4c22bd53 27 #include "fsl_adc_hal.h"
fblanc 2:ea5a4c22bd53 28 #include "fsl_clock_manager.h"
fblanc 2:ea5a4c22bd53 29 #include "PeripheralPins.h"
fblanc 2:ea5a4c22bd53 30 #include "fsl_device_registers.h"
fblanc 2:ea5a4c22bd53 31
fblanc 2:ea5a4c22bd53 32 #define VERSION_ADC_DIFF "2014_12_05"
fblanc 2:ea5a4c22bd53 33
fblanc 2:ea5a4c22bd53 34 #if FSL_FEATURE_ADC_HAS_DIFF_MODE
fblanc 2:ea5a4c22bd53 35
fblanc 2:ea5a4c22bd53 36 #define MAX_FADC 6000000
fblanc 2:ea5a4c22bd53 37 #define ADC_DIFF(adc,ch) (((adc)<<1) | (ch))
fblanc 2:ea5a4c22bd53 38 //adc ch -> ADC Diff pin+ ADC<adc>_DP<ch> and pin- ADC<adc>_DM<ch>
fblanc 2:ea5a4c22bd53 39
JimCarver 0:0f6f4be28e21 40
fblanc 2:ea5a4c22bd53 41 /** class of AnalogIn_Diff for K64F
fblanc 2:ea5a4c22bd53 42 * Example:
fblanc 2:ea5a4c22bd53 43 * @code
fblanc 2:ea5a4c22bd53 44 * #include "mbed.h"
fblanc 2:ea5a4c22bd53 45 * #include "AnalogIn_Diff.h"
fblanc 2:ea5a4c22bd53 46 * Ticker flipperADC;
fblanc 2:ea5a4c22bd53 47 * bool flag_TX=false;
fblanc 2:ea5a4c22bd53 48 * void flipADC()
fblanc 2:ea5a4c22bd53 49 * {
fblanc 2:ea5a4c22bd53 50 * flag_TX=true;
fblanc 2:ea5a4c22bd53 51 * }
fblanc 2:ea5a4c22bd53 52 * int main()
fblanc 2:ea5a4c22bd53 53 * {
fblanc 2:ea5a4c22bd53 54 * flipperADC.attach(&flipADC, 1.0);
fblanc 2:ea5a4c22bd53 55 * AnalogIn_Diff adc_diff(ADC_DIFF(0,1)); // ADC Diff pin+ ADC0_DP1 and pin- ADC0_DM1
fblanc 2:ea5a4c22bd53 56 * while (true) {
fblanc 2:ea5a4c22bd53 57 * if(flag_TX) {
fblanc 2:ea5a4c22bd53 58 * pc.printf("analog= %f \r\n",adc_diff.read()); //-0.5 < analog < 0.5 ; (-0.5 # ADC0_DP1=0.0V ADC0_DM1=3.3V) (0.0 # ADC0_DP1=1.65V ADC0_DM1=1.65V) (0.5 # ADC0_DP1=3.3V ADC0_DM1=0.0V)
fblanc 2:ea5a4c22bd53 59 * flag_TX=false;
fblanc 2:ea5a4c22bd53 60 * }
fblanc 2:ea5a4c22bd53 61 * }
fblanc 2:ea5a4c22bd53 62 * }
fblanc 2:ea5a4c22bd53 63 * @endcode
fblanc 2:ea5a4c22bd53 64 */
JimCarver 0:0f6f4be28e21 65
JimCarver 0:0f6f4be28e21 66 class AnalogIn_Diff
JimCarver 0:0f6f4be28e21 67 {
fblanc 2:ea5a4c22bd53 68
JimCarver 0:0f6f4be28e21 69 public:
fblanc 2:ea5a4c22bd53 70 /** Create an AnalogIn_Diff
fblanc 2:ea5a4c22bd53 71 *
fblanc 2:ea5a4c22bd53 72 * @param adc_ch is ADC_DIFF(#adc, #ch)
fblanc 2:ea5a4c22bd53 73 *
fblanc 2:ea5a4c22bd53 74 */
fblanc 2:ea5a4c22bd53 75 AnalogIn_Diff(int adc_ch);
fblanc 2:ea5a4c22bd53 76
fblanc 2:ea5a4c22bd53 77 /** Destroy an AnalogIn_Diff
fblanc 2:ea5a4c22bd53 78 */
fblanc 2:ea5a4c22bd53 79 ~AnalogIn_Diff();
fblanc 2:ea5a4c22bd53 80
fblanc 2:ea5a4c22bd53 81 /** Read the input voltage, represented as a float range [-0.5 ; 0.5]
fblanc 2:ea5a4c22bd53 82 *
fblanc 2:ea5a4c22bd53 83 * @returns A floating-point value representing the current input voltage, measured as a percentage
fblanc 2:ea5a4c22bd53 84 */
fblanc 2:ea5a4c22bd53 85 float read();
JimCarver 0:0f6f4be28e21 86
fblanc 2:ea5a4c22bd53 87 /** Read the input voltage, represented as an 16-bit Signed 2's complement
fblanc 2:ea5a4c22bd53 88 *
fblanc 2:ea5a4c22bd53 89 * @returns
fblanc 2:ea5a4c22bd53 90 * 16-bit signed representing the current input voltage, normalised to a 16-bit signed
fblanc 2:ea5a4c22bd53 91 */
fblanc 2:ea5a4c22bd53 92 int16_t read_raws16();
fblanc 2:ea5a4c22bd53 93
fblanc 2:ea5a4c22bd53 94 #ifdef MBED_OPERATORS
fblanc 2:ea5a4c22bd53 95 /** An operator shorthand for read()
fblanc 2:ea5a4c22bd53 96 *
fblanc 2:ea5a4c22bd53 97 * The float() operator can be used as a shorthand for read() to simplify common code sequences
fblanc 2:ea5a4c22bd53 98 *
fblanc 2:ea5a4c22bd53 99 * Example:
fblanc 2:ea5a4c22bd53 100 * @code
fblanc 2:ea5a4c22bd53 101 * float x = volume.read();
fblanc 2:ea5a4c22bd53 102 * float x = volume;
fblanc 2:ea5a4c22bd53 103 *
fblanc 2:ea5a4c22bd53 104 * if(volume.read() > 0.25) { ... }
fblanc 2:ea5a4c22bd53 105 * if(volume > 0.25) { ... }
fblanc 2:ea5a4c22bd53 106 * @endcode
fblanc 2:ea5a4c22bd53 107 */
fblanc 2:ea5a4c22bd53 108 operator float() {
fblanc 2:ea5a4c22bd53 109 return read();
fblanc 2:ea5a4c22bd53 110 }
fblanc 2:ea5a4c22bd53 111
fblanc 2:ea5a4c22bd53 112 #endif //MBED_OPERATORS
fblanc 2:ea5a4c22bd53 113
JimCarver 0:0f6f4be28e21 114 private:
fblanc 2:ea5a4c22bd53 115 uint8_t chnNum;
fblanc 2:ea5a4c22bd53 116 uint32_t instance ;
fblanc 2:ea5a4c22bd53 117 uint32_t adc_addrs[];
JimCarver 0:0f6f4be28e21 118 };
JimCarver 0:0f6f4be28e21 119
fblanc 2:ea5a4c22bd53 120 #endif //FSL_FEATURE_ADC_HAS_DIFF_MODE
fblanc 2:ea5a4c22bd53 121 #endif //ANALOGIN_DIFF_H
fblanc 2:ea5a4c22bd53 122
fblanc 2:ea5a4c22bd53 123