Bonjour à tous,
je dois réaliser un lecteur mp3. J'utilise un pic18f46k20 et codec audio VS1011E. Je n'arrive pas à faire fonctionner le codec : je n'arrive même pas à tester le codec avec une sinusoïde. Quelqu’un ayant déjà utilisé ce codec, pourrait-il m’aider ?
Voici ma fonction de test de la sinusoïde :
Merci à tous pour vos réponses!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 void F_VSInitsinu(void) { unsigned char UCH_i; if( VS_dreq == 1) {MUTE = 1; VS_cs = 1; //On met le cheap_select du codec à 1 VS_clk = 0;//On met le clock du codec à 0 VS_data = 0;//On met le data out du codec à 0 VS_reset = 1;//On met le reset du codec à 1 F_Delay(100);// attente de 100ms VS_reset = 0; F_Delay(30); VS_reset = 1; F_Delay(10); command=0x02030000;//on indique la vitesse qu quartz VS_cs = 0; F_Delay(1); for(UCH_i=0;UCH_i<32;UCH_i++) // on envoie les octets au codec { if((command & 0x80000000) == 0x80000000) {VS_data = 1;} else {VS_data = 0;} VS_clk = 1; command = command<<1; F_Delay(1); VS_clk = 0; } F_Delay(1); VS_cs = 1; F_Delay(40); command=0x02000C20;//on autorise les tests et on se met en mode SDI shared VS_cs = 0; for(UCH_i=0;UCH_i<32;UCH_i++) { if((command & 0x80000000) == 0x80000000) {VS_data = 1;} else {VS_data = 0;} VS_clk = 1; command = command<<1; F_Delay(1); VS_clk = 0; } F_Delay(1); VS_cs = 1; F_Delay(10); cmd_Vol_sinu=0x020B0000; //commande du volume VS_cs = 0; for(UCH_i=0;UCH_i<32;UCH_i++) { if((cmd_Vol_sinu & 0x80000000) == 0x80000000) {VS_data = 1;} else {VS_data = 0;} VS_clk = 1; cmd_Vol_sinu = cmd_Vol_sinu<<1; F_Delay(1); VS_clk = 0; } F_Delay(1); VS_cs = 1; F_Delay(10); command=0x53EF6E44;// commande du test de la sinusoïde VS_cs = 0; for(UCH_i=0;UCH_i<32;UCH_i++) { if((command & 0x80000000) == 0x80000000) {VS_data = 1;} else {VS_data = 0;} VS_clk = 1; F_Delay(3); command = command<<1; VS_clk = 0; } VS_cs = 1; F_Delay(1); command = 0x00000000; // 4 octets à vide VS_cs = 0; for(UCH_i=0;UCH_i<32;UCH_i++) { if((command & 0x80000000) == 0x80000000) {VS_data = 1;Nop();} else {VS_data = 0;Nop();} VS_clk = 1; F_Delay(1); command = command<<1; VS_clk = 0; } VS_cs = 1; F_Delay(3); MUTE = 0; //on demute
A bientôt!
Partager