93 bool begin(uint32_t sample_rate, uint8_t bits) {
98 i2s_format_t fmt,
bool is_master, uint8_t channels)
override {
103 return begin(sample_rate, bits);
107 uint32_t sample_rate = 44100) {
118 rc &=
setFormat(mode, word_size, sample_rate);
132 uint16_t fs_code, bck_code;
133 if (!
wordSizeCodes(word_size, fs_code, bck_code))
return false;
189 if (db > 0)
return 0;
191 if (hi > 0xF) hi = 0xF;
192 uint8_t lo = (uint8_t)(((-db) - (hi * 6)) * 2);
193 return (uint8_t)((hi << 4) | (lo & 0xF));
197 uint16_t& bck_code) {
221 switch (sample_rate) {
Header only C++ driver for the AW88298 smart amplifier.
Definition AW88298.h:40
static constexpr uint16_t I2SCTRL_I2SMD_MASK
Definition AW88298.h:69
bool begin(uint32_t sample_rate, uint8_t bits)
Initialize the amplifier: software reset, power up (clear PWDN/AMPPD), unmute, and configure the digi...
Definition AW88298.h:93
static constexpr uint16_t HAGCCFG4_VOL_MASK
Definition AW88298.h:72
bool softReset()
Trigger a software reset via REG_ID.
Definition AW88298.h:124
static uint8_t db2vol(int db)
Definition AW88298.h:188
bool setMute(bool mute) override
Mute / unmute the output (HAGCCFG4/SYSCTRL2 HMUTE bit)
Definition AW88298.h:163
static bool sampleRateCode(uint32_t sample_rate, uint16_t &code)
Definition AW88298.h:220
static constexpr uint16_t ID_SOFTRESET
Magic value written to REG_ID to trigger a software reset.
Definition AW88298.h:75
static constexpr uint16_t I2SCTRL_I2SSR_MASK
Definition AW88298.h:66
static constexpr int VOLUME_DB_MAX
Definition AW88298.h:77
bool startOutput()
Enable the power amplifier output stage (clears AMPPD)
Definition AW88298.h:155
Reg
Definition AW88298.h:43
@ REG_HAGCCFG1
Definition AW88298.h:51
@ REG_SYSST
Definition AW88298.h:45
@ REG_SYSINT
Definition AW88298.h:46
@ REG_SYSINTM
Definition AW88298.h:47
@ REG_SYSCTRL
Definition AW88298.h:48
@ REG_SYSCTRL2
Definition AW88298.h:49
@ REG_ID
Definition AW88298.h:44
@ REG_HAGCCFG2
Definition AW88298.h:52
@ REG_I2SCTRL
Definition AW88298.h:50
@ REG_HAGCCFG4
Definition AW88298.h:54
@ REG_HAGCCFG3
Definition AW88298.h:53
static constexpr uint16_t SYSCTRL_I2SEN
Definition AW88298.h:60
AW88298()
AW88298 I2C address is board dependent; 0x36 is a common default.
Definition AW88298.h:81
bool begin(uint32_t sample_rate, uint8_t bits, codec_mode_t mode, i2s_format_t fmt, bool is_master, uint8_t channels) override
Initializes the codec.
Definition AW88298.h:97
bool begin(AW88298Mode mode=AW88298Mode::I2S, uint8_t word_size=16, uint32_t sample_rate=44100)
Definition AW88298.h:106
static constexpr uint16_t I2SCTRL_I2SFS_MASK
Definition AW88298.h:68
static bool wordSizeCodes(uint8_t word_size, uint16_t &fs_code, uint16_t &bck_code)
Definition AW88298.h:196
bool setFormat(AW88298Mode mode, uint8_t word_size, uint32_t sample_rate)
Configure the digital audio interface: protocol mode, word size and sample rate, and enable the I2S i...
Definition AW88298.h:131
static constexpr uint16_t SYSCTRL2_HMUTE
Definition AW88298.h:63
bool stopOutput()
Disable the power amplifier output stage (sets AMPPD)
Definition AW88298.h:158
bool setVolume(int volume) override
Sets the output volume in % (0...100), mapped to [VOLUME_DB_MIN..VOLUME_DB_MAX] dB.
Definition AW88298.h:179
bool setVolumeDb(int db)
Set the output volume in dB.
Definition AW88298.h:172
static constexpr int VOLUME_DB_MIN
Definition AW88298.h:78
static constexpr uint16_t SYSCTRL_PWDN
Definition AW88298.h:58
static constexpr uint16_t I2SCTRL_I2SBCK_MASK
Definition AW88298.h:67
static constexpr uint16_t SYSCTRL_AMPPD
Definition AW88298.h:59
Common parent class for codec drivers that have been ported from the Zephyr RTOS audio driver impleme...
Definition ZephyrDriverCommon.h:22
uint8_t i2c_addr
Definition ZephyrDriverCommon.h:87
int volume_percent
Last volume (in %) provided to setVolume()
Definition ZephyrDriverCommon.h:89
bool updateReg16(uint8_t reg, uint16_t mask, uint16_t value)
Read-Modify-Write of a 16 bit (big endian) register.
Definition ZephyrDriverCommon.h:136
Namespace for audio driver components.
Definition AudioBoard.h:5
const samplerate_t rate_code[14]
Definition AudioDriver.h:13
void delayMs(unsigned long ms)
Definition API_Delay.h:19
codec_mode_t
Definition DriverCommon.h:290
AW88298WordSize
I2S word size codes (AW88298_REG_I2SCTRL I2SFS / I2SBCK fields)
Definition AW88298.h:22
i2s_format_t
Definition DriverCommon.h:250
AW88298Mode
Digital audio interface mode (AW88298_REG_I2SCTRL I2SMD field)
Definition AW88298.h:15