Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
24d527bf
Commit
24d527bf
authored
Mar 25, 2014
by
Damien George
Browse files
Merge pull request #375 from dhylands/stmhal-adc
Some changes that I forgot to push with my last pull request
parents
9512e9e8
f0729b19
Changes
2
Hide whitespace changes
Inline
Side-by-side
stmhal/adc.c
View file @
24d527bf
...
...
@@ -187,10 +187,10 @@ typedef struct _pyb_obj_adc_all_t {
void
adc_init_all
(
pyb_obj_adc_all_t
*
adc_all
,
uint32_t
resolution
)
{
switch
(
resolution
)
{
case
6
:
resolution
=
ADC_RESOLUTION6b
;
break
;
case
8
:
resolution
=
ADC_RESOLUTION8b
;
break
;
case
10
:
resolution
=
ADC_RESOLUTION10b
;
break
;
case
12
:
resolution
=
ADC_RESOLUTION12b
;
break
;
case
6
:
resolution
=
ADC_RESOLUTION6b
;
break
;
case
8
:
resolution
=
ADC_RESOLUTION8b
;
break
;
case
10
:
resolution
=
ADC_RESOLUTION10b
;
break
;
case
12
:
resolution
=
ADC_RESOLUTION12b
;
break
;
default:
nlr_jump
(
mp_obj_new_exception_msg_varg
(
&
mp_type_ValueError
,
"resolution %d not supported"
,
resolution
));
...
...
@@ -238,18 +238,44 @@ uint32_t adc_config_and_read_channel(ADC_HandleTypeDef *adcHandle, uint32_t chan
return
adc_read_channel
(
adcHandle
);
}
int
adc_get_resolution
(
ADC_HandleTypeDef
*
adcHandle
)
{
uint32_t
res_reg
=
__HAL_ADC_GET_RESOLUTION
(
adcHandle
);
switch
(
res_reg
)
{
case
ADC_RESOLUTION6b
:
return
6
;
case
ADC_RESOLUTION8b
:
return
8
;
case
ADC_RESOLUTION10b
:
return
10
;
}
return
12
;
}
int
adc_read_core_temp
(
ADC_HandleTypeDef
*
adcHandle
)
{
int32_t
raw_value
=
adc_config_and_read_channel
(
adcHandle
,
ADC_CHANNEL_TEMPSENSOR
);
// Note: constants assume 12-bit resolution, so we scale the raw value to
// be 12-bits.
raw_value
<<=
(
12
-
adc_get_resolution
(
adcHandle
));
return
((
raw_value
-
CORE_TEMP_V25
)
/
CORE_TEMP_AVG_SLOPE
)
+
25
;
}
float
adc_read_core_vbat
(
ADC_HandleTypeDef
*
adcHandle
)
{
uint32_t
raw_value
=
adc_config_and_read_channel
(
adcHandle
,
ADC_CHANNEL_VBAT
);
// Note: constants assume 12-bit resolution, so we scale the raw value to
// be 12-bits.
raw_value
<<=
(
12
-
adc_get_resolution
(
adcHandle
));
return
raw_value
*
VBAT_DIV
/
4096
.
0
f
*
3
.
3
f
;
}
float
adc_read_core_vref
(
ADC_HandleTypeDef
*
adcHandle
)
{
uint32_t
raw_value
=
adc_config_and_read_channel
(
adcHandle
,
ADC_CHANNEL_VREFINT
);
// Note: constants assume 12-bit resolution, so we scale the raw value to
// be 12-bits.
raw_value
<<=
(
12
-
adc_get_resolution
(
adcHandle
));
return
raw_value
*
VBAT_DIV
/
4096
.
0
f
*
3
.
3
f
;
}
...
...
stmhal/main.c
View file @
24d527bf
...
...
@@ -373,6 +373,9 @@ soft_reset:
}
}
}
#else
// Get rid of compiler warning if no SDCARD is configured.
(
void
)
first_soft_reset
;
#endif
#if defined(USE_HOST_MODE)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment