ADC internal channels read example.

Dependencies:   mbed

Committer:
bcostm
Date:
Fri Nov 18 15:53:34 2016 +0000
Revision:
1:55c36e464885
Parent:
0:bd554f9d9a54
Child:
2:9bab1d673af9
Add VBat example

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bcostm 0:bd554f9d9a54 1 #include "mbed.h"
bcostm 0:bd554f9d9a54 2
bcostm 1:55c36e464885 3 #define VREF 3300.0f /* Device power supply in mV */
bcostm 1:55c36e464885 4
bcostm 1:55c36e464885 5 // Parameters for temperature sensor only
bcostm 0:bd554f9d9a54 6 #define AMBIENT_TEMP 25.0f /* Ambient Temperature in °C */
bcostm 0:bd554f9d9a54 7 #define VSENS_AT_AMBIENT_TEMP 760.0f /* VSENSE value in mV at ambient temperature */
bcostm 0:bd554f9d9a54 8 #define AVG_SLOPE 25.0f /* Average slope in mV/°C multiplied by 10 */
bcostm 0:bd554f9d9a54 9
bcostm 1:55c36e464885 10 //AnalogIn vbat(ADC_VBAT); // To measure VBat
bcostm 1:55c36e464885 11 AnalogIn tempsensor(ADC_TEMP); // To measure Temperature sensot
bcostm 0:bd554f9d9a54 12
bcostm 0:bd554f9d9a54 13 DigitalOut led(LED1);
bcostm 0:bd554f9d9a54 14
bcostm 0:bd554f9d9a54 15 int main()
bcostm 0:bd554f9d9a54 16 {
bcostm 0:bd554f9d9a54 17 float meas_f;
bcostm 0:bd554f9d9a54 18 float JTemp_f;
bcostm 0:bd554f9d9a54 19
bcostm 1:55c36e464885 20 printf("\nSTM32 Internal Channels example\n");
bcostm 0:bd554f9d9a54 21
bcostm 0:bd554f9d9a54 22 while(1) {
bcostm 0:bd554f9d9a54 23
bcostm 1:55c36e464885 24 /*
bcostm 1:55c36e464885 25 Note 1: As VBAT voltage could be higher than VDDA, to ensure the correct operation of the ADC, the
bcostm 1:55c36e464885 26 VBAT pin is internally connected to a bridge divider by 4.
bcostm 1:55c36e464885 27 Note 2: On some devices the VBAT and temperature sensor are connected to the same ADC internal channel
bcostm 1:55c36e464885 28 Only one conversion, either temperature sensor or VBAT, must be selected at a time.
bcostm 1:55c36e464885 29 When both conversion are enabled simultaneously, only the VBAT conversion is
bcostm 1:55c36e464885 30 performed.
bcostm 1:55c36e464885 31 */
bcostm 1:55c36e464885 32 //printf("\nVBat = %.1f mV\n", vbat.read() * VREF * 4);
bcostm 1:55c36e464885 33
bcostm 0:bd554f9d9a54 34 meas_f = tempsensor.read();
bcostm 0:bd554f9d9a54 35
bcostm 0:bd554f9d9a54 36 /* Compute the Junction Temperature value
bcostm 0:bd554f9d9a54 37 JTemp = ((Vsens - V25)/Avg_Slope) + 25°C
bcostm 0:bd554f9d9a54 38 The internal temperature sensor supports a temperature range of –40 to 125°C with an accuracy of +/-1.5°C. */
bcostm 0:bd554f9d9a54 39
bcostm 0:bd554f9d9a54 40 JTemp_f = (((meas_f * VREF) - VSENS_AT_AMBIENT_TEMP) * 10.0f / AVG_SLOPE) + AMBIENT_TEMP;
bcostm 0:bd554f9d9a54 41
bcostm 0:bd554f9d9a54 42 printf("Internal Temperature = %.1f degree C\n", JTemp_f);
bcostm 0:bd554f9d9a54 43
bcostm 0:bd554f9d9a54 44 led = !led;
bcostm 0:bd554f9d9a54 45 wait(1.0);
bcostm 0:bd554f9d9a54 46 }
bcostm 0:bd554f9d9a54 47 }