VS1003共有16个16位的寄存器,地址分别为0x0–0xF;除了模式寄存器(MODE,0x0)和状态寄存器(STATUS,0x1)在复位后的初值分别0x800和0x3C外,其余的寄存器在VS1003初始化后的值均为0。
         初始化SPI所有对VS1003的操作将通过SPI总线来完成。在默认情况下,数据位将在SCLK的上升沿有效(被读入VS1003),因此需要在SCLK的下降沿更新数据;并且字节发送以MSB在先。VS1003的SPI总线的输入时钟最大值为CLKI / 6 MHz,
其中CLKI(内部时钟)=XTALI×倍频值
         通过SPI总线对VS1003进行初始化了。
初始化的一般流程如下:
     硬复位,xReset = 0;
     延时,xDCS、xCS、xReset置1;
     等待DREQ为高;
     软件复位:SPI_MODE = 0x0804;
     等待DREQ为高(软件复位结束);
    设置VS1003的时钟:SCI_CLOCKF = 0x9800,3倍频;
    设置VS1003的采样率:SPI_AUDATA = 0xBB81,采样率48k,立体声;
    设置重音:SPI_BASS = 0x0055;
    设置音量:SCI_VOL = 0x2020;
    向vs1003发送4个字节无效数据,用以启动SPI发送。

全面测试:
    察看芯片供电是否正常:一般3.3v
    模拟部分是否正常:VS1003的所有DVDD、AVDD管脚以及xReset、TEST(Pin 32)接+3.0V ,然后测量RCAP在应在1.3V左右,否则芯片模拟部分未正常工作。 检查SCI命令是否正确写入:给音量控制寄存器SCI_VOL循环写入最高值和最低值,正常情况下能从耳机听到滴滴的声音,具体步骤如下: 
     ●拉低xCS; 
     ●设置音量最高:SCI_VOL = 0x0000; 
     ●拉高xCS; 
     ●等待500ms,这个时间控制在0.5到1s之间,太大太小可能都无法听到; 
     ●拉低xCS; 
     ●设置音量最低:SCI_VOL = 0xFFFF; 
     ●等待500ms,道理同上; 
     ●拉高xCS; 
     ●循环,否则以上步骤无法识别。
 
可以对SCI的读写做进一步的测试:
     ●拉低xCS; 
     ●写音量控制寄存器:SCI_VOL = 0xA2F5; 
     ●适当延时,等待DREQ为高; 
     ●读音量控制寄存器,看读回的值是否与写入的一致,如果不为0xA2F5的话说明SCI读写有问题。
  
正弦测试(SDI测试)
        正弦测试属于芯片内部的测试功能,如果写SDI总线无误的话可以从耳机里听到单一频率的正弦音(可以通过命令更改频率),强烈建议大家对此项步骤测试时不要将耳塞直接塞入耳中,因为系统不同可能导致声音大小会不同,有可能极其刺耳。正弦测试步骤如下: 
     ● 进入VS1003的测试模式:SPI_MODE = 0x0820; 
     ● 等待DREQ为高; 
     ● xDCS拉低(xCS置1),选择vs1003的数据接口; 
     ● 向VS1003发送正弦测试命令:0x53 0xEF 0x6E 0x30 0x00 0x00 0x00 0x00; 
     ● 延时500ms; 
     ● 退出正弦测试,发送命令:0x45 0x78 0x69 0x74 0x00 0x00 0x00 0x00; 
     ● 延时500ms; 
     ● 循环。
至此,VS1003的驱动任务已经完成。
具体流程如下: 
     1)打开一个指定的MP3文件:CH375FileOpen(); 
     2)读一个扇区数据:CH375FileRead(); 
     3)发32个字节的数据到VS1003; 
     4)检测DREQ,当DREQ为高时发下一个32个字节的数据; 
     5)是否发完512个字节,否,则回到3); 
     6)是否发完打开的mp3文件,否,则回到2); 
     7)关闭打开的文件:CH375FileClose( )。

具体参考《驱动你的VS1003》。
    在程序的帮助下,终于可以让它播放了。之前的最后一个问题:vs1003能够播放,但像快进了一样,声音很杂。网上搜索了一下,差不多都看到一个结果,在《MP3播放器制作心历——VS1003调试》中提到,VS1003的串口RX必须接到IOVDD,TEST也必须接到IOVDD。可是开发板上都集成了,看了下原理图,都已经接3.3v了。还有就是DREQ没工作。但用自带资料里的烧写后进行一切正常,一量DREQ,0.38-0.43之间跳动,而烧写我的程序,却一直是3.14V,唉,无奈,网上再搜,原来是VS1003不断在请求数据。看了代码,唉,读取到的数据被扰乱了,送入不对的数据;无意间将(不断读取送入的循环里的)显示进度的代码注释掉,咦,好啦,原来送入的前一批数据早在显示阶段就解码完了,后一批数据却还没送入,难怪VS1003不断请求数据,DREQ也一直为高。
    驱动个VS1003,比扫描个键盘、驱动个LED显示屏还难,以此记下,与君共勉。

