OpenEdv-开源电子网

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

录音实验里,SPI_HDAT0寄存器读取的值一直是0,为什么?

[复制链接]

8

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-8-19
在线时间
0 小时
发表于 2015-10-10 18:56:25 | 显示全部楼层 |阅读模式
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.  到底是哪里出了问题

人人为我,我为人人。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-10-11 23:22:36 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1793
金钱
1793
注册时间
2015-3-13
在线时间
273 小时
发表于 2021-7-19 22:38:07 | 显示全部楼层
楼主,vs1053_hdat1寄存器一直是0,这个问题解决了吗?
回复

使用道具 举报

5

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1793
金钱
1793
注册时间
2015-3-13
在线时间
273 小时
发表于 2021-7-19 23:31:48 | 显示全部楼层
楼主,VS1053寄存器SPI_HDAT1 一直是0,这个问题解决了吗?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 06:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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