我用stm32 驱动vs1003 想读出频谱 用的是原子的例程 但是最后发现读出来的内容总是0xffff 我开始以为是频谱的补丁没打好 , 后来在设置音量的函数里面,在设置音量之后 马上把音量读出来 读出来的数据也是0xffff 不知道哪里错了
各位大神帮忙检查一下 qq 448191786
这是从vs1003寄存器里面读取值的函数...
u16 VS_RD_Reg(u8 address)
{
u16 temp=0;
u8 retry=0;
while(VS_DQ==0&&(retry++)<0XFE); //等待空闲
if(retry>=0XFE)return 0;
SPIx_SetSpeed(SPI_SPEED_64); //64分频速度
VS_XDCS=1;
VS_XCS=0;
SPIx_ReadWriteByte(VS_READ_COMMAND);//发送VS10XX的读命令
SPIx_ReadWriteByte(address); //地址
temp=SPIx_ReadWriteByte(0xff); //读取高字节
temp=temp<<8;
temp+=SPIx_ReadWriteByte(0xff); //读取低字节
VS_XCS=1;
SPIx_SetSpeed(SPI_SPEED_8); //8分频速度
return temp;
}
这是spi读写函数
u8 SPIx_ReadWriteByte(u8 TxData)
{
u8 retry=0;
while((SPI1->SR&1<<1)==0)//等待发送区空
{
retry++;
if(retry>200)return 0;
}
SPI1->DR=TxData; //发送一个byte
retry=0;
while((SPI1->SR&1<<0)==0) //等待接收完一个byte
{
retry++;
if(retry>200)return 0;
}
return SPI1->DR; //返回收到的数据
}
?
|