初级会员

- 积分
- 64
- 金钱
- 64
- 注册时间
- 2015-8-19
- 在线时间
- 0 小时
|
5金钱
if(rec_sta==0X80)//已经在录音了
{
w=VS_RD_Reg(SPI_HDAT1);
// printf("Test %d\r\n",w);
if((w>=256)&&(w<896))
{
idx=0;
while(idx<512) //一次读取512字节
{
w=VS_RD_Reg(SPI_HDAT0);
recbuf[idx++]=w&0XFF;
recbuf[idx++]=w>>8;
}
res=f_write(f_rec,recbuf,512,&bw);//写入文件
if(res)
{
printf("err:%d\r\n",res);
printf("bw:%d\r\n",bw);
break;//写入出错.
}
sectorsize++;//扇区数增加1,约为32ms
// printf("Test 1\r\n");
}
//读VS10XX的寄存器
//address:寄存器地址
//返回值:读到的值
//注意不要用倍速读取,会出错
u16 VS_RD_Reg(u8 address)
{
u16 temp=0;
while(VS_DQ==0);//非等待空闲状态
VS_SPI_SpeedLow();//低速
VS_XDCS=1;
VS_XCS=0;
VS_SPI_ReadWriteByte(VS_READ_COMMAND); //发送VS10XX的读命令
VS_SPI_ReadWriteByte(address); //地址
temp=VS_SPI_ReadWriteByte(0xff); //读取高字节
temp=temp<<8;
temp+=VS_SPI_ReadWriteByte(0xff); //读取低字节
VS_XCS=1;
VS_SPI_SpeedHigh();//高速
return temp;
}
其他的都是根据原子哥的程序来实现,就是这一步里返回值都是0. 到底是哪里出了问题
|
|