这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » 天籁齐舞★USBHost对USB从设备供应商ID和产品ID等信息的读取★

共58条 4/6 |‹ 1 2 3 4 5 6 跳转至
助工
2012-12-01 22:15:40     打赏
31楼

【语音平台开发进程】:SPICS管脚配置

 

SPI接口是由摩托罗拉公司提出的一种全双工同步通信协议,较其它的通信协议SPI的通信速率相对较高,一般均可达到2M b/s的速率,正是由于SPI的这些特点,使得SPI在一些较高速数据传输的场合,如:音频传输接口、SD卡读写接口、ROM读写接口等。在本次开发用的SAKURA开发板其本身就提供了Micro-SD卡,同时其在该板上又是采用SPI读写格式的,因此,Micro-SD卡在板级设计时就分配了SPI的其中的一个CS管脚给Micro-SD卡使用,所以在使用SPICS时候一定要考虑到这一点。为此,我们查找了SAKURA开发板硬件原理图》,在其中找到了SD-Card所使用的CS管脚(SPICS1管脚),对于与Arduino兼容的SPI来说,共提供了4CS管脚,分别为:CS0CS1CS2CS3。具体分配情况如下图所示:

由于本次设计(SAKURA语音平台)需要用SD-Card来存放音乐文件,所以CS1引脚不能用作它用,因此,本次设计拟采用CS0来控制VS1053BXCS引脚,实现对VS1053B控制命令的传输,拟采用CS2来控制VS1053BXDCS引脚,实现对VS1053B音频数据的传输,另外,还有CS3未使用,以留作功能扩展备用。

至于,如何用同一个SPI分别对Micro-SD卡、VS1053BXCSVS1053BXDCS进行控制和数据传输?SAKURA开发板的Web编译器也给出了特定的控制命令:

SPI.port=SPI_PORT_CS0_DUINO;       //此时,SPI选用CS0为其临时CS信号来控制XCS

SPI.port= SPI_PORT_RAXINO_SDMMC;  //此时,SPI选用CS1为其临时CS信号来控制Micro-SD

SPI.port= SPI_PORT_CS2_MARY2;    //此时,SPI选用CS2为其临时CS信号来控制XDCS

当需要使用SPI对不同的模块(XCSMicro-SDXDCS)进行控制和数据传输时,只需在使用前,先将SPI.port如上指令所示,分别赋予相应的值,然后再使用就可以了,至于数据传输的transfer();无需更改即可直接使用,用起来十分方便。

 


助工
2012-12-02 13:46:59     打赏
32楼

【语音平台开发进程】:SAKRUA开发板对VS1053B的各种命令函数:

这里仅先列出了整个命令函数的架构,具体函数的编写,还有待继续。。。

#ifndef __VS10XX_H__
#define __VS10XX_H__
#include "spi.h"

#define VS_WRITE_COMMAND  0x02
#define VS_READ_COMMAND  0x03
//VS10XX寄存器定义
#define SPI_MODE         0x00  
#define SPI_STATUS       0x01  
#define SPI_BASS         0x02  
#define SPI_CLOCKF       0x03  
#define SPI_DECODE_TIME  0x04  
#define SPI_AUDATA       0x05  
#define SPI_WRAM         0x06  
#define SPI_WRAMADDR     0x07  
#define SPI_HDAT0        0x08  
#define SPI_HDAT1        0x09
 
#define SPI_AIADDR       0x0a  
#define SPI_VOL          0x0b  
#define SPI_AICTRL0      0x0c  
#define SPI_AICTRL1      0x0d  
#define SPI_AICTRL2      0x0e  
#define SPI_AICTRL3      0x0f  
//外围控制管脚的定义
#define VS_DQ       PIN_P23  //DREQ
#define VS_RST      PIN_P22  //RST
//#define VS_XCS    PIN_PC4  //XCS--SPI_CS0--IO10
//#define VS_XDCS   PIN_PC1  //XDCS--SPI_CS2--IO23

u16  VS_RD_Reg(u8 address);   //读寄存器
void VS_WR_Data(u8 data);   //写数据
void VS_WR_Cmd(u8 address,u16 data);//写命令
void VS_Init(void);     //初始化VS10XX
u8   VS_HD_Reset(void);       //硬复位
void VS_Soft_Reset(void);           //软复位
void VS_Ram_Test(void);             //RAM测试    
void VS_Sine_Test(void);            //正弦测试

void set1003(void);        //设置VS1053B的音量和高低音

u16 GetDecodeTime(void);   //得到解码时间
u16 GetHeadInfo(void);     //得到比特率
void ResetDecodeTime(void);//重设解码时间
void LoadPatch(void);      //加载频谱分析代码
void GetSpec(u8 *p);       //得到分析数据
#endif

 


高工
2012-12-03 02:13:02     打赏
33楼

期待中。。。。感觉好强大的


高工
2012-12-03 08:47:43     打赏
34楼
继续努力支持哈

高工
2012-12-03 15:02:13     打赏
35楼
请问楼主的SD卡文件操作搞了没有,目前还汉有调通啊……求指教

高工
2012-12-04 22:00:22     打赏
36楼
好粉啊,连界面都是粉色额

助工
2012-12-04 23:06:20     打赏
37楼
【语音平台开发进程】:硬件架构图

经过前面的简单的程序测试,到后来的VS1053B库函数的编制,发现一个很棘手的问题,就是程序逻辑一样,确得到不同的结果,有时甚至是同样的程序,多运行几遍,便会得出不同的结果,由此,我推断可能是由于SPI在较高速度数据传输时,对连接线的长度有要求,而我在之前的SPI测试中使用的就是普通的杜邦线,可能杜邦线过长造成SPI通信误码现象的产生。
       为了减小主板MCU与VS1053B模块之间连接线的长度,本设计采用转接板的形式将两者的接口通过在转接板上“布线”而连接起来,具体的实物图如下图所示:
先来张系统总体架构图:


再来张去掉VS1053B模块的系统架构图:


这张是转接板背面的特写:


再来张稍加改造的主板:


最好再来张VS1053B模块图:


OK,接下来准备进行VS1053B库调试工作,希望能够得到满意的结果,谢谢!Good Luck!


助工
2012-12-04 23:09:37     打赏
38楼

还没呢,这不正调试着SPI呢,要上文件系统,估计要好好研究研究!哈哈,你琢磨出来了,到时参考你的啊!


高工
2012-12-05 09:20:14     打赏
39楼
我在板子相关的讨论区看了一下,有些例子,里面没有用SPI,用些用了,没有足够的资料,目前还在搜索啊……

工程师
2012-12-05 19:06:28     打赏
40楼
想问一下LZ,我的板子连接到PC上,没有提示安装驱动啊,怎么解决啊,我的USB是MP4的线

共58条 4/6 |‹ 1 2 3 4 5 6 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]