audioamp3 2.0.0.0
audioamp3.h
Go to the documentation of this file.
1/*
2 * MikroSDK - MikroE Software Development Kit
3 * Copyright© 2020 MikroElektronika d.o.o.
4 *
5 * Permission is hereby granted, free of charge, to any person
6 * obtaining a copy of this software and associated documentation
7 * files (the "Software"), to deal in the Software without restriction,
8 * including without limitation the rights to use, copy, modify, merge,
9 * publish, distribute, sublicense, and/or sell copies of the Software,
10 * and to permit persons to whom the Software is furnished to do so,
11 * subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be
14 * included in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
22 * OR OTHER DEALINGS IN THE SOFTWARE.
23 */
24
33// ----------------------------------------------------------------------------
34
35#ifndef AUDIOAMP3_H
36#define AUDIOAMP3_H
37
42#ifdef PREINIT_SUPPORTED
43#include "preinit.h"
44#endif
45
46#ifdef MikroCCoreVersion
47 #if MikroCCoreVersion >= 1
48 #include "delays.h"
49 #endif
50#endif
51
52#include "drv_digital_out.h"
53#include "drv_digital_in.h"
54#include "drv_i2c_master.h"
55
56// -------------------------------------------------------------- PUBLIC MACROS
66#define AUDIOAMP3_MAP_MIKROBUS( cfg, mikrobus ) \
67 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
68 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
69 cfg.stb = MIKROBUS( mikrobus, MIKROBUS_RST ); \
70 cfg.clp = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
71 cfg.flt = MIKROBUS( mikrobus, MIKROBUS_INT )
78#define AUDIOAMP3_RETVAL uint8_t
79#define AUDIOAMP3_STATUS_T uint8_t
80
81#define AUDIOAMP3_OK 0x00
82#define AUDIOAMP3_INIT_ERROR 0xFF
89#define AUDIOAMP3_I2C_SLAVE_ADDRESS 0x6C
96#define AUDIOAMP3_DIAG_LATCHED_FAULT_REG_1 0x00
97#define AUDIOAMP3_DIAG_LATCHED_FAULT_REG_2 0x01
98#define AUDIOAMP3_DIAG_LATCHED_REG_1 0x02
99#define AUDIOAMP3_DIAG_LATCHED_REG_2 0x03
106#define AUDIOAMP3_EXT_STATUS_REG_1 0x04
107#define AUDIOAMP3_EXT_STATUS_REG_2 0x05
108#define AUDIOAMP3_EXT_STATUS_REG_3 0x06
109#define AUDIOAMP3_EXT_STATUS_REG_4 0x07
110#define AUDIOAMP3_EXT_STATUS_REG_5 0x11
117#define AUDIOAMP3_EXT_CTRL_REG_1 0x08
118#define AUDIOAMP3_EXT_CTRL_REG_2 0x09
119#define AUDIOAMP3_EXT_CTRL_REG_3 0x0A
120#define AUDIOAMP3_EXT_CTRL_REG_4 0x0B
121#define AUDIOAMP3_EXT_CTRL_REG_5 0x0C
122#define AUDIOAMP3_EXT_CTRL_REG_6 0x0D
123#define AUDIOAMP3_EXT_CTRL_REG_7 0x10
130#define AUDIOAMP3_SEL_CH_1_GAIN_12dB 0x00
131#define AUDIOAMP3_SEL_CH_1_GAIN_20dB 0x01
132#define AUDIOAMP3_SEL_CH_1_GAIN_32dB 0x03
133#define AUDIOAMP3_SEL_CH_2_GAIN_12dB 0x00
134#define AUDIOAMP3_SEL_CH_2_GAIN_20dB 0x04
135#define AUDIOAMP3_SEL_CH_2_GAIN_32dB 0x0C
136#define AUDIOAMP3_SEL_CH_3_GAIN_12dB 0x00
137#define AUDIOAMP3_SEL_CH_3_GAIN_20dB 0x10
138#define AUDIOAMP3_SEL_CH_3_GAIN_32dB 0x30
139#define AUDIOAMP3_SEL_CH_4_GAIN_12dB 0x00
140#define AUDIOAMP3_SEL_CH_4_GAIN_20dB 0x40
141#define AUDIOAMP3_SEL_CH_4_GAIN_32dB 0xC0
142#define AUDIOAMP3_SEL_ALL_CH_GAIN_26dB 0xAA
149#define AUDIOAMP3_OVERCURR_CH_1_LIMIT_LVL_1 0x00
150#define AUDIOAMP3_OVERCURR_CH_1_LIMIT_LVL_2 0x10
151#define AUDIOAMP3_OVERCURR_CH_2_LIMIT_LVL_1 0x00
152#define AUDIOAMP3_OVERCURR_CH_2_LIMIT_LVL_2 0x20
153#define AUDIOAMP3_OVERCURR_CH_3_LIMIT_LVL_1 0x00
154#define AUDIOAMP3_OVERCURR_CH_3_LIMIT_LVL_2 0x40
155#define AUDIOAMP3_OVERCURR_CH_4_LIMIT_LVL_1 0x00
156#define AUDIOAMP3_OVERCURR_CH_4_LIMIT_LVL_2 0x80
157#define AUDIOAMP3_CURRENT_LIMIT_LVL_2_ALL_CH 0xF0
158#define AUDIOAMP3_DIS_THERMAL_FOLDBACK 0x01
165#define AUDIOAMP3_FREQ_SEL_417_kHZ_45_PHASE_CLIP_OTWT 0x0D
166#define AUDIOAMP3_FREQ_SEL_500_kHZ 0x00
167#define AUDIOAMP3_FREQ_SEL_357_kHZ 0x02
168#define AUDIOAMP3_CONFIG_CLIP_OTW_TWEETER_DETECT 0x00
169#define AUDIOAMP3_CONFIG_CLIP_OTW_CLIP_DETECT 0x04
170#define AUDIOAMP3_CONFIG_CLIP_OTW_OVERTEMP_WARNING 0x08
171#define AUDIOAMP3_ENABLE_HARD_STOP_MODE 0x10
172#define AUDIOAMP3_SET_FS_357_kHZ_180_PHASE_CLIP_OTWT 0x20
173#define AUDIOAMP3_SEND_SYNC_PULSE_OSC_SYNC 0x40
174#define AUDIOAMP3_CONFIG_CLIP_OTW_THERMAL_FOLDBACK 0x80
181#define AUDIOAMP3_LOAD_DIAG_RUN_CH_1 0x01
182#define AUDIOAMP3_LOAD_DIAG_RUN_CH_2 0x02
183#define AUDIOAMP3_LOAD_DIAG_RUN_CH_3 0x04
184#define AUDIOAMP3_LOAD_DIAG_RUN_CH_4 0x08
185#define AUDIOAMP3_SET_CLOCK_OUTPUT_DISABLED 0x50
186#define AUDIOAMP3_DIS_DC_DETECTION_ALL_CH 0x00
187#define AUDIOAMP3_EN_TWEETER_DETECT_MODE 0x20
188#define AUDIOAMP3_EN_CLOCK_OUTPUT_OSC_SYNC 0x80
195#define AUDIOAMP3_OUT_CTRL_ALL_CH_HI_Z_MUTE_RST_DIS_DC_EN 0x1F
196#define AUDIOAMP3_OUT_CTRL_SET_CH_1_2_3_4_MUTE 0x00
197#define AUDIOAMP3_OUT_CTRL_SET_PLAY_MODE 0x20
198#define AUDIOAMP3_OUT_CTRL_DC_DET_SHUTDOWN_DIS 0x40
199#define AUDIOAMP3_OUT_CTRL_RST_DEVICE 0x80
200#define AUDIOAMP3_OUT_CTRL_L_LOW_STATE_DIS_ALL_CH 0x00
201#define AUDIOAMP3_OUT_CTRL_SET_CH_1_L_LOW_STATE 0xC1
202#define AUDIOAMP3_OUT_CTRL_SET_CH_2_L_LOW_STATE 0xC2
203#define AUDIOAMP3_OUT_CTRL_SET_CH_3_L_LOW_STATE 0xC4
204#define AUDIOAMP3_OUT_CTRL_SET_CH_4_L_LOW_STATE 0xC8
205#define AUDIOAMP3_OUT_CTRL_CONN_CH_1_2_BTL_MODE 0xD0
206#define AUDIOAMP3_OUT_CTRL_CONN_CH_3_4_BTL_MODE 0xE0
213#define AUDIOAMP3_MISCELL_NORMAL_SPEED_S2P_S2G_TIMING 0x01
214#define AUDIOAMP3_MISCELL_MIN_DC_DET_VAL_0_8_V 0x00
215#define AUDIOAMP3_MISCELL_MIN_DC_DET_VAL_2_4_V 0x02
216#define AUDIOAMP3_MISCELL_EN_CROSSTALK_ENHANCEMENT 0x04
217#define AUDIOAMP3_MISCELL_N_LOAD_DIAG_PHASES 0x08
218#define AUDIOAMP3_MISCELL_S2P_S2G_LOAD_DIAG 0x10
219#define AUDIOAMP3_MISCELL_SLOW_COMMON_MODE_RAMP 0x20
220#define AUDIOAMP3_MISCELL_SLOWER_CM_RAMP_DOWN_MUTE_MODE 0x80
227#define AUDIOAMP3_MASK_BIT_SEL_NO_CH 0x00
228#define AUDIOAMP3_MASK_BIT_SEL_CH_1 0x01
229#define AUDIOAMP3_MASK_BIT_SEL_CH_2 0x02
230#define AUDIOAMP3_MASK_BIT_SEL_ALL_CH 0x03
231#define AUDIOAMP3_MASK_BIT_SEL_GAIN_12dB 0x0C
232#define AUDIOAMP3_MASK_BIT_SEL_GAIN_20dB 0x14
233#define AUDIOAMP3_MASK_BIT_SEL_GAIN_26dB 0x1A
234#define AUDIOAMP3_MASK_BIT_SEL_GAIN_32dB 0x20
235#define AUDIOAMP3_MASK_BIT_CH_1 0xFC
236#define AUDIOAMP3_MASK_BIT_MUTE_NO_CH 0x10
237#define AUDIOAMP3_MASK_BIT_MUTE_CH_1 0xFE
238#define AUDIOAMP3_MASK_BIT_MUTE_CH_2 0xFD
245#define AUDIOAMP3_GAIN_VAL_MAX 0x04
246#define AUDIOAMP3_GAIN_VAL_MEDIUM 0x03
247#define AUDIOAMP3_GAIN_VAL_MIN 0x01
248#define AUDIOAMP3_GAIN_VAL_0 0x00
249#define AUDIOAMP3_GAIN_VAL_5 0x05
250#define AUDIOAMP3_GAIN_VAL_LVL_1_12dB 0x01
251#define AUDIOAMP3_GAIN_VAL_LVL_2_20dB 0x02
252#define AUDIOAMP3_GAIN_VAL_LVL_3_26dB 0x03
253#define AUDIOAMP3_GAIN_VAL_LVL_4_32dB 0x04
260#define AUDIOAMP3_STATUS_ERR 0x00
261#define AUDIOAMP3_STATUS_OK 0x01
264 // End group macro
265
266// --------------------------------------------------------------- PUBLIC TYPES
275typedef struct
276{
277 // Output pins
278
279 digital_out_t stb;
280
281 // Input pins
282
283 digital_in_t clp;
284 digital_in_t flt;
285
286 // Modules
287
288 i2c_master_t i2c;
289
290 // ctx variable
291
293
295
299typedef struct
300{
301 // Communication gpio pins
302
303 pin_name_t scl;
304 pin_name_t sda;
305
306 // Additional gpio pins
307
308 pin_name_t stb;
309 pin_name_t clp;
310 pin_name_t flt;
311
312 // static variable
313
314 uint32_t i2c_speed;
315 uint8_t i2c_address;
316
318
319 // End types group
320
321// ------------------------------------------------------------------ CONSTANTS
328 // End constants group
329
330// ------------------------------------------------------------------ VARIABLES
337 // End variable group
338
339// ----------------------------------------------- PUBLIC FUNCTION DECLARATIONS
340
346#ifdef __cplusplus
347extern "C"{
348#endif
349
359
369
380void audioamp3_generic_write ( audioamp3_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len );
381
393void audioamp3_generic_read ( audioamp3_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len );
394
404
416
427void audioamp3_read_all_diagnostics ( audioamp3_t *ctx, uint8_t *p_all_diagnostics );
428
455
484
505
525
555
556#ifdef __cplusplus
557}
558#endif
559#endif // _AUDIOAMP3_H_
560
561 // End public_function group
563
564// ------------------------------------------------------------------------- END
#define AUDIOAMP3_STATUS_T
Definition audioamp3.h:79
#define AUDIOAMP3_RETVAL
Definition audioamp3.h:78
AUDIOAMP3_STATUS_T audioamp3_set_gain_lvl(audioamp3_t *ctx, uint8_t gain_lvl)
Set the gain lvl function.
void audioamp3_read_all_diagnostics(audioamp3_t *ctx, uint8_t *p_all_diagnostics)
Read all diagnostics function.
void audioamp3_power_up(audioamp3_t *ctx)
Power Up function.
void audioamp3_generic_write(audioamp3_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic write function.
void audioamp3_generic_read(audioamp3_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic read function.
void audioamp3_cfg_setup(audioamp3_cfg_t *cfg)
Config Object Initialization function.
AUDIOAMP3_STATUS_T audioamp3_set_channel_low_to_low(audioamp3_t *ctx, uint8_t s_channel)
Set the channel to low-low state function.
AUDIOAMP3_STATUS_T audioamp3_set_channel_mute_mode(audioamp3_t *ctx, uint8_t s_channel)
Set the mute mode of channel function.
AUDIOAMP3_RETVAL audioamp3_init(audioamp3_t *ctx, audioamp3_cfg_t *cfg)
Initialization function.
AUDIOAMP3_STATUS_T audioamp3_set_play_mode(audioamp3_t *ctx)
Set the play mode for all channels function.
AUDIOAMP3_STATUS_T audioamp3_run_channel_diagnostics(audioamp3_t *ctx, uint8_t rc_channel)
Run channel diagnostics function.
void audioamp3_hw_reset(audioamp3_t *ctx)
Hardware reset function.
Click configuration structure definition.
Definition audioamp3.h:300
uint32_t i2c_speed
Definition audioamp3.h:314
pin_name_t clp
Definition audioamp3.h:309
pin_name_t flt
Definition audioamp3.h:310
pin_name_t scl
Definition audioamp3.h:303
pin_name_t sda
Definition audioamp3.h:304
pin_name_t stb
Definition audioamp3.h:308
uint8_t i2c_address
Definition audioamp3.h:315
Click ctx object definition.
Definition audioamp3.h:276
digital_in_t flt
Definition audioamp3.h:284
digital_out_t stb
Definition audioamp3.h:279
i2c_master_t i2c
Definition audioamp3.h:288
digital_in_t clp
Definition audioamp3.h:283
uint8_t slave_address
Definition audioamp3.h:292