Skip to content

Commit 74958e0

Browse files
committed
Merge pull request #465 from bcostm/master
[NUCLEOs] Fix bug (normalization to 16bit) in adc read_u16()
2 parents 3fa2fcb + 314f578 commit 74958e0

File tree

9 files changed

+36
-9
lines changed

9 files changed

+36
-9
lines changed

libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/analogin_api.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,10 @@ static inline uint16_t adc_read(analogin_t *obj) {
169169
}
170170

171171
uint16_t analogin_read_u16(analogin_t *obj) {
172-
return (adc_read(obj));
172+
uint16_t value = adc_read(obj);
173+
// 12-bit to 16-bit conversion
174+
value = ((value << 4) & (uint16_t)0xFFF0) | ((value >> 8) & (uint16_t)0x000F);
175+
return value;
173176
}
174177

175178
float analogin_read(analogin_t *obj) {

libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F072RB/analogin_api.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,10 @@ static inline uint16_t adc_read(analogin_t *obj) {
176176
}
177177

178178
uint16_t analogin_read_u16(analogin_t *obj) {
179-
return (adc_read(obj));
179+
uint16_t value = adc_read(obj);
180+
// 12-bit to 16-bit conversion
181+
value = ((value << 4) & (uint16_t)0xFFF0) | ((value >> 8) & (uint16_t)0x000F);
182+
return value;
180183
}
181184

182185
float analogin_read(analogin_t *obj) {

libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/analogin_api.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,10 @@ static inline uint16_t adc_read(analogin_t *obj) {
171171
}
172172

173173
uint16_t analogin_read_u16(analogin_t *obj) {
174-
return (adc_read(obj));
174+
uint16_t value = adc_read(obj);
175+
// 12-bit to 16-bit conversion
176+
value = ((value << 4) & (uint16_t)0xFFF0) | ((value >> 8) & (uint16_t)0x000F);
177+
return value;
175178
}
176179

177180
float analogin_read(analogin_t *obj) {

libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/analogin_api.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,10 @@ static inline uint16_t adc_read(analogin_t *obj) {
180180
}
181181

182182
uint16_t analogin_read_u16(analogin_t *obj) {
183-
return (adc_read(obj));
183+
uint16_t value = adc_read(obj);
184+
// 12-bit to 16-bit conversion
185+
value = ((value << 4) & (uint16_t)0xFFF0) | ((value >> 8) & (uint16_t)0x000F);
186+
return value;
184187
}
185188

186189
float analogin_read(analogin_t *obj) {

libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8/analogin_api.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,10 @@ static inline uint16_t adc_read(analogin_t *obj)
198198

199199
uint16_t analogin_read_u16(analogin_t *obj)
200200
{
201-
return (adc_read(obj));
201+
uint16_t value = adc_read(obj);
202+
// 12-bit to 16-bit conversion
203+
value = ((value << 4) & (uint16_t)0xFFF0) | ((value >> 8) & (uint16_t)0x000F);
204+
return value;
202205
}
203206

204207
float analogin_read(analogin_t *obj)

libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/analogin_api.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,10 @@ static inline uint16_t adc_read(analogin_t *obj) {
170170
}
171171

172172
uint16_t analogin_read_u16(analogin_t *obj) {
173-
return (adc_read(obj));
173+
uint16_t value = adc_read(obj);
174+
// 12-bit to 16-bit conversion
175+
value = ((value << 4) & (uint16_t)0xFFF0) | ((value >> 8) & (uint16_t)0x000F);
176+
return value;
174177
}
175178

176179
float analogin_read(analogin_t *obj) {

libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F411RE/analogin_api.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,10 @@ static inline uint16_t adc_read(analogin_t *obj)
173173

174174
uint16_t analogin_read_u16(analogin_t *obj)
175175
{
176-
return (adc_read(obj));
176+
uint16_t value = adc_read(obj);
177+
// 12-bit to 16-bit conversion
178+
value = ((value << 4) & (uint16_t)0xFFF0) | ((value >> 8) & (uint16_t)0x000F);
179+
return value;
177180
}
178181

179182
float analogin_read(analogin_t *obj)

libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/analogin_api.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,10 @@ static inline uint16_t adc_read(analogin_t *obj) {
177177
}
178178

179179
uint16_t analogin_read_u16(analogin_t *obj) {
180-
return (adc_read(obj));
180+
uint16_t value = adc_read(obj);
181+
// 12-bit to 16-bit conversion
182+
value = ((value << 4) & (uint16_t)0xFFF0) | ((value >> 8) & (uint16_t)0x000F);
183+
return value;
181184
}
182185

183186
float analogin_read(analogin_t *obj) {

libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/analogin_api.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,10 @@ static inline uint16_t adc_read(analogin_t *obj) {
180180
}
181181

182182
uint16_t analogin_read_u16(analogin_t *obj) {
183-
return (adc_read(obj));
183+
uint16_t value = adc_read(obj);
184+
// 12-bit to 16-bit conversion
185+
value = ((value << 4) & (uint16_t)0xFFF0) | ((value >> 8) & (uint16_t)0x000F);
186+
return value;
184187
}
185188

186189
float analogin_read(analogin_t *obj) {

0 commit comments

Comments
 (0)