驱动VS1003要注意的事项相关推荐

  1. Windows驱动_WSK驱动之三WSK编程注意事项

    今天在天涯上看到一篇帖子,真的是好震撼,原来对于那些人来说,自己已经足够幸福了,我们无法去体会那样的痛苦,只有经历的人才才能真正感受,我都无法想象自己,在那种情况下,需要怎样一种担当啊.虽然,男人真的 ...

  2. 关于WIN10装CH340驱动的一些小小的注意事项

    准备工作:CH340/341驱动程序  一块51单片机开发板 第一步:打开  驱动程序,双击SETUP即可 第二步:点击安装(如果之前安装过然后失败了,请点击卸载) 第三步:驱动预安装成功(点击卸载, ...

  3. 打印机没有反应计算机管理,电脑重启后打印机驱动无反应怎么办

    当在给打印机安装驱动后,我们会遇见这样的情况.当电脑重启后,再次打印任何文档打印机都没反应.学习啦小编为大家收集整理了电脑重启后打印机驱动无反应的解决方法,供大家学习借鉴参考,希望对你有帮助! 现在打 ...

  4. xp系统扫描仪服务器,扫描仪驱动安装教程 xp系统装扫描仪步骤【详解】

    扫描仪怎么安装? 扫描仪对照片.文本页面.图纸.美术图画.照相底片.菲林软片,甚至纺织品.标牌面板.印制板样品等三维对象都可作为扫描对象,提取和将原始的线条.图形.文字.照片.平面实物转换成可以编辑及 ...

  5. A_A02_003 ST-LINK驱动安装

    A_A02_003 ST-LINK驱动安装 一.驱动下载 二.交流学习 三.驱动安装步骤 四.检测是否成功安装 五.驱动更新 六.注意事项 一.驱动下载 网盘下载 戳它跳转 提取码:osjy 其他所有 ...

  6. 华硕K42JC安装显卡驱动后进不了系统解决方法

    K42JC是双显卡,Inter集显和NIVIDA独显,一开始用驱动精灵自动更新后,进入win7,在输入用户名密码后,用停留在登陆界面,那个圆圈一直在转啊转.只能强制关机.再次开机,按F8,进入安全模式 ...

  7. 上海国家会计学院刘梅玲:事项法会计可以有力地促进业财融合

    近日,由用友主办的「智能会计 价值财务」2023企业数智化财务创新峰会·上海站圆满举办.来自知名院校的专家学者.央国企等大型企业财务领路人以及权威财经媒体相约上海国家会计学院,一同见证"智能 ...

  8. 正点原子ALPHA_字符设备驱动开发总结

    linux分为内核态和用户态,他两不能直接访问,必须通过"中间商"联系,关系如下: 用户空间:应用程序 | |系统调用(陷入) | 内核:linux驱动 Linux驱动的重点就是驱 ...

  9. 芯旺微烧录器使用及驱动安装

    芯旺微烧录器使用及驱动安装 一.烧录器驱动安装说明: 注意事项:在我们安装IDE的时候正常都会默认安装了烧录器的驱动,只有安装了烧录器驱动电脑才能识别到烧录器,才能进行后续的固件升级: 所以如果已经默 ...

最新文章

  1. 独家 | 利用Python实现主题建模和LDA 算法(附链接)
  2. 批量导入导出站点权限site permissions
  3. Java的this、super和final关键字
  4. 跟着iMX28x开发套件学linux-02
  5. 程序员or产品经理┃同是职场脱发人,光头何苦为难光头!
  6. 复现HITB PHP lover代码审计
  7. python random库下载_python基础 — random库
  8. java课程之团队开发冲刺1.4
  9. linux防火墙阻断目的,基于Linux防火墙的内部邮件监控与阻断系统
  10. SFB2015 多SIP域
  11. socket 编程原理1
  12. 正常访问静态文件,不要找不到静态文件报404
  13. glide 4.0 之后 和圆角裁剪CenterCrop冲突
  14. 笔记 黑马程序员C++教程从0到1入门编程——核心编程
  15. 智能开关的零火版和单火版有什么区别
  16. OpenFileDialog/SaveFileDialog 中 Filter用法?
  17. 行业专家对2021年的云计算发展趋势的预测
  18. 自己用jQuery写一个瀑布流
  19. [软件工程] 面向对象设计
  20. 【定位原理揭秘第四期】精准导航领域的定位技术(在高架、隧道、主辅路识别中如何实现)

热门文章

  1. 市场已经统一-网博汇智
  2. 阿里云总监课,存储系统设计——NVMe SSD性能影响因素一探究竟
  3. 机器人运动控制-水下机器人
  4. HTML5 Canvas自定义圆角矩形与虚线(Rounded Rectangle and Dash Line)
  5. 机械电子工程和计算机联系应用,论机械电子技术与计算机的融合发展
  6. python画人脸代码_[转]7行Python代码的人脸识别
  7. Python+AI智能编辑人脸
  8. postgresql 数据库中 like 、ilike、~~、~~*、~、~*的含义
  9. Mac OS 下的Vim使用系统剪切板
  10. kali 安装 netspeed 扩展