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)
}
VS1003 是一个单片MP3/WMA/MIDI 音频解码器和ADPCM编码器。它包含一个高性能,自主产权的低功耗DSP 处理器核VS_DSP4,工作数据存储器,为用户应用提供5KB 的指令RAM 和0.5KB 的数据RAM。串行的控制和数据接口,4个常规用
途的I/O 口,一个UART,也有一个高品质可变采样率的ADC和立体声DAC,还有一个耳机放大器和地线缓冲器。
●VS1003 通过一个串行接口来接收输入的比特流,它可以作为一个系统的从机。输入的比特流被解码,然后通过一个数
字音量控制器到达一个18 位过采样多位ε-Δ DAC。通过串行总线控制解码器。除了基本的解码,在用户RAM 中它还可
以做其他特殊应用,例如DSP 音效处理。 VS1053b 是单片Ogg Vorbis/MP3/AAC/WMA/MIDI音频
解码器,及IMA ADPCM 编码器和用户加载的Ogg Vorbis编
码器。它包含了一个高性能、有专利的低功耗DSP 处理器
内核VS_DSP4、工作数据存储器、供用户应用程序和任何固
化解码器一起运行的16 KiB 指令RAM 及0.5KiB 多的数据
RAM、串行的控制和输入数据接口、最多8 个可用的通用I/O
引脚、一个UART、并有一个优质的可变采样率立体声ADC
(“咪”、“线路”、“线路+咪”或“线路*2”)和立体声
DAC、和跟随的一个耳机功放及一个公共电压缓冲器。
化解码器一起运行的16 KiB 指令RAM 及0.5KiB 多的数据
RAM、串行的控制和输入数据接口、最多8 个可用的通用I/O
引脚、一个UART、并有一个优质的可变采样率立体声ADC
(“咪”、“线路”、“线路+咪”或“线路*2”)和立体声
DAC、和跟随的一个耳机功放及一个公共电压缓冲器。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)