STM32: AnalogOut: do not call HAL_DAC_Start in dac_write

dac_write (used by AnalogOut.write) calls HAL_DAC_Start
every time. It is required to call HAL_DAC_Start only once.
HAL_DAC_Start uses internally HAL_Delay(1) making AnalogOut
not suitable for use in high speed application.
This change removes call to HAL_DAC_Start in dac_write and
moves it to analogout_init.
pull/14423/head
Marek Czerski 2021-03-12 09:56:41 +01:00
parent 6aef1af9e0
commit f64e64dc9d
15 changed files with 14 additions and 1 deletions

View File

@ -74,6 +74,7 @@ void analogout_init(dac_t *obj, PinName pin)
}
analogout_write_u16(obj, 0);
HAL_DAC_Start(&obj->handle, obj->channel);
}
void analogout_free(dac_t *obj)

View File

@ -86,6 +86,7 @@ void analogout_init(dac_t *obj, PinName pin)
}
analogout_write_u16(obj, 0);
HAL_DAC_Start(&obj->handle, obj->channel);
}
void analogout_free(dac_t *obj)

View File

@ -86,6 +86,7 @@ void analogout_init(dac_t *obj, PinName pin)
}
analogout_write_u16(obj, 0);
HAL_DAC_Start(&obj->handle, obj->channel);
}
void analogout_free(dac_t *obj)

View File

@ -121,6 +121,7 @@ static void _analogout_init_direct(dac_t *obj, const PinMap *pinmap)
}
analogout_write_u16(obj, 0);
HAL_DAC_Start(&obj->handle, obj->channel);
}
void analogout_init(dac_t *obj, PinName pin)

View File

@ -81,6 +81,7 @@ static void _analogout_init_direct(dac_t *obj, const PinMap *pinmap)
}
analogout_write_u16(obj, 0);
HAL_DAC_Start(&obj->handle, obj->channel);
}
void analogout_init(dac_t *obj, PinName pin)

View File

@ -86,6 +86,7 @@ void analogout_init(dac_t *obj, PinName pin)
}
analogout_write_u16(obj, 0);
HAL_DAC_Start(&obj->handle, obj->channel);
}
void analogout_free(dac_t *obj)

View File

@ -90,6 +90,7 @@ static void _analogout_init_direct(dac_t *obj, const PinMap *pinmap)
}
analogout_write_u16(obj, 0);
HAL_DAC_Start(&obj->handle, obj->channel);
}
void analogout_init(dac_t *obj, PinName pin)

View File

@ -109,6 +109,7 @@ static void _analogout_init_direct(dac_t *obj, const PinMap *pinmap)
}
analogout_write_u16(obj, 0);
HAL_DAC_Start(&obj->handle, obj->channel);
}
void analogout_init(dac_t *obj, PinName pin)

View File

@ -74,6 +74,7 @@ void analogout_init(dac_t *obj, PinName pin)
}
analogout_write_u16(obj, 0);
HAL_DAC_Start(&obj->handle, obj->channel);
}
void analogout_free(dac_t *obj)

View File

@ -90,6 +90,7 @@ static void _analogout_init_direct(dac_t *obj, const PinMap *pinmap)
}
analogout_write_u16(obj, 0);
HAL_DAC_Start(&obj->handle, obj->channel);
}
void analogout_init(dac_t *obj, PinName pin)

View File

@ -81,6 +81,7 @@ void analogout_init(dac_t *obj, PinName pin)
}
analogout_write_u16(obj, 0);
HAL_DAC_Start(&obj->handle, obj->channel);
}
void analogout_free(dac_t *obj)

View File

@ -97,6 +97,7 @@ static void _analogout_init_direct(dac_t *obj, const PinMap *pinmap)
}
analogout_write_u16(obj, 0);
HAL_DAC_Start(&obj->handle, obj->channel);
/* DAC cannot be used in deepsleep/STOP mode */
sleep_manager_lock_deep_sleep();

View File

@ -94,6 +94,7 @@ static void _analogout_init_direct(dac_t *obj, const PinMap *pinmap)
}
analogout_write_u16(obj, 0);
HAL_DAC_Start(&obj->handle, obj->channel);
}
void analogout_init(dac_t *obj, PinName pin)

View File

@ -80,6 +80,7 @@ static void _analogout_init_direct(dac_t *obj, const PinMap *pinmap)
}
analogout_write_u16(obj, 0);
HAL_DAC_Start(&obj->handle, obj->channel);
}
void analogout_init(dac_t *obj, PinName pin)

View File

@ -41,7 +41,6 @@
static inline void dac_write(dac_t *obj, int value)
{
HAL_DAC_SetValue(&obj->handle, obj->channel, DAC_ALIGN_12B_R, (value & DAC_RANGE));
HAL_DAC_Start(&obj->handle, obj->channel);
}
static inline int dac_read(dac_t *obj)