LibDriver LD3320
Loading...
Searching...
No Matches
driver_ld3320_asr_test.c
Go to the documentation of this file.
1
36
38
39static ld3320_handle_t gs_handle;
40static volatile uint8_t gs_flag;
41
50{
51 if (ld3320_irq_handler(&gs_handle) != 0)
52 {
53 return 1;
54 }
55 else
56 {
57 return 0;
58 }
59}
60
68static void a_callback(uint8_t type, uint8_t i, char *text)
69{
70 uint8_t res;
71
73 {
74 ld3320_interface_debug_print("ld3320: detect index %d %s.\n", i, text);
75
76 /* flag found */
77 gs_flag = 1;
78 }
79 else if (type == LD3320_STATUS_ASR_FOUND_ZERO)
80 {
81 ld3320_interface_debug_print("ld3320: irq zero.\n");
82
83 /* start */
84 res = ld3320_start(&gs_handle);
85 if (res != 0)
86 {
87 ld3320_interface_debug_print("ld3320: start failed.\n");
88 }
89 }
90 else
91 {
92 ld3320_interface_debug_print("ld3320: irq unknown type.\n");
93 }
94}
95
103uint8_t ld3320_asr_test(void)
104{
105 uint8_t res;
106 uint32_t timeout;
107 char text[1][50];
108 ld3320_info_t info;
109
110 /* link driver */
122 DRIVER_LD3320_LINK_DEBUG_RECEIVE_CALLBACK(&gs_handle, a_callback);
126
127 /* get information */
128 res = ld3320_info(&info);
129 if (res != 0)
130 {
131 ld3320_interface_debug_print("ld3320: get info failed.\n");
132
133 return 1;
134 }
135 else
136 {
137 /* print chip info */
138 ld3320_interface_debug_print("ld3320: chip is %s.\n", info.chip_name);
139 ld3320_interface_debug_print("ld3320: manufacturer is %s.\n", info.manufacturer_name);
140 ld3320_interface_debug_print("ld3320: interface is %s.\n", info.interface);
141 ld3320_interface_debug_print("ld3320: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
142 ld3320_interface_debug_print("ld3320: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
143 ld3320_interface_debug_print("ld3320: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
144 ld3320_interface_debug_print("ld3320: max current is %0.2fmA.\n", info.max_current_ma);
145 ld3320_interface_debug_print("ld3320: max temperature is %0.1fC.\n", info.temperature_max);
146 ld3320_interface_debug_print("ld3320: min temperature is %0.1fC.\n", info.temperature_min);
147 }
148
149 /* start register test */
150 ld3320_interface_debug_print("ld3320: start asr test.\n");
151
152 /* init */
153 res = ld3320_init(&gs_handle);
154 if (res != 0)
155 {
156 ld3320_interface_debug_print("ld3320: init failed.\n");
157
158 return 1;
159 }
160 /* set asr mode */
161 res = ld3320_set_mode(&gs_handle, LD3320_MODE_ASR);
162 if (res != 0)
163 {
164 ld3320_interface_debug_print("ld3320: set mode failed.\n");
165 (void)ld3320_deinit(&gs_handle);
166
167 return 1;
168 }
169
170 /* set default mic gain */
172 if (res != 0)
173 {
174 ld3320_interface_debug_print("ld3320: set mic gain failed.\n");
175 (void)ld3320_deinit(&gs_handle);
176
177 return 1;
178 }
179
180 /* set default vad */
181 res = ld3320_set_vad(&gs_handle, LD3320_VAD_COMMON);
182 if (res != 0)
183 {
184 ld3320_interface_debug_print("ld3320: set vad failed.\n");
185 (void)ld3320_deinit(&gs_handle);
186
187 return 1;
188 }
189
190 /* set key words */
191 memset(text[0], 0, sizeof(char) * 50);
192 strncpy((char *)text[0], "ha lou", strlen("ha lou"));
193 res = ld3320_set_key_words(&gs_handle, text, 1);
194 if (res != 0)
195 {
196 ld3320_interface_debug_print("ld3320: set key words failed.\n");
197 (void)ld3320_deinit(&gs_handle);
198
199 return 1;
200 }
201
202 /* clear flag */
203 gs_flag = 0;
204
205 /* start */
206 res = ld3320_start(&gs_handle);
207 if (res != 0)
208 {
209 ld3320_interface_debug_print("ld3320: start failed.\n");
210 (void)ld3320_deinit(&gs_handle);
211
212 return 1;
213 }
214 ld3320_interface_debug_print("ld3320: please speak hello.\n");
215 timeout = 10000;
216 while (timeout != 0)
217 {
218 if (gs_flag != 0)
219 {
220 break;
221 }
222 timeout--;
224 }
225 if (timeout == 0)
226 {
227 ld3320_interface_debug_print("ld3320: wait timeout.\n");
228 (void)ld3320_deinit(&gs_handle);
229
230 return 1;
231 }
232
233 /* finish asr test */
234 ld3320_interface_debug_print("ld3320: finish asr test.\n");
235 (void)ld3320_deinit(&gs_handle);
236
237 return 0;
238}
driver ld3320 asr test header file
struct ld3320_info_s ld3320_info_t
ld3320 information structure definition
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_init(ld3320_handle_t *handle)
initialize the chip
uint8_t ld3320_set_key_words(ld3320_handle_t *handle, char text[50][50], uint8_t len)
set the key words
struct ld3320_handle_s ld3320_handle_t
ld3320 handle structure definition
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_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
@ LD3320_MODE_ASR
@ LD3320_STATUS_ASR_FOUND_OK
@ LD3320_STATUS_ASR_FOUND_ZERO
@ LD3320_VAD_COMMON
@ LD3320_MIC_GAIN_COMMON
uint8_t ld3320_interface_mp3_read(uint32_t addr, uint16_t size, uint8_t *buffer)
interface mp3 read
uint8_t ld3320_interface_reset_gpio_init(void)
interface reset gpio init
uint8_t ld3320_interface_spi_write_cmd(uint8_t *buf, uint16_t len)
interface spi bus write
void ld3320_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t ld3320_interface_reset_gpio_deinit(void)
interface reset gpio deinit
uint8_t ld3320_interface_spi_init(void)
interface spi bus init
uint8_t ld3320_interface_reset_gpio_write(uint8_t data)
interface reset gpio write
uint8_t ld3320_interface_spi_read_address16(uint16_t reg, uint8_t *buf, uint16_t len)
interface spi bus read
uint8_t ld3320_interface_mp3_deinit(void)
interface mp3 deinit
uint8_t ld3320_interface_spi_deinit(void)
interface spi bus deinit
uint8_t ld3320_interface_mp3_init(char *name, uint32_t *size)
interface mp3 init
void ld3320_interface_delay_us(uint32_t us)
interface delay us
void ld3320_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t ld3320_asr_test(void)
asr test
uint8_t ld3320_asr_test_irq_handler(void)
asr test irq
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]