LibDriver VS1053B
Loading...
Searching...
No Matches
driver_vs1053b_basic.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static vs1053b_handle_t gs_handle;
41
52uint8_t vs1053b_basic_init(vs1053b_mode_t mode, vs1053b_record_format_t format, void (*callback)(uint8_t type, uint32_t cur_pos))
53{
54 uint8_t res;
55 uint8_t reg;
56 uint8_t buf[2];
57 uint16_t clk;
58 uint16_t config;
59
60 /* link interface function */
82 DRIVER_VS1053B_LINK_RECEIVE_CALLBACK(&gs_handle, callback);
83
84 /* vs1053b init */
85 res = vs1053b_init(&gs_handle);
86 if (res != 0)
87 {
88 vs1053b_interface_debug_print("vs1053b: init failed.\n");
89
90 return 1;
91 }
92
93 /* play mode */
94 if (mode == VS1053B_MODE_PLAY)
95 {
96 /* set default play clock multiplier */
98 if (res != 0)
99 {
100 vs1053b_interface_debug_print("vs1053b: set clock multiplier failed.\n");
101 (void)vs1053b_deinit(&gs_handle);
102
103 return 1;
104 }
105
106 /* set default play allowed multiplier addition */
108 if (res != 0)
109 {
110 vs1053b_interface_debug_print("vs1053b: set allowed multiplier addition failed.\n");
111 (void)vs1053b_deinit(&gs_handle);
112
113 return 1;
114 }
115
116 /* set default play clock frequency */
118 if (res != 0)
119 {
120 vs1053b_interface_debug_print("vs1053b: clock frequency convert to register failed.\n");
121 (void)vs1053b_deinit(&gs_handle);
122
123 return 1;
124 }
125
126 /* set clock frequency */
127 res = vs1053b_set_clock_frequency(&gs_handle, clk);
128 if (res != 0)
129 {
130 vs1053b_interface_debug_print("vs1053b: set clock frequency failed.\n");
131 (void)vs1053b_deinit(&gs_handle);
132
133 return 1;
134 }
135
136 /* set default play diff */
138 if (res != 0)
139 {
140 vs1053b_interface_debug_print("vs1053b: set diff failed.\n");
141 (void)vs1053b_deinit(&gs_handle);
142
143 return 1;
144 }
145
146 /* set default play mpeg layer i and ii */
148 if (res != 0)
149 {
150 vs1053b_interface_debug_print("vs1053b: set mpeg layer i and ii failed.\n");
151 (void)vs1053b_deinit(&gs_handle);
152
153 return 1;
154 }
155
156 /* set default play cancel decoding current file */
158 if (res != 0)
159 {
160 vs1053b_interface_debug_print("vs1053b: set cancel decoding current file failed.\n");
161 (void)vs1053b_deinit(&gs_handle);
162
163 return 1;
164 }
165
166 /* set default play ear speaker low setting */
168 if (res != 0)
169 {
170 vs1053b_interface_debug_print("vs1053b: set ear speaker low setting failed.\n");
171 (void)vs1053b_deinit(&gs_handle);
172
173 return 1;
174 }
175
176 /* disable allow sdi test */
178 if (res != 0)
179 {
180 vs1053b_interface_debug_print("vs1053b: set allow sdi test failed.\n");
181 (void)vs1053b_deinit(&gs_handle);
182
183 return 1;
184 }
185
186 /* disable stream mode */
188 if (res != 0)
189 {
190 vs1053b_interface_debug_print("vs1053b: set stream mode failed.\n");
191 (void)vs1053b_deinit(&gs_handle);
192
193 return 1;
194 }
195
196 /* set default play ear speaker high setting */
198 if (res != 0)
199 {
200 vs1053b_interface_debug_print("vs1053b: set ear speaker high setting failed.\n");
201 (void)vs1053b_deinit(&gs_handle);
202
203 return 1;
204 }
205
206 /* set default play dclk edge */
208 if (res != 0)
209 {
210 vs1053b_interface_debug_print("vs1053b: set dclk edge failed.\n");
211 (void)vs1053b_deinit(&gs_handle);
212
213 return 1;
214 }
215
216 /* set default play sdi bit order */
218 if (res != 0)
219 {
220 vs1053b_interface_debug_print("vs1053b: set sdi bit order failed.\n");
221 (void)vs1053b_deinit(&gs_handle);
222
223 return 1;
224 }
225
226 /* set default play share spi chip select */
228 if (res != 0)
229 {
230 vs1053b_interface_debug_print("vs1053b: set share spi chip select failed.\n");
231 (void)vs1053b_deinit(&gs_handle);
232
233 return 1;
234 }
235
236 /* enable native spi modes */
238 if (res != 0)
239 {
240 vs1053b_interface_debug_print("vs1053b: set native spi modes failed.\n");
241 (void)vs1053b_deinit(&gs_handle);
242
243 return 1;
244 }
245
246 /* disable pcm adpcm recording active */
248 if (res != 0)
249 {
250 vs1053b_interface_debug_print("vs1053b: set pcm adpcm recording active failed.\n");
251 (void)vs1053b_deinit(&gs_handle);
252
253 return 1;
254 }
255
256 /* set default play selector */
258 if (res != 0)
259 {
260 vs1053b_interface_debug_print("vs1053b: set selector failed.\n");
261 (void)vs1053b_deinit(&gs_handle);
262
263 return 1;
264 }
265
266 /* set default play clock range */
268 if (res != 0)
269 {
270 vs1053b_interface_debug_print("vs1053b: set clock range failed.\n");
271 (void)vs1053b_deinit(&gs_handle);
272
273 return 1;
274 }
275
276 /* set default play do not jump */
278 if (res != 0)
279 {
280 vs1053b_interface_debug_print("vs1053b: set do not jump failed.\n");
281 (void)vs1053b_deinit(&gs_handle);
282
283 return 1;
284 }
285
286 /* set default play swing */
288 if (res != 0)
289 {
290 vs1053b_interface_debug_print("vs1053b: swing convert to register failed.\n");
291 (void)vs1053b_deinit(&gs_handle);
292
293 return 1;
294 }
295
296 /* set swing */
297 res = vs1053b_set_swing(&gs_handle, reg);
298 if (res != 0)
299 {
300 vs1053b_interface_debug_print("vs1053b: set swing failed.\n");
301 (void)vs1053b_deinit(&gs_handle);
302
303 return 1;
304 }
305
306 /* set default play overload detection */
308 if (res != 0)
309 {
310 vs1053b_interface_debug_print("vs1053b: set overload detection failed.\n");
311 (void)vs1053b_deinit(&gs_handle);
312
313 return 1;
314 }
315
316 /* set default play analog driver power down */
318 if (res != 0)
319 {
320 vs1053b_interface_debug_print("vs1053b: set analog driver power down failed.\n");
321 (void)vs1053b_deinit(&gs_handle);
322
323 return 1;
324 }
325
326 /* set default play analog internal power down */
328 if (res != 0)
329 {
330 vs1053b_interface_debug_print("vs1053b: set analog internal power down failed.\n");
331 (void)vs1053b_deinit(&gs_handle);
332
333 return 1;
334 }
335
336 /* set default play ad clock */
338 if (res != 0)
339 {
340 vs1053b_interface_debug_print("vs1053b: set ad clock failed.\n");
341 (void)vs1053b_deinit(&gs_handle);
342
343 return 1;
344 }
345
346 /* set default play reference voltage */
348 if (res != 0)
349 {
350 vs1053b_interface_debug_print("vs1053b: set reference voltage failed.\n");
351 (void)vs1053b_deinit(&gs_handle);
352
353 return 1;
354 }
355
356 /* set default play treble control */
358 if (res != 0)
359 {
360 vs1053b_interface_debug_print("vs1053b: treble control convert to register failed.\n");
361 (void)vs1053b_deinit(&gs_handle);
362
363 return 1;
364 }
365
366 /* set treble control */
367 res = vs1053b_set_treble_control(&gs_handle, reg);
368 if (res != 0)
369 {
370 vs1053b_interface_debug_print("vs1053b: set treble control failed.\n");
371 (void)vs1053b_deinit(&gs_handle);
372
373 return 1;
374 }
375
376 /* set default play lower limit frequency in 1000 hz */
378 if (res != 0)
379 {
380 vs1053b_interface_debug_print("vs1053b: lower limit frequency in 1000 hz convert to register failed.\n");
381 (void)vs1053b_deinit(&gs_handle);
382
383 return 1;
384 }
385
386 /* set lower limit frequency in 1000 hz */
388 if (res != 0)
389 {
390 vs1053b_interface_debug_print("vs1053b: set lower limit frequency in 1000 hz failed.\n");
391 (void)vs1053b_deinit(&gs_handle);
392
393 return 1;
394 }
395
396 /* set default play bass enhancement */
398 if (res != 0)
399 {
400 vs1053b_interface_debug_print("vs1053b: set bass enhancement failed.\n");
401 (void)vs1053b_deinit(&gs_handle);
402
403 return 1;
404 }
405
406 /* set default play lower limit frequency in 10 hz */
408 if (res != 0)
409 {
410 vs1053b_interface_debug_print("vs1053b: lower limit frequency in 10 hz convert to register failed.\n");
411 (void)vs1053b_deinit(&gs_handle);
412
413 return 1;
414 }
415
416 /* set lower limit frequency in 10 hz */
417 res = vs1053b_set_lower_limit_frequency_in_10_hz(&gs_handle, reg);
418 if (res != 0)
419 {
420 vs1053b_interface_debug_print("vs1053b: set lower limit frequency in 10 hz failed.\n");
421 (void)vs1053b_deinit(&gs_handle);
422
423 return 1;
424 }
425
426 /* init 0x0000 */
427 res = vs1053b_set_decode_time(&gs_handle, 0x0000);
428 if (res != 0)
429 {
430 vs1053b_interface_debug_print("vs1053b: set decode time failed.\n");
431 (void)vs1053b_deinit(&gs_handle);
432
433 return 1;
434 }
435
436 /* set default play vol */
438 if (res != 0)
439 {
440 vs1053b_interface_debug_print("vs1053b: vol convert to register failed.\n");
441 (void)vs1053b_deinit(&gs_handle);
442
443 return 1;
444 }
445
446 /* set vol */
447 res = vs1053b_set_vol(&gs_handle, reg, reg);
448 if (res != 0)
449 {
450 vs1053b_interface_debug_print("vs1053b: set vol failed.\n");
451 (void)vs1053b_deinit(&gs_handle);
452
453 return 1;
454 }
455
456 /* set default play speed */
458 if (res != 0)
459 {
460 vs1053b_interface_debug_print("vs1053b: set play speed failed.\n");
461 (void)vs1053b_deinit(&gs_handle);
462
463 return 1;
464 }
465 #if (VS1053B_BASIC_DEFAULT_PLAY_IIS_OUTPUT == VS1053B_BOOL_TRUE)
466 /* set default gpio direction */
467 res = vs1053b_set_gpio_direction(&gs_handle, 0x00F0);
468 if (res != 0)
469 {
470 vs1053b_interface_debug_print("vs1053b: set gpio direction failed.\n");
471 (void)vs1053b_deinit(&gs_handle);
472
473 return 1;
474 }
475
476 /* set default iis mclk */
478 if (res != 0)
479 {
480 vs1053b_interface_debug_print("vs1053b: set iis mclk failed.\n");
481 (void)vs1053b_deinit(&gs_handle);
482
483 return 1;
484 }
485
486 /* set default iis rate */
488 if (res != 0)
489 {
490 vs1053b_interface_debug_print("vs1053b: set iis rate failed.\n");
491 (void)vs1053b_deinit(&gs_handle);
492
493 return 1;
494 }
495
496 /* set default iis */
498 if (res != 0)
499 {
500 vs1053b_interface_debug_print("vs1053b: set iis failed.\n");
501 (void)vs1053b_deinit(&gs_handle);
502
503 return 1;
504 }
505 #endif
506 }
507 else
508 {
509 if (format == VS1053B_RECORD_FORMAT_WAV)
510 {
511 /* set default record clock multiplier */
513 if (res != 0)
514 {
515 vs1053b_interface_debug_print("vs1053b: set clock multiplier failed.\n");
516 (void)vs1053b_deinit(&gs_handle);
517
518 return 1;
519 }
520
521 /* set default record allowed multiplier addition */
523 if (res != 0)
524 {
525 vs1053b_interface_debug_print("vs1053b: set allowed multiplier addition failed.\n");
526 (void)vs1053b_deinit(&gs_handle);
527
528 return 1;
529 }
530
531 /* set default record clock frequency */
533 if (res != 0)
534 {
535 vs1053b_interface_debug_print("vs1053b: clock frequency convert to register failed.\n");
536 (void)vs1053b_deinit(&gs_handle);
537
538 return 1;
539 }
540
541 /* set clock frequency */
542 res = vs1053b_set_clock_frequency(&gs_handle, clk);
543 if (res != 0)
544 {
545 vs1053b_interface_debug_print("vs1053b: set clock frequency failed.\n");
546 (void)vs1053b_deinit(&gs_handle);
547
548 return 1;
549 }
550
551 /* set default record do not jump */
553 if (res != 0)
554 {
555 vs1053b_interface_debug_print("vs1053b: set do not jump failed.\n");
556 (void)vs1053b_deinit(&gs_handle);
557
558 return 1;
559 }
560
561 /* set default record swing */
563 if (res != 0)
564 {
565 vs1053b_interface_debug_print("vs1053b: swing convert to register failed.\n");
566 (void)vs1053b_deinit(&gs_handle);
567
568 return 1;
569 }
570
571 /* set swing */
572 res = vs1053b_set_swing(&gs_handle, reg);
573 if (res != 0)
574 {
575 vs1053b_interface_debug_print("vs1053b: set swing failed.\n");
576 (void)vs1053b_deinit(&gs_handle);
577
578 return 1;
579 }
580
581 /* set default record overload detection */
583 if (res != 0)
584 {
585 vs1053b_interface_debug_print("vs1053b: set overload detection failed.\n");
586 (void)vs1053b_deinit(&gs_handle);
587
588 return 1;
589 }
590
591 /* set default record analog driver power down */
593 if (res != 0)
594 {
595 vs1053b_interface_debug_print("vs1053b: set analog driver power down failed.\n");
596 (void)vs1053b_deinit(&gs_handle);
597
598 return 1;
599 }
600
601 /* set default record analog internal power down */
603 if (res != 0)
604 {
605 vs1053b_interface_debug_print("vs1053b: set analog internal power down failed.\n");
606 (void)vs1053b_deinit(&gs_handle);
607
608 return 1;
609 }
610
611 /* set default record ad clock */
613 if (res != 0)
614 {
615 vs1053b_interface_debug_print("vs1053b: set ad clock failed.\n");
616 (void)vs1053b_deinit(&gs_handle);
617
618 return 1;
619 }
620
621 /* set default record reference voltage */
623 if (res != 0)
624 {
625 vs1053b_interface_debug_print("vs1053b: set reference voltage failed.\n");
626 (void)vs1053b_deinit(&gs_handle);
627
628 return 1;
629 }
630
631 /* set default record treble control */
633 if (res != 0)
634 {
635 vs1053b_interface_debug_print("vs1053b: treble control convert to register failed.\n");
636 (void)vs1053b_deinit(&gs_handle);
637
638 return 1;
639 }
640
641 /* set treble control */
642 res = vs1053b_set_treble_control(&gs_handle, reg);
643 if (res != 0)
644 {
645 vs1053b_interface_debug_print("vs1053b: set treble control failed.\n");
646 (void)vs1053b_deinit(&gs_handle);
647
648 return 1;
649 }
650
651 /* set default record lower limit frequency in 1000 hz convert to register */
653 if (res != 0)
654 {
655 vs1053b_interface_debug_print("vs1053b: lower limit frequency in 1000 hz convert to register failed.\n");
656 (void)vs1053b_deinit(&gs_handle);
657
658 return 1;
659 }
660
661 /* set lower limit frequency in 1000 hz */
663 if (res != 0)
664 {
665 vs1053b_interface_debug_print("vs1053b: set lower limit frequency in 1000 hz failed.\n");
666 (void)vs1053b_deinit(&gs_handle);
667
668 return 1;
669 }
670
671 /* set default record bass enhancement */
673 if (res != 0)
674 {
675 vs1053b_interface_debug_print("vs1053b: set bass enhancement failed.\n");
676 (void)vs1053b_deinit(&gs_handle);
677
678 return 1;
679 }
680
681 /* set default record lower limit frequency in 10 hz convert to register */
683 if (res != 0)
684 {
685 vs1053b_interface_debug_print("vs1053b: lower limit frequency in 10 hz convert to register failed.\n");
686 (void)vs1053b_deinit(&gs_handle);
687
688 return 1;
689 }
690
691 /* set lower limit frequency in 10 hz */
692 res = vs1053b_set_lower_limit_frequency_in_10_hz(&gs_handle, reg);
693 if (res != 0)
694 {
695 vs1053b_interface_debug_print("vs1053b: set lower limit frequency in 10 hz failed.\n");
696 (void)vs1053b_deinit(&gs_handle);
697
698 return 1;
699 }
700
701 /* init 0x0000 */
702 res = vs1053b_set_decode_time(&gs_handle, 0x0000);
703 if (res != 0)
704 {
705 vs1053b_interface_debug_print("vs1053b: set decode time failed.\n");
706 (void)vs1053b_deinit(&gs_handle);
707
708 return 1;
709 }
710
711 /* set default record vol */
713 if (res != 0)
714 {
715 vs1053b_interface_debug_print("vs1053b: vol convert to register failed.\n");
716 (void)vs1053b_deinit(&gs_handle);
717
718 return 1;
719 }
720
721 /* set vol */
722 res = vs1053b_set_vol(&gs_handle, reg, reg);
723 if (res != 0)
724 {
725 vs1053b_interface_debug_print("vs1053b: set vol failed.\n");
726 (void)vs1053b_deinit(&gs_handle);
727
728 return 1;
729 }
730
731 /* set default record sample rate */
733 buf[0] = (config >> 8) & 0xFF;
734 buf[1] = (config >> 0) & 0xFF;
735 res = vs1053b_write_application(&gs_handle, VS1053B_APPLICATION_0, buf, 2);
736 if (res != 0)
737 {
738 vs1053b_interface_debug_print("vs1053b: write application failed.\n");
739 (void)vs1053b_deinit(&gs_handle);
740
741 return 1;
742 }
743
744 /* set default record times */
746 buf[0] = (config >> 8) & 0xFF;
747 buf[1] = (config >> 0) & 0xFF;
748 res = vs1053b_write_application(&gs_handle, VS1053B_APPLICATION_1, buf, 2);
749 if (res != 0)
750 {
751 vs1053b_interface_debug_print("vs1053b: write application failed.\n");
752 (void)vs1053b_deinit(&gs_handle);
753
754 return 1;
755 }
756
757 /* set default record gain */
759 buf[0] = (config >> 8) & 0xFF;
760 buf[1] = (config >> 0) & 0xFF;
761 res = vs1053b_write_application(&gs_handle, VS1053B_APPLICATION_2, buf, 2);
762 if (res != 0)
763 {
764 vs1053b_interface_debug_print("vs1053b: write application failed.\n");
765 (void)vs1053b_deinit(&gs_handle);
766
767 return 1;
768 }
769
770 /* set default record channel */
772 buf[0] = (config >> 8) & 0xFF;
773 buf[1] = (config >> 0) & 0xFF;
774 res = vs1053b_write_application(&gs_handle, VS1053B_APPLICATION_3, buf, 2);
775 if (res != 0)
776 {
777 vs1053b_interface_debug_print("vs1053b: write application failed.\n");
778 (void)vs1053b_deinit(&gs_handle);
779
780 return 1;
781 }
782
783 /* set default record diff */
785 if (res != 0)
786 {
787 vs1053b_interface_debug_print("vs1053b: set diff failed.\n");
788 (void)vs1053b_deinit(&gs_handle);
789
790 return 1;
791 }
792
793 /* set default record mpeg layer i and ii */
795 if (res != 0)
796 {
797 vs1053b_interface_debug_print("vs1053b: set mpeg layer i and ii failed.\n");
798 (void)vs1053b_deinit(&gs_handle);
799
800 return 1;
801 }
802
803 /* set default record cancel decoding current file */
805 if (res != 0)
806 {
807 vs1053b_interface_debug_print("vs1053b: set cancel decoding current file failed.\n");
808 (void)vs1053b_deinit(&gs_handle);
809
810 return 1;
811 }
812
813 /* set default record ear speaker low setting */
815 if (res != 0)
816 {
817 vs1053b_interface_debug_print("vs1053b: set ear speaker low setting failed.\n");
818 (void)vs1053b_deinit(&gs_handle);
819
820 return 1;
821 }
822
823 /* disable allow sdi test */
825 if (res != 0)
826 {
827 vs1053b_interface_debug_print("vs1053b: set allow sdi test failed.\n");
828 (void)vs1053b_deinit(&gs_handle);
829
830 return 1;
831 }
832
833 /* disable stream mode */
835 if (res != 0)
836 {
837 vs1053b_interface_debug_print("vs1053b: set stream mode failed.\n");
838 (void)vs1053b_deinit(&gs_handle);
839
840 return 1;
841 }
842
843 /* set default record ear speaker high setting */
845 if (res != 0)
846 {
847 vs1053b_interface_debug_print("vs1053b: set ear speaker high setting failed.\n");
848 (void)vs1053b_deinit(&gs_handle);
849
850 return 1;
851 }
852
853 /* set default record dclk edge */
855 if (res != 0)
856 {
857 vs1053b_interface_debug_print("vs1053b: set dclk edge failed.\n");
858 (void)vs1053b_deinit(&gs_handle);
859
860 return 1;
861 }
862
863 /* set default record sdi bit order */
865 if (res != 0)
866 {
867 vs1053b_interface_debug_print("vs1053b: set sdi bit order failed.\n");
868 (void)vs1053b_deinit(&gs_handle);
869
870 return 1;
871 }
872
873 /* set default record share spi chip select */
875 if (res != 0)
876 {
877 vs1053b_interface_debug_print("vs1053b: set share spi chip select failed.\n");
878 (void)vs1053b_deinit(&gs_handle);
879
880 return 1;
881 }
882
883 /* enable native spi modes */
885 if (res != 0)
886 {
887 vs1053b_interface_debug_print("vs1053b: set native spi modes failed.\n");
888 (void)vs1053b_deinit(&gs_handle);
889
890 return 1;
891 }
892
893 /* set default record selector */
895 if (res != 0)
896 {
897 vs1053b_interface_debug_print("vs1053b: set selector failed.\n");
898 (void)vs1053b_deinit(&gs_handle);
899
900 return 1;
901 }
902
903 /* set default record clock range */
905 if (res != 0)
906 {
907 vs1053b_interface_debug_print("vs1053b: set clock range failed.\n");
908 (void)vs1053b_deinit(&gs_handle);
909
910 return 1;
911 }
912 }
913 else
914 {
915 /* set default record clock multiplier */
917 if (res != 0)
918 {
919 vs1053b_interface_debug_print("vs1053b: set clock multiplier failed.\n");
920 (void)vs1053b_deinit(&gs_handle);
921
922 return 1;
923 }
924
925 /* set default record allowed multiplier addition */
927 if (res != 0)
928 {
929 vs1053b_interface_debug_print("vs1053b: set allowed multiplier addition failed.\n");
930 (void)vs1053b_deinit(&gs_handle);
931
932 return 1;
933 }
934
935 /* set default record clock frequency */
937 if (res != 0)
938 {
939 vs1053b_interface_debug_print("vs1053b: clock frequency convert to register failed.\n");
940 (void)vs1053b_deinit(&gs_handle);
941
942 return 1;
943 }
944
945 /* set clock frequency */
946 res = vs1053b_set_clock_frequency(&gs_handle, clk);
947 if (res != 0)
948 {
949 vs1053b_interface_debug_print("vs1053b: set clock frequency failed.\n");
950 (void)vs1053b_deinit(&gs_handle);
951
952 return 1;
953 }
954
955 /* set default record do not jump */
957 if (res != 0)
958 {
959 vs1053b_interface_debug_print("vs1053b: set do not jump failed.\n");
960 (void)vs1053b_deinit(&gs_handle);
961
962 return 1;
963 }
964
965 /* set default record swing */
967 if (res != 0)
968 {
969 vs1053b_interface_debug_print("vs1053b: swing convert to register failed.\n");
970 (void)vs1053b_deinit(&gs_handle);
971
972 return 1;
973 }
974
975 /* set swing */
976 res = vs1053b_set_swing(&gs_handle, reg);
977 if (res != 0)
978 {
979 vs1053b_interface_debug_print("vs1053b: set swing failed.\n");
980 (void)vs1053b_deinit(&gs_handle);
981
982 return 1;
983 }
984
985 /* set default record overload detection */
987 if (res != 0)
988 {
989 vs1053b_interface_debug_print("vs1053b: set overload detection failed.\n");
990 (void)vs1053b_deinit(&gs_handle);
991
992 return 1;
993 }
994
995 /* set default record analog driver power down */
997 if (res != 0)
998 {
999 vs1053b_interface_debug_print("vs1053b: set analog driver power down failed.\n");
1000 (void)vs1053b_deinit(&gs_handle);
1001
1002 return 1;
1003 }
1004
1005 /* set default record analog internal power down */
1007 if (res != 0)
1008 {
1009 vs1053b_interface_debug_print("vs1053b: set analog internal power down failed.\n");
1010 (void)vs1053b_deinit(&gs_handle);
1011
1012 return 1;
1013 }
1014
1015 /* set default record ad clock */
1017 if (res != 0)
1018 {
1019 vs1053b_interface_debug_print("vs1053b: set ad clock failed.\n");
1020 (void)vs1053b_deinit(&gs_handle);
1021
1022 return 1;
1023 }
1024
1025 /* set default record reference voltage */
1027 if (res != 0)
1028 {
1029 vs1053b_interface_debug_print("vs1053b: set reference voltage failed.\n");
1030 (void)vs1053b_deinit(&gs_handle);
1031
1032 return 1;
1033 }
1034
1035 /* set default record treble control */
1037 if (res != 0)
1038 {
1039 vs1053b_interface_debug_print("vs1053b: treble control convert to register failed.\n");
1040 (void)vs1053b_deinit(&gs_handle);
1041
1042 return 1;
1043 }
1044
1045 /* set treble control */
1046 res = vs1053b_set_treble_control(&gs_handle, reg);
1047 if (res != 0)
1048 {
1049 vs1053b_interface_debug_print("vs1053b: set treble control failed.\n");
1050 (void)vs1053b_deinit(&gs_handle);
1051
1052 return 1;
1053 }
1054
1055 /* set default record lower limit frequency in 1000 hz convert to register */
1057 if (res != 0)
1058 {
1059 vs1053b_interface_debug_print("vs1053b: lower limit frequency in 1000 hz convert to register failed.\n");
1060 (void)vs1053b_deinit(&gs_handle);
1061
1062 return 1;
1063 }
1064
1065 /* set lower limit frequency in 1000 hz */
1066 res = vs1053b_set_lower_limit_frequency_in_1000_hz(&gs_handle, reg);
1067 if (res != 0)
1068 {
1069 vs1053b_interface_debug_print("vs1053b: set lower limit frequency in 1000 hz failed.\n");
1070 (void)vs1053b_deinit(&gs_handle);
1071
1072 return 1;
1073 }
1074
1075 /* set default record bass enhancement */
1077 if (res != 0)
1078 {
1079 vs1053b_interface_debug_print("vs1053b: set bass enhancement failed.\n");
1080 (void)vs1053b_deinit(&gs_handle);
1081
1082 return 1;
1083 }
1084
1085 /* set default record lower limit frequency in 10 hz convert to register */
1087 if (res != 0)
1088 {
1089 vs1053b_interface_debug_print("vs1053b: lower limit frequency in 10 hz convert to register failed.\n");
1090 (void)vs1053b_deinit(&gs_handle);
1091
1092 return 1;
1093 }
1094
1095 /* set lower limit frequency in 10 hz */
1096 res = vs1053b_set_lower_limit_frequency_in_10_hz(&gs_handle, reg);
1097 if (res != 0)
1098 {
1099 vs1053b_interface_debug_print("vs1053b: set lower limit frequency in 10 hz failed.\n");
1100 (void)vs1053b_deinit(&gs_handle);
1101
1102 return 1;
1103 }
1104
1105 /* init 0x0000 */
1106 res = vs1053b_set_decode_time(&gs_handle, 0x0000);
1107 if (res != 0)
1108 {
1109 vs1053b_interface_debug_print("vs1053b: set decode time failed.\n");
1110 (void)vs1053b_deinit(&gs_handle);
1111
1112 return 1;
1113 }
1114
1115 /* set default record vol */
1117 if (res != 0)
1118 {
1119 vs1053b_interface_debug_print("vs1053b: vol convert to register failed.\n");
1120 (void)vs1053b_deinit(&gs_handle);
1121
1122 return 1;
1123 }
1124
1125 /* set vol */
1126 res = vs1053b_set_vol(&gs_handle, reg, reg);
1127 if (res != 0)
1128 {
1129 vs1053b_interface_debug_print("vs1053b: set vol failed.\n");
1130 (void)vs1053b_deinit(&gs_handle);
1131
1132 return 1;
1133 }
1134
1135 /* set default record sample rate */
1137 buf[0] = (config >> 8) & 0xFF;
1138 buf[1] = (config >> 0) & 0xFF;
1139 res = vs1053b_write_application(&gs_handle, VS1053B_APPLICATION_0, buf, 2);
1140 if (res != 0)
1141 {
1142 vs1053b_interface_debug_print("vs1053b: write application failed.\n");
1143 (void)vs1053b_deinit(&gs_handle);
1144
1145 return 1;
1146 }
1147
1148 /* set default record times */
1150 buf[0] = (config >> 8) & 0xFF;
1151 buf[1] = (config >> 0) & 0xFF;
1152 res = vs1053b_write_application(&gs_handle, VS1053B_APPLICATION_1, buf, 2);
1153 if (res != 0)
1154 {
1155 vs1053b_interface_debug_print("vs1053b: write application failed.\n");
1156 (void)vs1053b_deinit(&gs_handle);
1157
1158 return 1;
1159 }
1160
1161 /* set default record gain */
1163 buf[0] = (config >> 8) & 0xFF;
1164 buf[1] = (config >> 0) & 0xFF;
1165 res = vs1053b_write_application(&gs_handle, VS1053B_APPLICATION_2, buf, 2);
1166 if (res != 0)
1167 {
1168 vs1053b_interface_debug_print("vs1053b: write application failed.\n");
1169 (void)vs1053b_deinit(&gs_handle);
1170
1171 return 1;
1172 }
1173
1174 /* stop */
1176 buf[0] = (config >> 8) & 0xFF;
1177 buf[1] = (config >> 0) & 0xFF;
1178 res = vs1053b_write_application(&gs_handle, VS1053B_APPLICATION_3, buf, 2);
1179 if (res != 0)
1180 {
1181 vs1053b_interface_debug_print("vs1053b: write application failed.\n");
1182 (void)vs1053b_deinit(&gs_handle);
1183
1184 return 1;
1185 }
1186
1187 /* set default record diff */
1189 if (res != 0)
1190 {
1191 vs1053b_interface_debug_print("vs1053b: set diff failed.\n");
1192 (void)vs1053b_deinit(&gs_handle);
1193
1194 return 1;
1195 }
1196
1197 /* set default record mpeg layer i and ii */
1199 if (res != 0)
1200 {
1201 vs1053b_interface_debug_print("vs1053b: set mpeg layer i and ii failed.\n");
1202 (void)vs1053b_deinit(&gs_handle);
1203
1204 return 1;
1205 }
1206
1207 /* set default record cancel decoding current file */
1209 if (res != 0)
1210 {
1211 vs1053b_interface_debug_print("vs1053b: set cancel decoding current file failed.\n");
1212 (void)vs1053b_deinit(&gs_handle);
1213
1214 return 1;
1215 }
1216
1217 /* set default record ear speaker low setting */
1219 if (res != 0)
1220 {
1221 vs1053b_interface_debug_print("vs1053b: set ear speaker low setting failed.\n");
1222 (void)vs1053b_deinit(&gs_handle);
1223
1224 return 1;
1225 }
1226
1227 /* disable allow sdi test */
1229 if (res != 0)
1230 {
1231 vs1053b_interface_debug_print("vs1053b: set allow sdi test failed.\n");
1232 (void)vs1053b_deinit(&gs_handle);
1233
1234 return 1;
1235 }
1236
1237 /* disable stream mode */
1239 if (res != 0)
1240 {
1241 vs1053b_interface_debug_print("vs1053b: set stream mode failed.\n");
1242 (void)vs1053b_deinit(&gs_handle);
1243
1244 return 1;
1245 }
1246
1247 /* set default record ear speaker high setting */
1249 if (res != 0)
1250 {
1251 vs1053b_interface_debug_print("vs1053b: set ear speaker high setting failed.\n");
1252 (void)vs1053b_deinit(&gs_handle);
1253
1254 return 1;
1255 }
1256
1257 /* set default record dclk edge */
1259 if (res != 0)
1260 {
1261 vs1053b_interface_debug_print("vs1053b: set dclk edge failed.\n");
1262 (void)vs1053b_deinit(&gs_handle);
1263
1264 return 1;
1265 }
1266
1267 /* set default record sdi bit order */
1269 if (res != 0)
1270 {
1271 vs1053b_interface_debug_print("vs1053b: set sdi bit order failed.\n");
1272 (void)vs1053b_deinit(&gs_handle);
1273
1274 return 1;
1275 }
1276
1277 /* set default record share spi chip select */
1279 if (res != 0)
1280 {
1281 vs1053b_interface_debug_print("vs1053b: set share spi chip select failed.\n");
1282 (void)vs1053b_deinit(&gs_handle);
1283
1284 return 1;
1285 }
1286
1287 /* enable native spi modes */
1289 if (res != 0)
1290 {
1291 vs1053b_interface_debug_print("vs1053b: set native spi modes failed.\n");
1292 (void)vs1053b_deinit(&gs_handle);
1293
1294 return 1;
1295 }
1296
1297 /* set default record selector */
1299 if (res != 0)
1300 {
1301 vs1053b_interface_debug_print("vs1053b: set selector failed.\n");
1302 (void)vs1053b_deinit(&gs_handle);
1303
1304 return 1;
1305 }
1306
1307 /* set default record clock range */
1309 if (res != 0)
1310 {
1311 vs1053b_interface_debug_print("vs1053b: set clock range failed.\n");
1312 (void)vs1053b_deinit(&gs_handle);
1313
1314 return 1;
1315 }
1316 }
1317 }
1318
1319 return 0;
1320}
1321
1330{
1331 /* deinit */
1332 if (vs1053b_deinit(&gs_handle) != 0)
1333 {
1334 return 1;
1335 }
1336
1337 return 0;
1338}
1339
1348{
1349 /* pause */
1350 if (vs1053b_pause(&gs_handle) != 0)
1351 {
1352 return 1;
1353 }
1354
1355 return 0;
1356}
1357
1366{
1367 /* stop */
1368 if (vs1053b_stop(&gs_handle) != 0)
1369 {
1370 return 1;
1371 }
1372
1373 return 0;
1374}
1375
1384uint8_t vs1053b_basic_play(char *path)
1385{
1386 uint8_t res;
1387
1388 /* if flac format, load the flac patch */
1389 if (strstr(path, ".flac") != NULL)
1390 {
1391 const uint16_t *patch_addr;
1392 uint16_t l;
1393
1394 /* get flac patch */
1395 res = vs1053b_get_patch(&gs_handle, VS1053B_PATCH_FLAC, &patch_addr, &l);
1396 if (res != 0)
1397 {
1398 return 1;
1399 }
1400
1401 /* load flac patch */
1402 res = vs1053b_load_patch(&gs_handle, patch_addr, l);
1403 if (res != 0)
1404 {
1405 return 1;
1406 }
1407 }
1408
1409 /* play music */
1410 res = vs1053b_play(&gs_handle, path);
1411 if (res != 0)
1412 {
1413 return 1;
1414 }
1415
1416 return 0;
1417}
1418
1427uint8_t vs1053b_basic_record(char *path)
1428{
1429 uint8_t res;
1430
1431 /* if wav format, load the wav patch */
1432 if (strstr(path, ".wav") != NULL)
1433 {
1434 const uint16_t *patch_addr;
1435 uint16_t l;
1436
1437 /* enable pcm adpcm recording active */
1439 if (res != 0)
1440 {
1441 return 1;
1442 }
1443
1444 /* both soft reset and pcm adpcm recording active to start ima adpcm mode */
1445 res = vs1053b_set_soft_reset(&gs_handle, VS1053B_BOOL_TRUE);
1446 if (res != 0)
1447 {
1448 return 1;
1449 }
1450
1451 /* delay 5ms */
1453
1454 /* set record format wav */
1456 if (res != 0)
1457 {
1458 return 1;
1459 }
1460
1461 /* get wav patch */
1462 res = vs1053b_get_patch(&gs_handle, VS1053B_PATCH_WAV, &patch_addr, &l);
1463 if (res != 0)
1464 {
1465 return 1;
1466 }
1467
1468 /* load wav patch */
1469 res = vs1053b_load_patch(&gs_handle, patch_addr, l);
1470 if (res != 0)
1471 {
1472 return 1;
1473 }
1474
1475 /* record audio */
1477 if (res != 0)
1478 {
1479 return 1;
1480 }
1481 }
1482 else if (strstr(path, ".ogg") != NULL)
1483 {
1484 uint8_t buf[2];
1485 const uint16_t *patch_addr;
1486 uint16_t l;
1487 uint16_t addr;
1488 uint16_t value;
1489
1490 /* enable pcm adpcm recording active */
1492 if (res != 0)
1493 {
1494 return 1;
1495 }
1496
1497 /* both soft reset and pcm adpcm recording active to start ima adpcm mode */
1498 res = vs1053b_set_soft_reset(&gs_handle, VS1053B_BOOL_TRUE);
1499 if (res != 0)
1500 {
1501 return 1;
1502 }
1503
1504 /* delay 5ms */
1506
1507 /* set interrupt enable ram address */
1508 addr = 0xC01A;
1509 res = vs1053b_set_ram_address(&gs_handle, addr);
1510 if (res != 0)
1511 {
1512 vs1053b_interface_debug_print("vs1053b: set ram address failed.\n");
1513 (void)vs1053b_deinit(&gs_handle);
1514
1515 return 1;
1516 }
1517
1518 /* disable all interrupts except sci */
1519 value = 0x0002;
1520 buf[0] = (value >> 8) & 0xFF;
1521 buf[1] = (value >> 0) & 0xFF;
1522 res = vs1053b_write_ram(&gs_handle, buf, 2);
1523 if (res != 0)
1524 {
1525 vs1053b_interface_debug_print("vs1053b: write ram failed.\n");
1526 (void)vs1053b_deinit(&gs_handle);
1527
1528 return 1;
1529 }
1530
1531 /* set record format ogg */
1533 if (res != 0)
1534 {
1535 return 1;
1536 }
1537
1538 /* get ogg patch */
1539 res = vs1053b_get_patch(&gs_handle, VS1053B_BASIC_DEFAULT_RECORD_OGG_VENC, &patch_addr, &l);
1540 if (res != 0)
1541 {
1542 return 1;
1543 }
1544
1545 /* load ogg patch */
1546 res = vs1053b_load_patch(&gs_handle, patch_addr, l);
1547 if (res != 0)
1548 {
1549 return 1;
1550 }
1551
1552 /* record audio */
1554 if (res != 0)
1555 {
1556 return 1;
1557 }
1558 }
1559 else
1560 {
1561 vs1053b_interface_debug_print("vs1053b: record only supports wav and ogg format.\n");
1562
1563 return 1;
1564 }
1565
1566
1567 return 0;
1568}
1569
1578{
1579 /* process */
1580 if (vs1053b_process(&gs_handle) != 0)
1581 {
1582 return 1;
1583 }
1584
1585 return 0;
1586}
1587
1597{
1598 uint8_t res;
1599
1600 /* set callback period */
1601 res = vs1053b_set_period_callback(&gs_handle, second, 0, VS1053B_BOOL_TRUE);
1602 if (res != 0)
1603 {
1604 return 1;
1605 }
1606
1607 return 0;
1608}
1609
1618uint8_t vs1053b_basic_set_vol(float vol)
1619{
1620 uint8_t res;
1621 uint8_t reg;
1622
1623 /* convert vol */
1624 res = vs1053b_vol_convert_to_register(&gs_handle, vol, &reg);
1625 if (res != 0)
1626 {
1627 return 1;
1628 }
1629
1630 /* set vol */
1631 res = vs1053b_set_vol(&gs_handle, reg, reg);
1632 if (res != 0)
1633 {
1634 return 1;
1635 }
1636
1637 return 0;
1638}
1639
1648uint8_t vs1053b_basic_get_decode_time(uint16_t *decode_time)
1649{
1650 uint8_t res;
1651
1652 /* get decode time */
1653 res = vs1053b_get_decode_time(&gs_handle, decode_time);
1654 if (res != 0)
1655 {
1656 return 1;
1657 }
1658
1659 return 0;
1660}
1661
1670uint8_t vs1053b_basic_get_bytes_rate(uint16_t *rate)
1671{
1672 uint8_t res;
1673
1674 /* get byte rate */
1675 res = vs1053b_get_byte_rate(&gs_handle, rate);
1676 if (res != 0)
1677 {
1678 return 1;
1679 }
1680
1681 return 0;
1682}
1683
1693uint8_t vs1053b_basic_get_sample_rate(uint16_t *rate, vs1053b_channel_t *channel)
1694{
1695 uint8_t res;
1696
1697 /* get sample rate */
1698 res = vs1053b_get_sample_rate(&gs_handle, rate, channel);
1699 if (res != 0)
1700 {
1701 return 1;
1702 }
1703
1704 return 0;
1705}
1706
1716{
1717 uint8_t res;
1718 uint16_t dat0;
1719 uint16_t dat1;
1720
1721 /* get hdata */
1722 res = vs1053b_get_hdata(&gs_handle, &dat0, &dat1);
1723 if (res == 0)
1724 {
1725 /* parse info */
1726 if (vs1053b_parse_info(&gs_handle, dat0, dat1, info) != 0)
1727 {
1728 return 1;
1729 }
1730
1731 return 0;
1732 }
1733
1734 return 1;
1735}
driver vs1053b basic header file
uint8_t vs1053b_set_iis_mclk(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable iis mclk
uint8_t vs1053b_parse_info(vs1053b_handle_t *handle, uint16_t dat0, uint16_t dat1, vs1053b_audio_info_t *info)
parse info
uint8_t vs1053b_set_swing(vs1053b_handle_t *handle, uint8_t swing)
set swing
uint8_t vs1053b_set_treble_control(vs1053b_handle_t *handle, uint8_t db)
set treble control
uint8_t vs1053b_set_ad_clock(vs1053b_handle_t *handle, vs1053b_ad_clock_t ad_clock)
set ad clock
uint8_t vs1053b_set_clock_multiplier(vs1053b_handle_t *handle, vs1053b_clock_multiplier_t multiplier)
set clock multiplier
uint8_t vs1053b_set_reference_voltage(vs1053b_handle_t *handle, vs1053b_reference_voltage_t voltage)
set reference voltage
uint8_t vs1053b_set_period_callback(vs1053b_handle_t *handle, uint32_t second, uint32_t microsecond, vs1053b_bool_t enable)
set period callback
uint8_t vs1053b_set_analog_internal_power_down(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable analog internal power down
uint8_t vs1053b_swing_convert_to_register(vs1053b_handle_t *handle, float db, uint8_t *reg)
convert the swing to the register raw data
uint8_t vs1053b_set_lower_limit_frequency_in_10_hz(vs1053b_handle_t *handle, uint8_t step)
set lower limit frequency in 10 hz
uint8_t vs1053b_stop(vs1053b_handle_t *handle)
stop audio
uint8_t vs1053b_set_vol(vs1053b_handle_t *handle, uint8_t left, uint8_t right)
set vol
uint8_t vs1053b_lower_limit_frequency_in_1000_hz_convert_to_register(vs1053b_handle_t *handle, uint32_t hz, uint8_t *reg)
convert the lower limit frequency in 1000 hz to the register raw data
uint8_t vs1053b_process(vs1053b_handle_t *handle)
audio process
uint8_t vs1053b_set_selector(vs1053b_handle_t *handle, vs1053b_selector_t selector)
set selector
uint8_t vs1053b_clock_frequency_convert_to_register(vs1053b_handle_t *handle, float hz, uint16_t *reg)
convert the clock frequency to the register raw data
uint8_t vs1053b_set_do_not_jump(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable do not jump
uint8_t vs1053b_set_decode_time(vs1053b_handle_t *handle, uint16_t decode_time)
set decode time
uint8_t vs1053b_set_gpio_direction(vs1053b_handle_t *handle, uint16_t mask)
set gpio direction
uint8_t vs1053b_set_native_spi_modes(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable native spi modes
uint8_t vs1053b_init(vs1053b_handle_t *handle)
initialize the chip
uint8_t vs1053b_set_cancel_decoding_current_file(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable cancel decoding current file
uint8_t vs1053b_set_stream_mode(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable stream mode
uint8_t vs1053b_get_decode_time(vs1053b_handle_t *handle, uint16_t *decode_time)
get decode time
uint8_t vs1053b_set_iis_rate(vs1053b_handle_t *handle, vs1053b_iis_rate_t iis_rate)
set iis rate
uint8_t vs1053b_write_application(vs1053b_handle_t *handle, vs1053b_application_t num, uint8_t *buf, uint16_t len)
write application
uint8_t vs1053b_set_dclk_edge(vs1053b_handle_t *handle, vs1053b_dclk_edge_t edge)
set dclk edge
uint8_t vs1053b_set_analog_driver_power_down(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable analog driver power down
uint8_t vs1053b_set_play_speed(vs1053b_handle_t *handle, vs1053b_play_speed_t speed)
set play speed
uint8_t vs1053b_set_pcm_adpcm_recording_active(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable pcm adpcm recording active
uint8_t vs1053b_set_clock_frequency(vs1053b_handle_t *handle, uint16_t clk)
set clock frequency
uint8_t vs1053b_set_ear_speaker_low_setting(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable ear speaker low setting
uint8_t vs1053b_set_record_format(vs1053b_handle_t *handle, vs1053b_record_format_t format)
set record format
uint8_t vs1053b_set_clock_range(vs1053b_handle_t *handle, vs1053b_clock_range_t range)
set clock range
uint8_t vs1053b_get_patch(vs1053b_handle_t *handle, vs1053b_patch_t type, const uint16_t **patch_addr, uint16_t *len)
get patch info
uint8_t vs1053b_set_diff(vs1053b_handle_t *handle, vs1053b_diff_t diff)
set the audio differential
uint8_t vs1053b_set_ear_speaker_high_setting(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable ear speaker high setting
uint8_t vs1053b_set_share_spi_chip_select(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable share spi chip select
uint8_t vs1053b_vol_convert_to_register(vs1053b_handle_t *handle, float db, uint8_t *reg)
convert vol to the register raw data
uint8_t vs1053b_set_soft_reset(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable soft reset
uint8_t vs1053b_set_ram_address(vs1053b_handle_t *handle, uint16_t addr)
set ram address
vs1053b_record_format_t
vs1053b record format enumeration definition
struct vs1053b_handle_s vs1053b_handle_t
vs1053b handle structure definition
uint8_t vs1053b_set_allow_sdi_test(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable allow sdi test
uint8_t vs1053b_set_overload_detection(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable overload detection
uint8_t vs1053b_treble_control_convert_to_register(vs1053b_handle_t *handle, float db, uint8_t *reg)
convert the treble control to the register raw data
struct vs1053b_audio_info_s vs1053b_audio_info_t
vs1053b audio info structure definition
uint8_t vs1053b_deinit(vs1053b_handle_t *handle)
deinit the chip
uint8_t vs1053b_set_iis(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable iis
uint8_t vs1053b_set_allowed_multiplier_addition(vs1053b_handle_t *handle, vs1053b_allowed_multiplier_addition_t addition)
set allowed multiplier addition
uint8_t vs1053b_set_sdi_bit_order(vs1053b_handle_t *handle, vs1053b_bit_order_t order)
set sdi bit order
uint8_t vs1053b_get_byte_rate(vs1053b_handle_t *handle, uint16_t *rate)
get byte rate
uint8_t vs1053b_get_hdata(vs1053b_handle_t *handle, uint16_t *dat0, uint16_t *dat1)
get hdata
uint8_t vs1053b_record(vs1053b_handle_t *handle, char *path, uint32_t sample_rate)
record audio
uint8_t vs1053b_play(vs1053b_handle_t *handle, char *path)
play audio
uint8_t vs1053b_load_patch(vs1053b_handle_t *handle, const uint16_t *patch, uint16_t len)
load patch
uint8_t vs1053b_pause(vs1053b_handle_t *handle)
pause audio
uint8_t vs1053b_write_ram(vs1053b_handle_t *handle, uint8_t *buf, uint16_t len)
write ram
vs1053b_channel_t
vs1053b channel enumeration definition
uint8_t vs1053b_set_bass_enhancement(vs1053b_handle_t *handle, uint8_t db)
set bass enhancement
uint8_t vs1053b_set_lower_limit_frequency_in_1000_hz(vs1053b_handle_t *handle, uint8_t step)
set lower limit frequency in 1000 hz
uint8_t vs1053b_get_sample_rate(vs1053b_handle_t *handle, uint16_t *rate, vs1053b_channel_t *channel)
get sample rate
uint8_t vs1053b_set_mpeg_layer_i_and_ii(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable mpeg layer i and ii
uint8_t vs1053b_lower_limit_frequency_in_10_hz_convert_to_register(vs1053b_handle_t *handle, uint32_t hz, uint8_t *reg)
convert the lower limit frequency in 10 hz to the register raw data
@ VS1053B_BOOL_FALSE
@ VS1053B_BOOL_TRUE
@ VS1053B_PATCH_FLAC
@ VS1053B_PATCH_WAV
@ VS1053B_APPLICATION_2
@ VS1053B_APPLICATION_0
@ VS1053B_APPLICATION_3
@ VS1053B_APPLICATION_1
@ VS1053B_RECORD_FORMAT_OGG
@ VS1053B_RECORD_FORMAT_WAV
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_SHARE_SPI_CHIP_SELECT
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_CLOCK_RANGE
#define VS1053B_BASIC_DEFAULT_PLAY_EAR_SPEAKER_LOW_SETTING
#define VS1053B_BASIC_DEFAULT_PLAY_SPEED
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_SWING
#define VS1053B_BASIC_DEFAULT_PLAY_ANALOG_DRIVER_POWER_DOWN
uint8_t vs1053b_basic_record(char *path)
basic example record
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_BIT_ORDER
#define VS1053B_BASIC_DEFAULT_PLAY_IIS_RATE
#define VS1053B_BASIC_DEFAULT_PLAY_MPEG_LAYER_I_AND_II
uint8_t vs1053b_basic_deinit(void)
basic example deinit
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_REFERENCE_VOLTAGE
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_LOWER_LIMIT_FREQUENCY_IN_10_HZ
#define VS1053B_BASIC_DEFAULT_PLAY_OVERLOAD_DETECTION
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_DCLK_EDGE
#define VS1053B_BASIC_DEFAULT_PLAY_SHARE_SPI_CHIP_SELECT
uint8_t vs1053b_basic_get_decode_time(uint16_t *decode_time)
basic example get decode time
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_EAR_SPEAKER_LOW_SETTING
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_VENC
#define VS1053B_BASIC_DEFAULT_PLAY_AD_CLOCK
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_LOWER_LIMIT_FREQUENCY_IN_10_HZ
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_CLOCK_MULTIPLIER
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_VOL
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_TIMES
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_CLOCK_FREQUENCY
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_BIT_ORDER
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_DCLK_EDGE
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_SHARE_SPI_CHIP_SELECT
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_VOL
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_EAR_SPEAKER_HIGH_SETTING
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_CANCEL_DECODING_CURRENT_FILE
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_AD_CLOCK
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_CHANNEL
uint8_t vs1053b_basic_get_info(vs1053b_audio_info_t *info)
basic example get info
#define VS1053B_BASIC_DEFAULT_PLAY_BIT_ORDER
#define VS1053B_BASIC_DEFAULT_PLAY_IIS_MCLK_OUTPUT
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_AD_CLOCK
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_OVERLOAD_DETECTION
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_LOWER_LIMIT_FREQUENCY_IN_1000_HZ
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_GAIN
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_BASS_ENHANCEMENT
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_MPEG_LAYER_I_AND_II
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_SWING
#define VS1053B_BASIC_DEFAULT_PLAY_LOWER_LIMIT_FREQUENCY_IN_10_HZ
#define VS1053B_BASIC_DEFAULT_PLAY_VOL
uint8_t vs1053b_basic_set_callback_period(uint32_t second)
basic example set callback period
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_DO_NOT_JUMP
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_CLOCK_MULTIPLIER
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_ANALOG_INTERNAL_POWER_DOWN
uint8_t vs1053b_basic_service(void)
basic example service
#define VS1053B_BASIC_DEFAULT_PLAY_TREBLE_CONTROL
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_ALLOWED_MULTIPLIER_ADDITION
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_ANALOG_INTERNAL_POWER_DOWN
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_SELECTOR
uint8_t vs1053b_basic_set_vol(float vol)
basic example set vol
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_EAR_SPEAKER_LOW_SETTING
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_MPEG_LAYER_I_AND_II
uint8_t vs1053b_basic_pause(void)
basic example pause
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_BASS_ENHANCEMENT
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_TREBLE_CONTROL
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_DO_NOT_JUMP
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_TIMES
#define VS1053B_BASIC_DEFAULT_PLAY_CANCEL_DECODING_CURRENT_FILE
#define VS1053B_BASIC_DEFAULT_PLAY_ANALOG_INTERNAL_POWER_DOWN
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_CANCEL_DECODING_CURRENT_FILE
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_DIFF
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_REFERENCE_VOLTAGE
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_GAIN
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_SAMPLE
#define VS1053B_BASIC_DEFAULT_PLAY_CLOCK_FREQUENCY
#define VS1053B_BASIC_DEFAULT_PLAY_REFERENCE_VOLTAGE
#define VS1053B_BASIC_DEFAULT_PLAY_LOWER_LIMIT_FREQUENCY_IN_1000_HZ
#define VS1053B_BASIC_DEFAULT_PLAY_CLOCK_RANGE
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_CLOCK_FREQUENCY
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_OVERLOAD_DETECTION
#define VS1053B_BASIC_DEFAULT_PLAY_SELECTOR
#define VS1053B_BASIC_DEFAULT_PLAY_DIFF
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_LOWER_LIMIT_FREQUENCY_IN_1000_HZ
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_ANALOG_DRIVER_POWER_DOWN
uint8_t vs1053b_basic_init(vs1053b_mode_t mode, vs1053b_record_format_t format, void(*callback)(uint8_t type, uint32_t cur_pos))
basic example init
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_ANALOG_DRIVER_POWER_DOWN
#define VS1053B_BASIC_DEFAULT_PLAY_DO_NOT_JUMP
#define VS1053B_BASIC_DEFAULT_PLAY_ALLOWED_MULTIPLIER_ADDITION
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_SELECTOR
vs1053b_mode_t
vs1053b mode enumeration definition
#define VS1053B_BASIC_DEFAULT_PLAY_BASS_ENHANCEMENT
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_EAR_SPEAKER_HIGH_SETTING
#define VS1053B_BASIC_DEFAULT_PLAY_DCLK_EDGE
#define VS1053B_BASIC_DEFAULT_PLAY_EAR_SPEAKER_HIGH_SETTING
uint8_t vs1053b_basic_stop(void)
basic example stop
uint8_t vs1053b_basic_get_sample_rate(uint16_t *rate, vs1053b_channel_t *channel)
basic example get sample rate
uint8_t vs1053b_basic_get_bytes_rate(uint16_t *rate)
basic example get bytes rate
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_ALLOWED_MULTIPLIER_ADDITION
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_CONTROL
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_DIFF
uint8_t vs1053b_basic_play(char *path)
basic example play
#define VS1053B_BASIC_DEFAULT_PLAY_SWING
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_SAMPLE
#define VS1053B_BASIC_DEFAULT_PLAY_IIS_OUTPUT
#define VS1053B_BASIC_DEFAULT_RECORD_WAV_TREBLE_CONTROL
#define VS1053B_BASIC_DEFAULT_RECORD_OGG_CLOCK_RANGE
#define VS1053B_BASIC_DEFAULT_PLAY_CLOCK_MULTIPLIER
vs1053b basic example default definition
@ VS1053B_MODE_PLAY
uint8_t vs1053b_interface_spi_dat_init(void)
interface spi dat bus init
uint8_t vs1053b_interface_audio_deinit(void)
interface audio deinit
uint8_t vs1053b_interface_spi_dat_write_cmd(uint8_t *buf, uint16_t len)
interface spi dat bus write command
uint8_t vs1053b_interface_spi_cmd_write_address16(uint16_t reg, uint8_t *buf, uint16_t len)
interface spi cmd bus write
void vs1053b_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t vs1053b_interface_spi_cmd_deinit(void)
interface spi cmd bus deinit
void vs1053b_interface_timestamp_read(uint32_t *sec, uint32_t *us)
interface timestamp read
uint8_t vs1053b_interface_spi_cmd_read_address16(uint16_t reg, uint8_t *buf, uint16_t len)
interface spi cmd bus read
uint8_t vs1053b_interface_spi_dat_deinit(void)
interface spi dat bus deinit
void vs1053b_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t vs1053b_interface_spi_cmd_init(void)
interface spi cmd bus init
uint8_t vs1053b_interface_dreq_gpio_deinit(void)
interface dreq gpio deinit
uint8_t vs1053b_interface_dreq_gpio_init(void)
interface dreq gpio init
uint8_t vs1053b_interface_audio_init(uint8_t type, char *name, uint32_t *size)
interface audio init
uint8_t vs1053b_interface_dreq_gpio_read(uint8_t *data)
interface dreq gpio read
uint8_t vs1053b_interface_reset_gpio_write(uint8_t data)
interface reset gpio write
uint8_t vs1053b_interface_reset_gpio_init(void)
interface reset gpio init
uint8_t vs1053b_interface_reset_gpio_deinit(void)
interface reset gpio deinit
uint8_t vs1053b_interface_audio_write(uint32_t addr, uint16_t size, uint8_t *buffer)
interface audio write
uint8_t vs1053b_interface_audio_read(uint32_t addr, uint16_t size, uint8_t *buffer)
interface audio read