42#define CHIP_NAME "IC Route LD3320"
43#define MANUFACTURER_NAME "IC Route"
44#define SUPPLY_VOLTAGE_MIN 3.0f
45#define SUPPLY_VOLTAGE_MAX 3.3f
46#define MAX_CURRENT 166.7f
47#define TEMPERATURE_MIN -40.0f
48#define TEMPERATURE_MAX 85.0f
49#define DRIVER_VERSION 1000
54#define LD3320_REG_FIFO_DATA 0x01
55#define LD3320_REG_FIFO_INT_CONF 0x02
56#define LD3320_REG_FIFO_EXT 0x05
57#define LD3320_REG_FIFO_STATUS 0x06
58#define LD3320_REG_FIFO_CLEAR 0x08
59#define LD3320_REG_CLK_CONF1 0x11
60#define LD3320_REG_CMD 0x17
61#define LD3320_REG_CLK_CONF2 0x19
62#define LD3320_REG_CLK_CONF3 0x1B
63#define LD3320_REG_ADC_CONF 0x1C
64#define LD3320_REG_CLK_CONF4 0x1D
65#define LD3320_REG_ADC_CONTROL 0x1E
66#define LD3320_REG_FIFO_DATA_UPPER_LOW 0x20
67#define LD3320_REG_FIFO_DATA_UPPER_HIGH 0x21
68#define LD3320_REG_FIFO_DATA_LOWER_LOW 0x22
69#define LD3320_REG_FIFO_DATA_LOWER_HIGH 0x23
70#define LD3320_REG_FIFO_MCU_WATER_MARK_L 0x24
71#define LD3320_REG_FIFO_MCU_WATER_MARK_H 0x25
72#define LD3320_REG_FIFO_DSP_WATER_MARK_L 0x26
73#define LD3320_REG_FIFO_DSP_WATER_MARK_H 0x27
74#define LD3320_REG_INT_CONF 0x29
75#define LD3320_REG_INT_FLAG 0x2B
76#define LD3320_REG_MP3_CONF 0x33
77#define LD3320_REG_ADC_GAIN 0x35
78#define LD3320_REG_DSP_CMD 0x37
79#define LD3320_REG_FIFO_EXT_UPPER_LOW 0x38
80#define LD3320_REG_FIFO_EXT_UPPER_HIGH 0x3A
81#define LD3320_REG_FIFO_EXT_LOWER_LOW 0x3C
82#define LD3320_REG_FIFO_EXT_LOWER_HIGH 0x3E
83#define LD3320_REG_FIFO_EXT_MCU_WATER_MARK_L 0x40
84#define LD3320_REG_FIFO_EXT_MCU_WATER_MARK_H 0x42
85#define LD3320_REG_FIFO_EXT_DSP_WATER_MARK_L 0x44
86#define LD3320_REG_FIFO_EXT_DSP_WATER_MARK_H 0x46
87#define LD3320_REG_INIT 0x6F
88#define LD3320_REG_CLK_CONF5 0x79
89#define LD3320_REG_HEADSET_LEFT 0x81
90#define LD3320_REG_HEADSET_RIGHT 0x83
91#define LD3320_REG_FEEDBACK 0x85
92#define LD3320_REG_ANALOG_CONTROL1 0x87
93#define LD3320_REG_ANALOG_CONTROL2 0x89
94#define LD3320_REG_GAIN_CONTROL 0x8D
95#define LD3320_REG_SPEAKER 0x8E
96#define LD3320_REG_LINEOUT 0x8F
97#define LD3320_REG_ASR_STATUS 0xB2
98#define LD3320_REG_ASR_VAD_PARAM 0xB3
99#define LD3320_REG_ASR_VAD_START 0xB4
100#define LD3320_REG_ASR_VAD_SILENCE_END 0xB5
101#define LD3320_REG_ASR_VAD_VOICE_MAX_LEN 0xB6
102#define LD3320_REG_ASR_PASS_FRAME 0xB7
103#define LD3320_REG_ASR_TIME 0xB8
104#define LD3320_REG_ASR_STR_LEN 0xB9
105#define LD3320_REG_INT_AUX 0xBA
106#define LD3320_REG_ASR_FORCE_STOP 0xBC
107#define LD3320_REG_INIT_CONTROL 0xBD
108#define LD3320_REG_ASR_STATUS2 0xBF
109#define LD3320_REG_ASR_INDEX 0xC1
110#define LD3320_REG_ASR_DATA 0xC3
111#define LD3320_REG_ASR_RES_1 0xC5
112#define LD3320_REG_ASR_RES_2 0xC7
113#define LD3320_REG_ASR_RES_3 0xC9
114#define LD3320_REG_ASR_RES_4 0xCB
115#define LD3320_REG_ASR_DSP_SLEEP 0xCD
116#define LD3320_REG_LOW_POWER 0xCF
121#define LD3320_PLL_MP3_19 0x0F
122#define LD3320_PLL_MP3_1B 0x18
123#define LD3320_PLL_MP3_1D (uint8_t)(((90.0f * ((LD3320_PLL_11) + 1.0f)) / (LD3320_CYSTAL_MHZ)) - 1.0f)
124#define LD3320_PLL_11 (uint8_t)((LD3320_CYSTAL_MHZ / 2.0f) - 1.0f)
125#define LD3320_PLL_ASR_19 (uint8_t)(LD3320_CYSTAL_MHZ * 32.0f / (LD3320_PLL_11 + 1.0f) - 0.51f)
126#define LD3320_PLL_ASR_1B 0x48
127#define LD3320_PLL_ASR_1D 0x1F
139static uint8_t a_ld3320_write_byte(
ld3320_handle_t *handle, uint8_t address, uint8_t data)
168static uint8_t a_ld3320_read_byte(
ld3320_handle_t *handle, uint8_t address, uint8_t *data)
173 reg = ((uint16_t)(0x05) << 8) | address;
201 handle->
debug_print(
"ld3320: read fifo status failed.\n");
208 handle->
debug_print(
"ld3320: send command failed.\n");
216 handle->
debug_print(
"ld3320: read fifo status failed.\n");
223 handle->
debug_print(
"ld3320: write byte failed.\n");
231 handle->
debug_print(
"ld3320: set low power failed.\n");
239 handle->
debug_print(
"ld3320: write byte failed.\n");
246 handle->
debug_print(
"ld3320: set clock configure 1 failed.\n");
255 handle->
debug_print(
"ld3320: set adc control failed.\n");
262 handle->
debug_print(
"ld3320: set clock conf 3 failed.\n");
269 handle->
debug_print(
"ld3320: set clock conf 3 failed.\n");
276 handle->
debug_print(
"ld3320: set clock conf 4 failed.\n");
286 handle->
debug_print(
"ld3320: set adc control failed.\n");
293 handle->
debug_print(
"ld3320: set clock conf 3 failed.\n");
300 handle->
debug_print(
"ld3320: set clock conf 3 failed.\n");
307 handle->
debug_print(
"ld3320: set clock conf 4 failed.\n");
322 handle->
debug_print(
"ld3320: set dsp sleep failed.\n");
329 handle->
debug_print(
"ld3320: send command failed.\n");
337 handle->
debug_print(
"ld3320: set string length failed.\n");
344 handle->
debug_print(
"ld3320: set low power failed.\n");
371 res = a_ld3320_common_init(handle);
379 handle->
debug_print(
"ld3320: set int control failed.\n");
386 handle->
debug_print(
"ld3320: set command failed.\n");
394 handle->
debug_print(
"ld3320: set feedback failed.\n");
401 handle->
debug_print(
"ld3320: set line out failed.\n");
408 handle->
debug_print(
"ld3320: set headset left failed.\n");
415 handle->
debug_print(
"ld3320: set headset right failed.\n");
423 handle->
debug_print(
"ld3320: set headset right failed.\n");
430 handle->
debug_print(
"ld3320: set gain control failed.\n");
438 handle->
debug_print(
"ld3320: set analog control 1 failed.\n");
445 handle->
debug_print(
"ld3320: set analog control 2 failed.\n");
453 handle->
debug_print(
"ld3320: set fifo data lower low failed.\n");
460 handle->
debug_print(
"ld3320: set fifo data lower high failed.\n");
467 handle->
debug_print(
"ld3320: set fifo data upper low failed.\n");
474 handle->
debug_print(
"ld3320: set fifo data upper high failed.\n");
481 handle->
debug_print(
"ld3320: set fifo mcu water mark low failed.\n");
488 handle->
debug_print(
"ld3320: set fifo mcu water mark high failed.\n");
495 handle->
debug_print(
"ld3320: set fifo mcu water mark low failed.\n");
502 handle->
debug_print(
"ld3320: set fifo mcu water mark high failed.\n");
529 handle->
debug_print(
"ld3320: fifo status read failed.\n");
533 size = (uint16_t)(512 < (handle->
size - handle->
point) ?
543 while (!(data & 0x08) && (i < size))
548 handle->
debug_print(
"ld3320: write fifo failed.\n");
558 handle->
debug_print(
"ld3320: fifo status read failed.\n");
593 res = a_ld3320_common_init(handle);
601 handle->
debug_print(
"ld3320: set int control failed.\n");
608 handle->
debug_print(
"ld3320: set command failed.\n");
616 handle->
debug_print(
"ld3320: set fifo ext lower low failed.\n");
623 handle->
debug_print(
"ld3320: set fifo ext lower high failed.\n");
630 handle->
debug_print(
"ld3320: set fifo ext upper low failed.\n");
637 handle->
debug_print(
"ld3320: set fifo ext upper high failed.\n");
644 handle->
debug_print(
"ld3320: set fifo ext mcu water mark low failed.\n");
651 handle->
debug_print(
"ld3320: set fifo ext mcu water mark high failed.\n");
658 handle->
debug_print(
"ld3320: set fifo ext mcu water mark low failed.\n");
665 handle->
debug_print(
"ld3320: set fifo ext mcu water mark high failed.\n");
683static uint8_t a_ld3320_check_asr_busy(
ld3320_handle_t *handle, uint8_t *s)
689 for (i = 0; i < 10; i++)
694 handle->
debug_print(
"ld3320: read asr status failed.\n");
720static uint8_t a_ld3320_asr_start(
ld3320_handle_t *handle, uint8_t mic_gain, uint8_t vad)
728 handle->
debug_print(
"ld3320: set adc gain failed.\n");
735 handle->
debug_print(
"ld3320: set asr vad param failed.\n");
742 handle->
debug_print(
"ld3320: set adc conf failed.\n");
749 handle->
debug_print(
"ld3320: set init control failed.\n");
756 handle->
debug_print(
"ld3320: set fifo clear failed.\n");
764 handle->
debug_print(
"ld3320: set fifo clear failed.\n");
769 res = a_ld3320_check_asr_busy(handle, (uint8_t *)&s);
772 handle->
debug_print(
"ld3320: check asr busy failed.\n");
785 handle->
debug_print(
"ld3320: clear asr status failed.\n");
792 handle->
debug_print(
"ld3320: start dsp asr failed.\n");
800 handle->
debug_print(
"ld3320: enable adc mic failed.\n");
807 handle->
debug_print(
"ld3320: enable sync failed.\n");
814 handle->
debug_print(
"ld3320: set the init control failed.\n");
833static uint8_t a_ld3320_asr_add_key_word(
ld3320_handle_t *handle, uint8_t ind,
char *word, uint16_t len)
841 handle->
debug_print(
"ld3320: set asr index failed.\n");
848 handle->
debug_print(
"ld3320: set asr data failed.\n");
855 handle->
debug_print(
"ld3320: fifo clear failed.\n");
863 handle->
debug_print(
"ld3320: fifo clear failed.\n");
868 k = (len < 50) ? len : 50;
869 for (i = 0; i < k; i++)
874 handle->
debug_print(
"ld3320: fifo ext write failed.\n");
882 handle->
debug_print(
"ld3320: asr string length failed.\n");
889 handle->
debug_print(
"ld3320: asr status failed.\n");
896 handle->
debug_print(
"ld3320: dsp command failed.\n");
916 for (i = 0; i < handle->
len; i++)
918 res = a_ld3320_check_asr_busy(handle, (uint8_t *)&s);
921 handle->
debug_print(
"ld3320: check asr busy failed.\n");
929 res = a_ld3320_asr_add_key_word(handle, i, handle->
text[i],
930 (uint16_t)strlen(handle->
text[i]));
933 handle->
debug_print(
"ld3320: asr add key word failed.\n");
954 handle->
debug_print(
"ld3320: reset gpio write failed.\n");
961 handle->
debug_print(
"ld3320: reset gpio write failed.\n");
968 handle->
debug_print(
"ld3320: reset gpio write failed.\n");
974 handle->
debug_print(
"ld3320: spi write command failed.\n");
993 uint8_t res, i, flag;
996 for (i = 0; i < 5; i++)
998 res = a_ld3320_asr_init(handle);
1001 handle->
debug_print(
"ld3320: asr init failed.\n");
1002 (void)a_ld3320_reset(handle);
1008 res = a_ld3320_asr_add_fixed(handle);
1011 (void)a_ld3320_reset(handle);
1017 res = a_ld3320_asr_start(handle, handle->
mic_gain, handle->
vad);
1020 (void)a_ld3320_reset(handle);
1054 handle->
mode = (uint8_t)mode;
1109 for (i = 0; i < len; i++)
1111 strcpy(handle->
text[i], text[i]);
1142 for (i = 0; i < handle->
len; i++)
1144 strcpy(text[i], handle->
text[i]);
1224 handle->
vad = (uint8_t)vad;
1304 handle->
debug_print(
"ld3320: spi_init is null.\n");
1310 handle->
debug_print(
"ld3320: spi_deinit is null.\n");
1316 handle->
debug_print(
"ld3320: spi_read_address16 is null.\n");
1322 handle->
debug_print(
"ld3320: spi_write_cmd is null.\n");
1328 handle->
debug_print(
"ld3320: reset_gpio_init is null.\n");
1334 handle->
debug_print(
"ld3320: reset_gpio_deinit is null.\n");
1340 handle->
debug_print(
"ld3320: reset_gpio_write is null.\n");
1346 handle->
debug_print(
"ld3320: delay_ms is null.\n");
1352 handle->
debug_print(
"ld3320: delay_us is null.\n");
1358 handle->
debug_print(
"ld3320: receive_callback is null.\n");
1364 handle->
debug_print(
"ld3320: mp3_read_init is null.\n");
1370 handle->
debug_print(
"ld3320: mp3_read_deinit is null.\n");
1376 handle->
debug_print(
"ld3320: mp3_read is null.\n");
1383 handle->
debug_print(
"ld3320: spi init failed.\n");
1389 handle->
debug_print(
"ld3320: reset gpio init failed.\n");
1394 if (a_ld3320_reset(handle) != 0)
1426 uint8_t asr_status2;
1445 handle->
debug_print(
"ld3320: read int flag failed.\n");
1453 handle->
debug_print(
"ld3320: write int conf failed.\n");
1461 handle->
debug_print(
"ld3320: write fifo int conf failed.\n");
1469 handle->
debug_print(
"ld3320: read asr status failed.\n");
1477 handle->
debug_print(
"ld3320: read asr status2 failed.\n");
1481 if (((flag & 0x10) != 0) && (asr_status == 0x21) && (asr_status2 == 0x35))
1487 handle->
debug_print(
"ld3320: read count failed.\n");
1491 if ((count > 0) && (count <= 4))
1508 handle->
debug_print(
"ld3320: write int flag failed.\n");
1516 handle->
debug_print(
"ld3320: write adc conf failed.\n");
1531 handle->
debug_print(
"ld3320: read int flag failed.\n");
1539 handle->
debug_print(
"ld3320: read int conf failed.\n");
1547 handle->
debug_print(
"ld3320: read fifo int conf failed.\n");
1555 handle->
debug_print(
"ld3320: write int conf failed.\n");
1563 handle->
debug_print(
"ld3320: write fifo int conf failed.\n");
1571 handle->
debug_print(
"ld3320: read status failed.\n");
1575 if ((status & 0x20) != 0)
1581 handle->
debug_print(
"ld3320: write int conf failed.\n");
1589 handle->
debug_print(
"ld3320: write int aux failed.\n");
1597 handle->
debug_print(
"ld3320: asr force stop failed.\n");
1606 handle->
debug_print(
"ld3320: clear fifo failed.\n");
1614 handle->
debug_print(
"ld3320: clear fifo failed.\n");
1622 handle->
debug_print(
"ld3320: mp3 conf failed.\n");
1628 else if (handle->
point >= handle->
size &&
1635 handle->
debug_print(
"ld3320: asr force stop failed.\n");
1643 handle->
debug_print(
"ld3320: set int conf failed.\n");
1651 res = a_ld3320_mp3_load(handle);
1655 handle->
debug_print(
"ld3320: mp3 load failed.\n");
1663 handle->
debug_print(
"ld3320: write int conf failed.\n");
1671 handle->
debug_print(
"ld3320: write fifo int conf failed.\n");
1680 handle->
debug_print(
"ld3320: mode is invalid.\n");
1691 handle->
debug_print(
"ld3320: read asr index failed.\n");
1695 if (i >= handle->
len)
1698 handle->
debug_print(
"ld3320: index is invalid.\n");
1754 res = a_ld3320_run_asr(handle);
1769 handle->
debug_print(
"ld3320: point is the end.\n");
1773 res = a_ld3320_mp3_init(handle);
1776 handle->
debug_print(
"ld3320: mp3 init failed.\n");
1781 volume =((15 - volume) & 0x0F) << 2;
1785 handle->
debug_print(
"ld3320: set speaker volume failed.\n");
1792 handle->
debug_print(
"ld3320: set analog control1 failed.\n");
1796 res = a_ld3320_mp3_load(handle);
1799 handle->
debug_print(
"ld3320: load data failed.\n");
1806 handle->
debug_print(
"ld3320: set int aux failed.\n");
1813 handle->
debug_print(
"ld3320: set command failed.\n");
1820 handle->
debug_print(
"ld3320: set mp3 conf failed.\n");
1827 handle->
debug_print(
"ld3320: set int conf failed.\n");
1834 handle->
debug_print(
"ld3320: set fifo int conf failed.\n");
1841 handle->
debug_print(
"ld3320: set feedback failed.\n");
1849 handle->
debug_print(
"ld3320: mode is invalid.\n");
1885 res = a_ld3320_reset(handle);
1895 handle->
debug_print(
"ld3320: gpio deinit failed.\n");
1902 handle->
debug_print(
"ld3320: spi deinit failed.\n");
1909 res = a_ld3320_reset(handle);
1919 handle->
debug_print(
"ld3320: gpio deinit failed.\n");
1926 handle->
debug_print(
"ld3320: spi deinit failed.\n");
1933 handle->
debug_print(
"ld3320: mp3 deinit failed.\n");
1940 handle->
debug_print(
"ld3320: mode is invalid.\n");
1973 res = a_ld3320_reset(handle);
1983 res = a_ld3320_reset(handle);
1993 handle->
debug_print(
"ld3320: mode is invalid.\n");
2027 handle->
debug_print(
"ld3320: volume is invalid.\n");
2032 volume =((15 - volume) & 0x0F) << 2;
2036 handle->
debug_print(
"ld3320: set speaker volume failed.\n");
2043 handle->
debug_print(
"ld3320: set analog control1 failed.\n");
2078 handle->
debug_print(
"ld3320: get speaker volume failed.\n");
2082 *volume = (*volume) >> 2;
2083 *volume = (*volume) & 0xF;
2084 *volume = 15 - (*volume);
2114 if (volume_left > 15)
2116 handle->
debug_print(
"ld3320: volume left is invalid.\n");
2120 if (volume_right > 15)
2122 handle->
debug_print(
"ld3320: volume right is invalid.\n");
2127 volume_left =((15 - volume_left) & 0x0F) << 2;
2131 handle->
debug_print(
"ld3320: set headset left failed.\n");
2135 volume_right =((15 - volume_right) & 0x0F) << 2;
2139 handle->
debug_print(
"ld3320: set headset right failed.\n");
2146 handle->
debug_print(
"ld3320: set analog control1 failed.\n");
2182 handle->
debug_print(
"ld3320: get headset left failed.\n");
2190 handle->
debug_print(
"ld3320: get headset right failed.\n");
2194 *volume_left = (*volume_left) >> 2;
2195 *volume_left = (*volume_left) & 0xF;
2196 *volume_left = 15 - (*volume_left);
2197 *volume_right = (*volume_right) >> 2;
2198 *volume_right = (*volume_right) & 0xF;
2199 *volume_right = 15 - (*volume_right);
2231 handle->
debug_print(
"ld3320: mp3 read init failed.\n");
2263 return a_ld3320_write_byte(handle, reg, data);
2289 return a_ld3320_read_byte(handle, reg, data);
#define LD3320_REG_FIFO_MCU_WATER_MARK_H
#define LD3320_REG_HEADSET_RIGHT
#define LD3320_REG_FIFO_EXT_DSP_WATER_MARK_L
#define LD3320_REG_CLK_CONF1
#define LD3320_REG_FIFO_DSP_WATER_MARK_H
#define LD3320_REG_DSP_CMD
#define LD3320_REG_ADC_CONF
#define LD3320_REG_FIFO_EXT_UPPER_HIGH
#define LD3320_REG_CLK_CONF4
#define LD3320_REG_CLK_CONF2
#define LD3320_REG_ASR_DATA
#define LD3320_REG_FIFO_EXT_MCU_WATER_MARK_H
#define LD3320_REG_FEEDBACK
#define LD3320_REG_ANALOG_CONTROL2
#define LD3320_REG_INT_FLAG
#define LD3320_REG_FIFO_EXT_UPPER_LOW
#define LD3320_REG_ASR_INDEX
#define LD3320_REG_FIFO_MCU_WATER_MARK_L
#define LD3320_REG_LOW_POWER
#define LD3320_REG_FIFO_DATA_LOWER_HIGH
#define LD3320_REG_FIFO_EXT_MCU_WATER_MARK_L
#define LD3320_REG_FIFO_DATA_UPPER_LOW
#define LD3320_REG_ASR_RES_1
#define LD3320_REG_INIT_CONTROL
#define SUPPLY_VOLTAGE_MAX
#define LD3320_REG_SPEAKER
#define LD3320_REG_FIFO_EXT_LOWER_LOW
#define LD3320_REG_ASR_VAD_PARAM
#define LD3320_REG_ADC_GAIN
#define LD3320_REG_CLK_CONF3
#define LD3320_REG_FIFO_EXT
#define LD3320_REG_ASR_DSP_SLEEP
#define LD3320_REG_FIFO_DATA_LOWER_LOW
#define LD3320_REG_MP3_CONF
#define LD3320_REG_INT_AUX
#define LD3320_REG_GAIN_CONTROL
#define LD3320_REG_ASR_STR_LEN
#define LD3320_REG_ADC_CONTROL
#define MANUFACTURER_NAME
#define LD3320_REG_FIFO_EXT_DSP_WATER_MARK_H
#define SUPPLY_VOLTAGE_MIN
#define LD3320_REG_ANALOG_CONTROL1
#define LD3320_REG_FIFO_DATA
chip register definition
#define LD3320_REG_FIFO_DATA_UPPER_HIGH
#define LD3320_PLL_ASR_19
#define LD3320_PLL_MP3_1D
#define LD3320_PLL_MP3_19
chip register param definition
#define LD3320_PLL_ASR_1B
#define LD3320_REG_ASR_FORCE_STOP
#define LD3320_REG_ASR_STATUS
#define LD3320_REG_FIFO_EXT_LOWER_HIGH
#define LD3320_REG_LINEOUT
#define CHIP_NAME
chip information definition
#define LD3320_PLL_MP3_1B
#define LD3320_REG_HEADSET_LEFT
#define LD3320_REG_ASR_STATUS2
#define LD3320_REG_FIFO_STATUS
#define LD3320_REG_FIFO_DSP_WATER_MARK_L
#define LD3320_REG_ASR_RES_4
#define LD3320_REG_INT_CONF
#define LD3320_REG_FIFO_INT_CONF
#define LD3320_PLL_ASR_1D
#define LD3320_REG_FIFO_CLEAR
driver ld3320 header file
uint8_t ld3320_get_mode(ld3320_handle_t *handle, ld3320_mode_t *mode)
get the chip mode
struct ld3320_info_s ld3320_info_t
ld3320 information structure definition
uint8_t ld3320_get_mic_gain(ld3320_handle_t *handle, ld3320_mic_gain_t *gain)
get the microphone gain
uint8_t ld3320_set_vad(ld3320_handle_t *handle, ld3320_vad_t vad)
set the vad
uint8_t ld3320_deinit(ld3320_handle_t *handle)
deinit the chip
uint8_t ld3320_stop(ld3320_handle_t *handle)
stop the process
uint8_t ld3320_get_key_words(ld3320_handle_t *handle, char text[50][50], uint8_t *len)
get the key words
ld3320_mode_t
ld3320 mode enumeration definition
ld3320_status_t
ld3320 asr status enumeration definition
uint8_t ld3320_init(ld3320_handle_t *handle)
initialize the chip
uint8_t ld3320_configure_mp3(ld3320_handle_t *handle, char *name)
configure the mp3
uint8_t ld3320_set_key_words(ld3320_handle_t *handle, char text[50][50], uint8_t len)
set the key words
uint8_t ld3320_get_speaker_volume(ld3320_handle_t *handle, uint8_t *volume)
get the speaker volume
ld3320_vad_t
ld3320 vad enumeration definition
struct ld3320_handle_s ld3320_handle_t
ld3320 handle structure definition
uint8_t ld3320_set_headset_volume(ld3320_handle_t *handle, uint8_t volume_left, uint8_t volume_right)
set the headset volume
uint8_t ld3320_info(ld3320_info_t *info)
get chip's information
uint8_t ld3320_start(ld3320_handle_t *handle)
start the process
uint8_t ld3320_irq_handler(ld3320_handle_t *handle)
irq handler
uint8_t ld3320_get_vad(ld3320_handle_t *handle, ld3320_vad_t *vad)
get the vad
uint8_t ld3320_get_headset_volume(ld3320_handle_t *handle, uint8_t *volume_left, uint8_t *volume_right)
get the headset volume
uint8_t ld3320_set_mode(ld3320_handle_t *handle, ld3320_mode_t mode)
set the chip mode
uint8_t ld3320_set_mic_gain(ld3320_handle_t *handle, ld3320_mic_gain_t gain)
set the microphone gain
uint8_t ld3320_get_status(ld3320_handle_t *handle, ld3320_status_t *status)
get the status
uint8_t ld3320_set_speaker_volume(ld3320_handle_t *handle, uint8_t volume)
set the speaker volume
ld3320_mic_gain_t
ld3320 mic gain enumeration definition
@ LD3320_STATUS_ASR_ERROR
@ LD3320_STATUS_ASR_RUNNING
@ LD3320_STATUS_ASR_FOUND_OK
@ LD3320_STATUS_MP3_ERROR
@ LD3320_STATUS_MP3_RUNNING
@ LD3320_STATUS_ASR_FOUND_ZERO
uint8_t ld3320_set_reg(ld3320_handle_t *handle, uint8_t reg, uint8_t data)
set the chip register
uint8_t ld3320_get_reg(ld3320_handle_t *handle, uint8_t reg, uint8_t *data)
get the chip register
uint8_t(* mp3_read_init)(char *name, uint32_t *size)
uint8_t(* spi_init)(void)
uint8_t(* mp3_read)(uint32_t addr, uint16_t size, uint8_t *buffer)
void(* delay_ms)(uint32_t ms)
uint8_t(* reset_gpio_deinit)(void)
uint8_t(* mp3_read_deinit)(void)
void(* debug_print)(const char *const fmt,...)
uint8_t(* spi_read_address16)(uint16_t addr, uint8_t *buf, uint16_t len)
void(* receive_callback)(uint8_t type, uint8_t index, char *text)
void(* delay_us)(uint32_t us)
uint8_t(* spi_deinit)(void)
uint8_t(* reset_gpio_init)(void)
uint8_t(* spi_write_cmd)(uint8_t *buf, uint16_t len)
uint8_t(* reset_gpio_write)(uint8_t data)
float supply_voltage_max_v
char manufacturer_name[32]
float supply_voltage_min_v