OpenEdv-开源电子网

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

VS1053频谱求助

[复制链接]

12

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2012-8-14
在线时间
0 小时
发表于 2013-6-19 09:40:38 | 显示全部楼层 |阅读模式
     我想用VS1053分析频谱,昨天看了一天手册,但读出来的数据不对:
//初始化VS1053的相关IO口
 VS_Init();

 VS_HD_Reset();    //硬复位
  VS_Soft_Reset();  //软复位   

 //加载频谱分析代码 就是SPEC_REW.h里面的代码
 LoadPatch();
 
我看Spectrum analyzer的说明

bands应该在0x1812的地址上,然后读取:
 VS_WR_Cmd(SPI_WRAMADDR,0x1812);
 bands = VS_RD_Reg(SPI_WRAM);         //获取频段数
 LCD_ShowNum(60,120,bands,7,16);  //TFT显示

但显示出来的数20000+,而且每次复位MCU读取的都不一样,手册上不是说VS105最大bands为15吗?不知道哪里出了问题。。。是不是我顺序不对?



心兰相随
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2012-8-14
在线时间
0 小时
 楼主| 发表于 2013-6-19 10:12:06 | 显示全部楼层
回复【楼主位】SprayFly:
---------------------------------
麻烦用VS1053 分析过频谱的朋友指导一下,谢谢了,我卡这里几天了,唉。。
心兰相随
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-6-19 11:24:08 | 显示全部楼层
请参考我们战舰板的综合实现。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

12

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2012-8-14
在线时间
0 小时
 楼主| 发表于 2013-6-19 13:28:48 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
我看了,但没有找到加载频谱代码的函数在哪里?我看了SPEC_REW.h头文件,里面的数组长度为943。

而且如果地址为0x1810的话(不加载FLAC解码插件),官网上的文件数组长度为970?
心兰相随
回复 支持 反对

使用道具 举报

12

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2012-8-14
在线时间
0 小时
 楼主| 发表于 2013-6-19 14:38:07 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
#define BASE_ADDR 0X1810

我的步骤是:
VS_Init();
    
VS_HD_Reset(); //硬复位
VS_Soft_Reset();           //软复位 
 
LoadPatch();   //加载频谱分析代码,我用的是specanaappl1053b-2.c里面长度为970的数组,没有加载FLAC解码插件,我看手册上是这么说的
              // 如果用943的频谱加载代码,bands的值就完全是乱的,大概在20000+左右震荡

//设置新的频谱条数以及频率
VS_WR_Cmd(SPI_WRAMADDR,BASE_ADDR+0x58); 
for(i=0;i<(sizeof(VS_NEW_BANDS_FREQ_TBL)/sizeof(VS_NEW_BANDS_FREQ_TBL[0]));i++) 
{
    VS_WR_Cmd(SPI_WRAM,VS_NEW_BANDS_FREQ_TBL);   //这是自己设置的新的频率数组
}
if(i<15) 
VS_WR_Cmd(SPI_WRAM,25000);
VS_WR_Cmd(SPI_WRAMADDR,BASE_ADDR+1); 
VS_WR_Cmd(SPI_WRAM,0); 


//读取bands的数据
   VS_WR_Cmd(SPI_WRAMADDR,0x1812);
    bands = VS_RD_Reg(SPI_WRAM);
    LCD_ShowNum(60,145,bands,7,16);   //这里读取出来的bands和设置的频率的个数对不上,比如我设置了14个新的频率
                                                               // 但bands读出来 = 10。
心兰相随
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2016-1-2
在线时间
12 小时
发表于 2016-1-5 20:36:27 | 显示全部楼层
我读出来也是10,请问楼主最后解决了么?怎么解决的?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-5-3
在线时间
3 小时
发表于 2023-7-14 20:44:30 | 显示全部楼层
老铁,解决了吗
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 04:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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