u16 VS_Ram_Test(void)
{
u16 RAM_Read;
VS_HD_Reset();
//VS_Soft_Reset(); //加入软件复位
VS_WR_Cmd(SPI_MODE,0x0820); // 进入VS10XX的RAM测试模式
printf("mode:%x\n",VS_RD_Reg(SPI_MODE));在这里可以正确打印出寄存器SPI _MODE的值为0x820
while (VS_DQ==0); // 等待DREQ为高
SPI2_SetSpeed(SPI_SPEED_256); //256分频速度
//SPI2_SetSpeed(SPI_SPEED_128); //修改分频速度
//VS_XCS_H;
VS_XDCS_L; //开数据传输
SPI2_ReadWriteByte(0x4d);
SPI2_ReadWriteByte(0xea);
SPI2_ReadWriteByte(0x6d);
SPI2_ReadWriteByte(0x54);
SPI2_ReadWriteByte(0x00);
SPI2_ReadWriteByte(0x00);
SPI2_ReadWriteByte(0x00);
SPI2_ReadWriteByte(0x00);
VS_XDCS_H;
Delayms(200);
RAM_Read=VS_RD_Reg(SPI_HDAT0);
//如果得到的值为0x83FF,则表明完好。
printf("SPI_HDAT0:%x\n",RAM_Read);//输出结果 、、、、、、、、、、这里的结果总是0,进行正弦测试也只能听见很小的嘟的一下
return RAM_Read;
}
u8 SPI2_ReadWriteByte(u8 TxData)
{
// u8 retry=0;
while((SPI2->SR&1<<1)==0);//等待发送区空
// {
// retry++;
// if(retry>200)return 0;
// }
SPI2->DR=TxData; //发送一个byte
// retry=0;
while((SPI2->SR&1<<0)==0); //等待接收完一个byte
// {
// retry++;
// if(retry>200)return 0;
// }
return SPI2->DR; //返回收到的数据
}
spi2我已经通过sd卡测试好,而且既然能写进去寄存器说明spi是没有问题的,可为什么送数据会出问题?还是模块的硬件出了问题 ?用原子的mp3程序跑下来能听见耳机了断断续续的杂音,我怀疑是送数据出问题了,可是什么原因导致送数据出错呢? |