我也在用这个芯片,驱动不起来啊,完全没声音,程序按照手册写的,用过的人介绍下有没有需要注意的地方啊?
下面是我的驱动程序
void VoiceSetValue(uint16_t Value)
{
GPIO_InitTypeDef GPIO_InitStructure;
uint8_t i=0;
uint32_t j=0,VolDate=0x7D5;
//Value=87-Value;
// VolDate=(uint32_t)(Value&0x7c); //装入衰减数; 双声道都有;
// VolDate=VolDate|(uint32_t)((Value&0x03)<<7); //D7,D8 装入衰减数 ;
// VolDate=VolDate|0x0600; // 置 D9,D10 为11;
/* 使能VS1003B所用I/O的时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD , ENABLE);
/* 设置音量引脚*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_WriteBit(GPIOD,GPIO_Pin_0,Bit_RESET);
GPIO_WriteBit(GPIOD,GPIO_Pin_1,Bit_RESET);
for(i=0;i<11;i++){
for(j=0;j<10000;j++);
if((VolDate>>i)&0x01){
GPIO_WriteBit(GPIOD,GPIO_Pin_1,Bit_SET);
}else{
GPIO_WriteBit(GPIOD,GPIO_Pin_1,Bit_RESET);
}
for(j=0;j<10000;j++);
GPIO_WriteBit(GPIOD,GPIO_Pin_0,Bit_SET);
for(j=0;j<10000;j++);
if(i==10){
GPIO_WriteBit(GPIOD,GPIO_Pin_1,Bit_SET);
}else{
GPIO_WriteBit(GPIOD,GPIO_Pin_1,Bit_RESET);
}
for(j=0;j<10000;j++);
GPIO_WriteBit(GPIOD,GPIO_Pin_0,Bit_RESET);
for(j=0;j<10000;j++);
}
GPIO_WriteBit(GPIOD,GPIO_Pin_1,Bit_RESET);
} |