OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7648|回复: 4

STM32 驱动VS1003B问题

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2014-4-23
在线时间
0 小时
发表于 2014-4-23 16:35:44 | 显示全部楼层 |阅读模式
今天尝试一下VS1003b的驱动,但在读写模块寄存器时就出现了问题,便无法继续进行下去了。

下面是我的VS1003b_Init代码:
void My_VS1003b_Init()
{
u16 uReadVal = 0;
My_VS1003b_GPIOConfig();

My_SPI_Init(SPI1);
SPI_SetSpeed(SPI1,SPI_BaudRatePrescaler_16); //在模块为初始化之前SCLKI = 12MHZ,SPI允许的通信速率为SCLKI/6= 2MHZ 
//SDI、SCI为SCLKI/4
// My_VS1003b_ExitConfig();
My_VS1003b_HardReset();
XDCS_H;
XCS_H;
My_TimeDelay(2);
My_VS1003b_WriteSCI(MODE,0x08,0x00);//软件复位,向0号寄存器写入0x0804  SM_SDINEW为1 SM_RESET为1 SM_DIFF为1环绕声
while(My_VS1003b_GetDREQState() == LOW);



My_VS1003b_WriteSCI(CLOCKF,0x98,0x00); //设置 VS1003 的时钟:例如SCI_CLOCKF=0x9800,向3号寄存器写入0x9800  
                                    //100 11 000 0000 0000 SC_MULT 为4   SC_ADD  为3   SC_FREQ为 0
// 设置完以后XTAIL不变,SCLKI = XTAIL*SC_MULT = 36MHZ,编解码速率 SCLKI*1.5 = 48MHZ;

uReadVal = My_VS1003b_Read(CLOCKF);
uReadVal += 0 ;

 
// SPI_SetSpeed(SPI1,SPI_BaudRatePrescaler_8);

My_VS1003b_WriteSCI(AUDATA,0xBB,0x81); //设置 VS1003 的采样率:SPI_AUDATA=0xbb81,采样率 0xBB80 48k,0x0001立体声


uReadVal = My_VS1003b_Read(AUDATA);
uReadVal += 0 ;

My_VS1003b_WriteSCI(BASS,0x00,0x00);      //SPI_BASS=0x0055,重音设置,向2号寄存器写入0x0055  
                                         //SB_AMPLITUDE=5 SB_FREQLIMIT=5 低于50Hz时进行5dB的增强
uReadVal = My_VS1003b_Read(BASS);
uReadVal += 0 ;


My_VS1003b_WriteSCI(VOL,VOL_VALUE,VOL_VALUE); //初始设置音量:SCI_VOL=0x2020  左右声道相同
// while(1)
// {
// uReadVal = My_VS1003b_Read(VOL);
// uReadVal += 0 ;
// }
// VS1003_ResetDecodeTime();
SPI_WriteByte(SPI1,0); //SDI测试
SPI_WriteByte(SPI1,0);
SPI_WriteByte(SPI1,0);
SPI_WriteByte(SPI1,0);
while(My_VS1003b_GetDREQState() == LOW);

VS1003_Sintest(5);
}


SPI初始化代码:

GPIO初始略过。。。

    SPI_InitStruct.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStruct.SPI_Mode = SPI_Mode_Master;
SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStruct.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStruct.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStruct.SPI_NSS = SPI_NSS_Soft;
SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStruct.SPI_CRCPolynomial = 7;

SPI_Cmd(pstSPIx,DISABLE);
SPI_Init(pstSPIx,&SPI_InitStruct);
SPI_Cmd(pstSPIx,ENABLE);


由于我的HCLK = 36MHZ,所以此处为16分频。。。。


这是我的100b 的 GPIO_Init代码:
void My_VS1003b_GPIOConfig()
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

GPIO_InitStruct.GPIO_Pin = VS1003b_DREQ;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;

GPIO_Init(GPIOC,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin =  VS1003b_XDCS | VS1003b_XCS | VS1003b_RSET;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(GPIOC,&GPIO_InitStruct);

}

1003b 读写模块函数:

u16 My_VS1003b_Read(u8 uAddress)
{
u16 uReturnVal = 0;

// while(My_VS1003b_GetXCSState() == HIGH);

My_VS1003b_SCIStart();
SPI_WriteByte(SPI1,VS1003b_Read);
SPI_WriteByte(SPI1,uAddress);
uReturnVal = (SPI_ReadWriteByte(SPI1,0xff) << 8);
uReturnVal |= SPI_ReadWriteByte(SPI1,0xff); 
My_VS1003b_SCIStop();
return uReturnVal;
}

void My_VS1003b_WriteSDI(u8 uAddress,u8 uVal)
{
// while(My_VS1003b_GetXCSState() == HIGH);

My_VS1003b_SDIStart();
SPI_WriteByte(SPI1,VS1003b_Write);
SPI_WriteByte(SPI1,uAddress);
SPI_ReadWriteByte(SPI1,uVal % 0x100);
My_VS1003b_SDIStop();
My_TimeDelay(1);

}


void My_VS1003b_WriteSCI(u8 uAddress,u8 uHbyte,u8 uLbyte)
{
// while(My_VS1003b_GetXCSState() == HIGH);

My_VS1003b_SCIStart();
SPI_WriteByte(SPI1,VS1003b_Write);
SPI_WriteByte(SPI1,uAddress);
SPI_WriteByte(SPI1,uHbyte);
SPI_WriteByte(SPI1,uLbyte); 
My_VS1003b_SCIStop();
My_TimeDelay(1);
}





好爱好爱
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2014-4-23
在线时间
0 小时
 楼主| 发表于 2014-4-23 16:38:17 | 显示全部楼层
初始化后 读取MP3文件 ,但没有声音。
使用模块的 正弦测试页不行  ,求救啊  ,原子大哥。。
好爱好爱
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2014-4-23
在线时间
0 小时
 楼主| 发表于 2014-4-23 16:47:23 | 显示全部楼层
只顶求救啊。。。
好爱好爱
回复 支持 反对

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2014-4-23 18:20:50 | 显示全部楼层
是不是你硬件有问题
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2014-4-23
在线时间
0 小时
 楼主| 发表于 2014-4-23 19:00:30 | 显示全部楼层
回复【4楼】xiaoyan:
---------------------------------
恩  已经解决了 ,是供电电压问题。谢谢版主!
好爱好爱
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-10 04:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表