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 :

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
Merci à tous pour vos réponses!

A bientôt!