Audio output to PWM pins for STM32. We use one timer to generate the sample rate and one timer for the PWM signal.
More...
#include <PWMDriverSTM32.h>
|
|
PWMConfig & | audioInfo () |
| |
|
virtual int | availableForWrite () |
| |
|
bool | begin (PWMConfig cfg) |
| |
|
virtual PWMConfig | defaultConfig () |
| |
|
virtual int | effectiveOutputSampleRate () |
| | Provides the effective sample rate.
|
| |
| virtual void | end () override |
| |
|
uint32_t | framesPerSecond () |
| |
|
bool | isTimerStarted () |
| |
| void | setBuffer (BaseBuffer< uint8_t > *buffer) |
| |
|
void | setPWMTimer (HardwareTimer &t) |
| | Defines the timer which is used to generate the PWM signal.
|
| |
|
uint32_t | underflowsPerSecond () |
| |
|
void | updateStatistics () |
| |
|
virtual size_t | write (const uint8_t *data, size_t len) |
| |
|
| virtual int | decimation () |
| | Decimation factor to reduce the sample rate.
|
| |
|
void | deleteBuffer () |
| |
| virtual bool | isDecimateActive () |
| |
| virtual int | maxChannels () |
| | One timer supports max 4 output pins.
|
| |
| virtual int | maxOutputValue () |
| | provides the max value for the configured resulution
|
| |
| virtual int | maxSampleRate () |
| | Provides the max working sample rate.
|
| |
|
virtual int | nextValue () |
| | determines the next scaled value
|
| |
|
void | playNextFrame () |
| | writes the next frame to the output pins
|
| |
| virtual void | pwmWrite (int channel, int value) |
| |
| virtual void | setupPWM () |
| | Setup PWM Pins.
|
| |
| virtual void | setupTimer () |
| |
| virtual void | startTimer () override |
| |
|
|
static void | defaultPWMAudioOutputCallback (void *obj) |
| | timer callback: write the next frame to the pins
|
| |
|
|
AudioInfo | actual_info |
| |
|
PWMConfig | audio_config |
| |
|
BaseBuffer< uint8_t > * | buffer = nullptr |
| |
|
Decimate | decimate |
| |
|
int | decimation_factor = 0 |
| |
|
uint32_t | frame_count = 0 |
| |
|
uint32_t | frame_size = 0 |
| |
|
uint32_t | frames_per_second = 0 |
| |
|
bool | is_blocking_write = true |
| |
|
bool | is_timer_started = false |
| |
|
int64_t | max_value |
| |
|
HardwareTimer * | p_pwm_timer = nullptr |
| |
|
PWM | pwm |
| |
|
TimerAlarmRepeating | ticker |
| |
|
uint32_t | time_1_sec |
| |
|
uint32_t | underflow_count = 0 |
| |
|
uint32_t | underflow_per_second = 0 |
| |
Audio output to PWM pins for STM32. We use one timer to generate the sample rate and one timer for the PWM signal.
- Author
- Phil Schatzmann
- Copyright
- GPLv3
◆ decimation()
| virtual int decimation |
( |
| ) |
|
|
inlineprotectedvirtualinherited |
◆ end()
◆ isDecimateActive()
| virtual bool isDecimateActive |
( |
| ) |
|
|
inlineprotectedvirtualinherited |
The requested sampling rate is too hight: we only process half of the samples so we can half the sampling rate
◆ maxChannels()
| virtual int maxChannels |
( |
| ) |
|
|
inlineprotectedvirtual |
◆ maxOutputValue()
| virtual int maxOutputValue |
( |
| ) |
|
|
inlineprotectedvirtual |
provides the max value for the configured resulution
Implements DriverPWMBase.
◆ maxSampleRate()
| virtual int maxSampleRate |
( |
| ) |
|
|
inlineprotectedvirtualinherited |
◆ pwmWrite()
| virtual void pwmWrite |
( |
int |
channel, |
|
|
int |
value |
|
) |
| |
|
inlineprotectedvirtual |
write a pwm value to the indicated channel. The max value depends on the resolution
Implements DriverPWMBase.
◆ setBuffer()
You can assign your own custom buffer impelementation: must be allocated on the heap and will be cleaned up by this class
◆ setupPWM()
| virtual void setupPWM |
( |
| ) |
|
|
inlineprotectedvirtual |
◆ setupTimer()
| virtual void setupTimer |
( |
| ) |
|
|
inlineprotectedvirtual |
◆ startTimer()
| virtual void startTimer |
( |
| ) |
|
|
inlineoverrideprotectedvirtual |
when we get the first write -> we activate the timer to start with the output of data
Implements DriverPWMBase.
The documentation for this class was generated from the following file: