搜索
bottom↓
回复: 8

求助:vs1003正弦测试

[复制链接]

出0入4汤圆

发表于 2013-9-18 11:09:57 | 显示全部楼层 |阅读模式
  1. //        VS1003正弦音测试
  2. void VS_SinTest(unsigned char x)
  3. {            
  4.         VS_WriteReg(0x00,0x0820);//启动测试,向0号寄存器写入0x0820   SM_SDINEW为1   SM_TEST为1
  5.         while(VS_DREQ==0);           //等待DREQ变为高电平
  6.         //VS_XDCS=0;                            //打开数据片选 SDI有效
  7.         VS_SelectData()        ;
  8.         VS_WriteByte(0x53);                //写入以下8个字节,进入正弦测试
  9.         VS_WriteByte(0xef);
  10.         VS_WriteByte(0x6e);
  11.         VS_WriteByte(x);                  //参数x用来调整正弦测试中正弦波的频率   FsIdx (b7~b5):采样率表索引   S (b4~b0):正弦波的跃速   频率F=Fs X S / 128
  12.         VS_WriteByte(0);                   //比如x=126 (0b 011 11110) FsIdx=011=3   Fs=22050Hz   S=11110=30    F=22050Hz X 30 /128 =5168 Hz
  13.         VS_WriteByte(0);
  14.         VS_WriteByte(0);
  15.         VS_WriteByte(0);  
  16.         Delay_ms(500);                        //这里延时一段时间,为了听到“正弦音”
  17.         VS_WriteByte(0x45);                //写入以下8个字节,退出正弦测试
  18.         VS_WriteByte(0x78);
  19.         VS_WriteByte(0x69);
  20.         VS_WriteByte(0x74);
  21.         VS_WriteByte(0);
  22.         VS_WriteByte(0);
  23.         VS_WriteByte(0);                          
  24.         VS_WriteByte(0);
  25.         //VS_XDCS=1;                            //关闭数据片选 ,SDI无效
  26.         VS_DeselectData();
  27. }
复制代码
=====================================
问 1:这段代码执行耳机就能听到正弦声音?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2013-9-18 11:37:07 | 显示全部楼层
VS1003正弦波测试的两种模式,播放语音过程中是不可以利用vs1003自带的正弦测试模式来播放正弦波。

并且要注意是在使用从机模式还是standalone模式,主机模式不可以用spi总线,standalone可以用spi总线来传输音频数据流。楼主看下数据手册!
http://www.eechina.com/thread-35875-1-1.html参考下

出0入4汤圆

 楼主| 发表于 2013-9-18 12:48:19 | 显示全部楼层
本帖最后由 SCREA 于 2013-9-18 12:49 编辑
qq2355355257 发表于 2013-9-18 11:37
VS1003正弦波测试的两种模式,播放语音过程中是不可以利用vs1003自带的正弦测试模式来播放正弦波。

并且要 ...


我昨天看了一天的英文datasheet。知道大概怎么操作。但是,怎么启动SPI传输。能说的具体点么。
主机模式?我不太懂,我把我的主控MCU设置为主机模式。你说的主机模式是?

出0入0汤圆

发表于 2013-9-18 12:57:27 | 显示全部楼层
SCREA 发表于 2013-9-18 12:48
我昨天看了一天的英文datasheet。知道大概怎么操作。但是,怎么启动SPI传输。能说的具体点么。
主机模式 ...

http://bbs.ednchina.com/BLOG_ARTICLE_260281.HTM参考下

出0入4汤圆

 楼主| 发表于 2013-9-18 13:24:09 | 显示全部楼层
本帖最后由 SCREA 于 2013-9-18 13:59 编辑
qq2355355257 发表于 2013-9-18 12:57
http://bbs.ednchina.com/BLOG_ARTICLE_260281.HTM参考下


   后来,查网上的资料,说VS1003的SPI时序需要注意,如果调不好数据是乱得。于是我试着在每次SPI发送8bit数据之间加了一点延时,其他的地方没变。再试验,果然成功了,读0x00单元内容为0x0800,和数据手册上说的一样了,又试了写寄存器也没有问题了。
===========================
我用的硬件SPI读取
  1. unsigned char   SPIPutChar(unsigned char dat)//通过SPI发送一个字节的数据
  2. {
  3.         SPDR = dat;
  4.         while((SPSR & (1 << SPIF)) == 0);
  5.         return (SPDR);
  6. }
复制代码
这个读取   a=SPIPutChar(0x0);   
a应该是0x0800对吧
但我还是0

出0入4汤圆

 楼主| 发表于 2013-9-18 14:50:16 | 显示全部楼层
本帖最后由 SCREA 于 2013-9-18 15:10 编辑


哪不对
  1. void  MSPI_Init(void)  //SPI初始化
  2. {
  3.         SPCR = 0;
  4.         SPCR = (1 << SPE) | (1 << MSTR)   | _BV(SPR1) | _BV(SPR0);        //使能SPI,主机方式,MSB在前,模式0,64分频.
  5. }
  6. void  InitPortVS1003(void)//ATmega16与vs1003的接口的初始化
  7. {
  8.         DDRB |= _BV(PB1) | _BV(PB5) | _BV(PB7);        //XRST,MOSI,SCK设置输出
  9.         DDRB &= ~_BV(PB6);                                //MISO设置输入
  10.         PORTB |= _BV(PB1) | _BV(PB5)  | _BV(PB6) | _BV(PB7);                //设置上拉


  11.         DDRD  |= _BV(PD6) | _BV(PD7);                //分别是:XCS,XDCS
  12.         DDRD &= ~_BV(PD5);                //DREQ,设置输入
  13.         PORTD |= _BV(PD5) | _BV(PD6) | _BV(PD7);       
  14.         MSPI_Init();                //SPI初始化
  15. }


  16. unsigned char   SPIPutChar(unsigned char dat)//通过SPI发送一个字节的数据
  17. {
  18.         SPDR = dat;
  19.         while(!(SPSR & _BV(SPIF)));
  20.         return (SPDR);
  21. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入4汤圆

 楼主| 发表于 2013-9-18 15:11:00 | 显示全部楼层
qq2355355257 发表于 2013-9-18 12:57
http://bbs.ednchina.com/BLOG_ARTICLE_260281.HTM参考下

大神,帮忙看看。拿错了

出0入0汤圆

发表于 2013-9-18 15:26:21 | 显示全部楼层
SCREA 发表于 2013-9-18 15:11
大神,帮忙看看。拿错了





你在参考下Datasheet

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入4汤圆

 楼主| 发表于 2013-9-18 15:34:56 | 显示全部楼层
qq2355355257 发表于 2013-9-18 15:26
你在参考下Datasheet

手册我看了不少回了。
有些细节可能看不到。
现在初步发现我SPI读取写入遇到了问题,就像这张图片,设计了标志打印。
正常1、2、X、3、X、4(x代表返回值)。现在打印出3后就卡住了。明显SPI出了问题。
以下是我的SPI代码
  1. void  MSPI_Init(void)  //SPI初始化
  2. {
  3.         SPCR = 0;
  4.         SPCR = (1 << SPE) | (1 << MSTR)   | _BV(SPR1) | _BV(SPR0);        //使能SPI,主机方式,MSB在前,模式0,64分频.
  5. }
  6. void  InitPortVS1003(void)//ATmega16与vs1003的接口的初始化
  7. {
  8.         DDRB |= _BV(PB1) | _BV(PB5) | _BV(PB7);        //XRST,MOSI,SCK设置输出
  9.         DDRB &= ~_BV(PB6);                                //MISO设置输入
  10.         PORTB |= _BV(PB1) | _BV(PB5)  | _BV(PB6) | _BV(PB7);                //设置上拉


  11.         DDRD  |= _BV(PD6) | _BV(PD7);                //分别是:XCS,XDCS
  12.         DDRD &= ~_BV(PD5);                //DREQ,设置输入
  13.         PORTD |= _BV(PD5) | _BV(PD6) | _BV(PD7);       
  14.         MSPI_Init();                //SPI初始化
  15. }


  16. unsigned char   SPIPutChar(unsigned char dat)//通过SPI发送一个字节的数据
  17. {
  18.         SPDR = dat;
  19.         while(!(SPSR & _BV(SPIF)));
  20.         return (SPDR);
  21. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 19:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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