differential input adc board K64F Compatible hal freescale K64F

Dependents:   trms_helloworld AnalogIn_Diff_helloworld

Fork of AnalogIn_Diff by frederic blanc

Committer:
fblanc
Date:
Thu Jan 07 08:34:27 2016 +0000
Revision:
6:f39be15f056c
Parent:
5:c24df4d64aa1
clean code

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 3:d17541ceae12 20 #include "mbed.h"
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 5:c24df4d64aa1 31 #include "fsl_interrupt_manager.h"
fblanc 2:ea5a4c22bd53 32
fblanc 6:f39be15f056c 33 #define VERSION_ADC_DIFF "2016_01_07"
fblanc 5:c24df4d64aa1 34 #define MAX_ADC 2
fblanc 2:ea5a4c22bd53 35 #if FSL_FEATURE_ADC_HAS_DIFF_MODE
fblanc 2:ea5a4c22bd53 36
fblanc 2:ea5a4c22bd53 37 #define MAX_FADC 6000000
fblanc 2:ea5a4c22bd53 38 #define ADC_DIFF(adc,ch) (((adc)<<1) | (ch))
fblanc 2:ea5a4c22bd53 39 //adc ch -> ADC Diff pin+ ADC<adc>_DP<ch> and pin- ADC<adc>_DM<ch>
fblanc 2:ea5a4c22bd53 40
JimCarver 0:0f6f4be28e21 41
fblanc 2:ea5a4c22bd53 42 /** class of AnalogIn_Diff for K64F
fblanc 2:ea5a4c22bd53 43 * Example:
fblanc 2:ea5a4c22bd53 44 * @code
fblanc 2:ea5a4c22bd53 45 * #include "mbed.h"
fblanc 2:ea5a4c22bd53 46 * #include "AnalogIn_Diff.h"
fblanc 2:ea5a4c22bd53 47 * Ticker flipperADC;
fblanc 2:ea5a4c22bd53 48 * bool flag_TX=false;
fblanc 2:ea5a4c22bd53 49 * void flipADC()
fblanc 2:ea5a4c22bd53 50 * {
fblanc 2:ea5a4c22bd53 51 * flag_TX=true;
fblanc 2:ea5a4c22bd53 52 * }
fblanc 2:ea5a4c22bd53 53 * int main()
fblanc 2:ea5a4c22bd53 54 * {
fblanc 2:ea5a4c22bd53 55 * flipperADC.attach(&flipADC, 1.0);
fblanc 2:ea5a4c22bd53 56 * AnalogIn_Diff adc_diff(ADC_DIFF(0,1)); // ADC Diff pin+ ADC0_DP1 and pin- ADC0_DM1
fblanc 2:ea5a4c22bd53 57 * while (true) {
fblanc 2:ea5a4c22bd53 58 * if(flag_TX) {
fblanc 2:ea5a4c22bd53 59 * 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 60 * flag_TX=false;
fblanc 2:ea5a4c22bd53 61 * }
fblanc 2:ea5a4c22bd53 62 * }
fblanc 2:ea5a4c22bd53 63 * }
fblanc 2:ea5a4c22bd53 64 * @endcode
fblanc 2:ea5a4c22bd53 65 */
JimCarver 0:0f6f4be28e21 66
JimCarver 0:0f6f4be28e21 67 class AnalogIn_Diff
JimCarver 0:0f6f4be28e21 68 {
fblanc 2:ea5a4c22bd53 69
JimCarver 0:0f6f4be28e21 70 public:
fblanc 2:ea5a4c22bd53 71 /** Create an AnalogIn_Diff
fblanc 2:ea5a4c22bd53 72 *
fblanc 2:ea5a4c22bd53 73 * @param adc_ch is ADC_DIFF(#adc, #ch)
fblanc 2:ea5a4c22bd53 74 *
fblanc 2:ea5a4c22bd53 75 */
fblanc 2:ea5a4c22bd53 76 AnalogIn_Diff(int adc_ch);
fblanc 2:ea5a4c22bd53 77
fblanc 3:d17541ceae12 78
fblanc 2:ea5a4c22bd53 79 /** Destroy an AnalogIn_Diff
fblanc 2:ea5a4c22bd53 80 */
fblanc 2:ea5a4c22bd53 81 ~AnalogIn_Diff();
fblanc 2:ea5a4c22bd53 82
fblanc 2:ea5a4c22bd53 83 /** Read the input voltage, represented as a float range [-0.5 ; 0.5]
fblanc 2:ea5a4c22bd53 84 *
fblanc 2:ea5a4c22bd53 85 * @returns A floating-point value representing the current input voltage, measured as a percentage
fblanc 2:ea5a4c22bd53 86 */
fblanc 2:ea5a4c22bd53 87 float read();
JimCarver 0:0f6f4be28e21 88
fblanc 2:ea5a4c22bd53 89 /** Read the input voltage, represented as an 16-bit Signed 2's complement
fblanc 2:ea5a4c22bd53 90 *
fblanc 2:ea5a4c22bd53 91 * @returns
fblanc 2:ea5a4c22bd53 92 * 16-bit signed representing the current input voltage, normalised to a 16-bit signed
fblanc 2:ea5a4c22bd53 93 */
fblanc 2:ea5a4c22bd53 94 int16_t read_raws16();
fblanc 2:ea5a4c22bd53 95
fblanc 2:ea5a4c22bd53 96 #ifdef MBED_OPERATORS
fblanc 2:ea5a4c22bd53 97 /** An operator shorthand for read()
fblanc 2:ea5a4c22bd53 98 *
fblanc 2:ea5a4c22bd53 99 * The float() operator can be used as a shorthand for read() to simplify common code sequences
fblanc 2:ea5a4c22bd53 100 *
fblanc 2:ea5a4c22bd53 101 * Example:
fblanc 2:ea5a4c22bd53 102 * @code
fblanc 2:ea5a4c22bd53 103 * float x = volume.read();
fblanc 2:ea5a4c22bd53 104 * float x = volume;
fblanc 2:ea5a4c22bd53 105 *
fblanc 2:ea5a4c22bd53 106 * if(volume.read() > 0.25) { ... }
fblanc 2:ea5a4c22bd53 107 * if(volume > 0.25) { ... }
fblanc 2:ea5a4c22bd53 108 * @endcode
fblanc 2:ea5a4c22bd53 109 */
fblanc 2:ea5a4c22bd53 110 operator float() {
fblanc 2:ea5a4c22bd53 111 return read();
fblanc 2:ea5a4c22bd53 112 }
fblanc 2:ea5a4c22bd53 113
fblanc 2:ea5a4c22bd53 114 #endif //MBED_OPERATORS
fblanc 2:ea5a4c22bd53 115
JimCarver 0:0f6f4be28e21 116 private:
fblanc 2:ea5a4c22bd53 117 uint8_t chnNum;
fblanc 2:ea5a4c22bd53 118 uint32_t instance ;
fblanc 5:c24df4d64aa1 119 uint32_t adc_addrs[MAX_ADC];
JimCarver 0:0f6f4be28e21 120 };
JimCarver 0:0f6f4be28e21 121
fblanc 2:ea5a4c22bd53 122 #endif //FSL_FEATURE_ADC_HAS_DIFF_MODE
fblanc 2:ea5a4c22bd53 123 #endif //ANALOGIN_DIFF_H
fblanc 2:ea5a4c22bd53 124
fblanc 2:ea5a4c22bd53 125